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 }); });