forked from MapComplete/MapComplete
More tests
This commit is contained in:
parent
82e59bc1eb
commit
50d383279d
5 changed files with 76 additions and 86 deletions
|
@ -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) {
|
if (value === undefined) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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())
|
|
||||||
}
|
|
||||||
]
|
|
||||||
])
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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)
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
25
tests/Logic/FeatureSource/TileFreshnessCalculator.spec.ts
Normal file
25
tests/Logic/FeatureSource/TileFreshnessCalculator.spec.ts
Normal file
|
@ -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)
|
||||||
|
})
|
||||||
|
})
|
30
tests/Models/Units.spec.ts
Normal file
30
tests/Models/Units.spec.ts
Normal file
|
@ -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)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue