From 50d383279d68cdd1f9174e808d7142945cbd3910 Mon Sep 17 00:00:00 2001 From: pietervdvn Date: Tue, 15 Mar 2022 01:53:08 +0100 Subject: [PATCH] More tests --- Models/Denomination.ts | 22 +++++++- testLegacy/TileFreshnessCalculator.spec.ts | 31 ----------- testLegacy/Units.spec.ts | 54 ------------------- .../TileFreshnessCalculator.spec.ts | 25 +++++++++ tests/Models/Units.spec.ts | 30 +++++++++++ 5 files changed, 76 insertions(+), 86 deletions(-) delete mode 100644 testLegacy/TileFreshnessCalculator.spec.ts delete mode 100644 testLegacy/Units.spec.ts create mode 100644 tests/Logic/FeatureSource/TileFreshnessCalculator.spec.ts create mode 100644 tests/Models/Units.spec.ts diff --git a/Models/Denomination.ts b/Models/Denomination.ts index d79118f519..f3722b661e 100644 --- a/Models/Denomination.ts +++ b/Models/Denomination.ts @@ -60,7 +60,27 @@ export class Denomination { ) } - public canonicalValue(value: string, actAsDefault?: boolean) { + /** + * Create a representation of the given value + * @param value: the value from OSM + * @param actAsDefault: if set and the value can be parsed as number, will be parsed and trimmed + * + * const unit = new Denomination({ + * canonicalDenomination: "m", + * alternativeDenomination: ["meter"], + * 'default': true, + * human: { + * en: "meter" + * } + * }, "test") + * unit.canonicalValue("42m") // =>"42 m" + * unit.canonicalValue("42") // =>"42 m" + * unit.canonicalValue("42 m") // =>"42 m" + * unit.canonicalValue("42 meter") // =>"42 m" + * + * + */ + public canonicalValue(value: string, actAsDefault?: boolean) : string { if (value === undefined) { return undefined; } diff --git a/testLegacy/TileFreshnessCalculator.spec.ts b/testLegacy/TileFreshnessCalculator.spec.ts deleted file mode 100644 index 009ba2b90c..0000000000 --- a/testLegacy/TileFreshnessCalculator.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import T from "./TestHelper"; -import TileFreshnessCalculator from "../Logic/FeatureSource/TileFreshnessCalculator"; -import {Tiles} from "../Models/TileRange"; -import {equal} from "assert"; - -export default class TileFreshnessCalculatorSpec extends T { - - constructor() { - super([ - [ - "TileFresnessTests", - () => { - const calc = new TileFreshnessCalculator(); - // 19/266407/175535 - const date = new Date() - date.setTime(42) - calc.addTileLoad(Tiles.tile_index(19, 266406, 175534), date) - equal(42, calc.freshnessFor(19, 266406, 175534).getTime()) - equal(42, calc.freshnessFor(20, 266406 * 2, 175534 * 2 + 1).getTime()) - equal(undefined, calc.freshnessFor(19, 266406, 175535)) - equal(undefined, calc.freshnessFor(18, 266406 / 2, 175534 / 2)) - calc.addTileLoad(Tiles.tile_index(19, 266406, 175534 + 1), date) - calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534), date) - calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534 + 1), date) - equal(42, calc.freshnessFor(18, 266406 / 2, 175534 / 2).getTime()) - } - ] - ]) - } - -} \ No newline at end of file diff --git a/testLegacy/Units.spec.ts b/testLegacy/Units.spec.ts deleted file mode 100644 index a0851fd8b2..0000000000 --- a/testLegacy/Units.spec.ts +++ /dev/null @@ -1,54 +0,0 @@ -import T from "./TestHelper"; -import {equal} from "assert"; -import {Unit} from "../Models/Unit"; -import {Denomination} from "../Models/Denomination"; - -export default class UnitsSpec extends T { - - constructor() { - super([ - ["Simple canonicalize", () => { - - const unit = new Denomination({ - canonicalDenomination: "m", - alternativeDenomination: ["meter"], - 'default': true, - human: { - en: "meter" - } - }, "test") - - equal(unit.canonicalValue("42m"), "42 m") - equal(unit.canonicalValue("42"), "42 m") - equal(unit.canonicalValue("42 m"), "42 m") - equal(unit.canonicalValue("42 meter"), "42 m") - - - }], - ["Advanced canonicalize and back", () => { - - const unit = new Denomination({ - "canonicalDenomination": "MW", - "alternativeDenomination": ["megawatts", "megawatt"], - "human": { - "en": " megawatts", - "nl": " megawatt" - }, - "default": true - }, "test"); - - const canonical = unit.canonicalValue("5") - equal(canonical, "5 MW") - const units = new Unit(["key"], [unit], false) - const [detected, detectedDenom] = units.findDenomination("5 MW") - equal(detected, "5") - equal(detectedDenom, unit) - } - ] - - - ]); - - } - -} \ No newline at end of file diff --git a/tests/Logic/FeatureSource/TileFreshnessCalculator.spec.ts b/tests/Logic/FeatureSource/TileFreshnessCalculator.spec.ts new file mode 100644 index 0000000000..7d055876e8 --- /dev/null +++ b/tests/Logic/FeatureSource/TileFreshnessCalculator.spec.ts @@ -0,0 +1,25 @@ +import {describe} from 'mocha' +import TileFreshnessCalculator from "../../../Logic/FeatureSource/TileFreshnessCalculator"; +import {Tiles} from "../../../Models/TileRange"; +import {expect} from "chai" + +describe("TileFreshnessCalculator", () => { + + it("should get the freshness for loaded tiles", + () => { + const calc = new TileFreshnessCalculator(); + // 19/266407/175535 + const date = new Date() + date.setTime(42) + calc.addTileLoad(Tiles.tile_index(19, 266406, 175534), date) + + expect(calc.freshnessFor(19, 266406, 175534).getTime()).eq(42) + expect(calc.freshnessFor(20, 266406 * 2, 175534 * 2 + 1).getTime()).eq(42) + expect(calc.freshnessFor(19, 266406, 175535)).undefined + expect(calc.freshnessFor(18, 266406 / 2, 175534 / 2)).undefined + calc.addTileLoad(Tiles.tile_index(19, 266406, 175534 + 1), date) + calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534), date) + calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534 + 1), date) + expect(calc.freshnessFor(18, 266406 / 2, 175534 / 2).getTime()).eq(42) + }) +}) diff --git a/tests/Models/Units.spec.ts b/tests/Models/Units.spec.ts new file mode 100644 index 0000000000..cfc54be9c4 --- /dev/null +++ b/tests/Models/Units.spec.ts @@ -0,0 +1,30 @@ +import {describe} from 'mocha' +import {expect} from 'chai' +import {Unit} from "../../Models/Unit"; +import {Denomination} from "../../Models/Denomination"; + +describe("Unit", () => { + + it("should convert a value back and forth", () => { + + const unit = new Denomination({ + "canonicalDenomination": "MW", + "alternativeDenomination": ["megawatts", "megawatt"], + "human": { + "en": " megawatts", + "nl": " megawatt" + }, + "default": true + }, "test"); + + const canonical = unit.canonicalValue("5") + expect(canonical).eq( "5 MW") + const units = new Unit(["key"], [unit], false) + const [detected, detectedDenom] = units.findDenomination("5 MW") + expect(detected).eq( "5") + expect(detectedDenom).eq( unit) + } + ) +}) + +