aboutsummaryrefslogtreecommitdiffziptar.gz
path: root/viewer/tests/units.test.mjs
diff options
context:
space:
mode:
authorgodosa <godosa@godosa.eu>2026-10-07 00:14:38 +0200
committergodosa <godosa@godosa.eu>2026-10-07 00:14:38 +0200
commit3443c1c65e9f1753e1e656b35d08416c1fa298f2 (patch)
tree4e43236f460145a4d75d1b4616dcb7aa6ef08f51 /viewer/tests/units.test.mjs
downloadworldmap-viewer-3443c1c65e9f1753e1e656b35d08416c1fa298f2.tar.gz
worldmap-viewer-3443c1c65e9f1753e1e656b35d08416c1fa298f2.zip
worldmap-viewer: initial public history
Diffstat (limited to 'viewer/tests/units.test.mjs')
-rw-r--r--viewer/tests/units.test.mjs38
1 files changed, 38 insertions, 0 deletions
diff --git a/viewer/tests/units.test.mjs b/viewer/tests/units.test.mjs
new file mode 100644
index 0000000..d4af9d8
--- /dev/null
+++ b/viewer/tests/units.test.mjs
@@ -0,0 +1,38 @@
+import './_planet.mjs';
+import { test } from 'node:test';
+import assert from 'node:assert/strict';
+import * as U from '../js/units.js';
+
+U.setUnits({ span_m: 0.331013, league_km: 15.4437 });
+
+test('conversions', () => {
+ assert.ok(Math.abs(U.kmToLeagues(15.4437) - 1) < 1e-12);
+ assert.ok(Math.abs(U.mToSpans(0.331013) - 1) < 1e-12);
+ assert.ok(Math.abs(U.km2ToSqLeagues(15.4437 ** 2) - 1) < 1e-12);
+ assert.equal(U.walkDays(90), 3);
+ assert.equal(U.fmtDistance(1000), '1,000 km · 64.8 leagues');
+ assert.equal(U.fmtDistance(12.34), '12.3 km · 0.80 leagues');
+ assert.equal(U.fmtWalk(45), '1.5 days on foot');
+ assert.equal(U.fmtLatLon(12.5, -3.25), '12.500° N, 3.250° W');
+ assert.equal(U.fmtLatLon(-0.5, 179), '0.500° S, 179.000° E');
+ assert.equal(U.fmtDistance(0.5), '500 m · 1,511 spans');
+ assert.equal(U.fmtElev(2344), '2,344 m · 7,081 spans');
+ assert.equal(U.fmtElev(-12.4), '-12 m · -37 spans');
+});
+
+test('niceKm picks 1/2/5 steps', () => {
+ assert.deepEqual([123, 260, 0.7, 5, 999].map(U.niceKm), [100, 200, 0.5, 5, 500]);
+});
+
+test('setUnits overrides', () => {
+ U.setUnits({ league_km: 10 });
+ assert.equal(U.kmToLeagues(25), 2.5);
+ U.setUnits({ league_km: 15.4437 });
+});
+
+test('SI only without in-world units', () => {
+ U.setUnits({ span_m: null, league_km: null });
+ assert.equal(U.fmtDistance(12.34), '12.3 km');
+ assert.equal(U.fmtElev(2344), '2,344 m');
+ U.setUnits({ span_m: 0.331013, league_km: 15.4437 });
+});