diff options
| author | godosa <godosa@godosa.eu> | 2026-10-07 00:14:38 +0200 |
|---|---|---|
| committer | godosa <godosa@godosa.eu> | 2026-10-07 00:14:38 +0200 |
| commit | 3443c1c65e9f1753e1e656b35d08416c1fa298f2 (patch) | |
| tree | 4e43236f460145a4d75d1b4616dcb7aa6ef08f51 /viewer/tests/profile.test.mjs | |
| download | worldmap-viewer-3443c1c65e9f1753e1e656b35d08416c1fa298f2.tar.gz worldmap-viewer-3443c1c65e9f1753e1e656b35d08416c1fa298f2.zip | |
worldmap-viewer: initial public history
Diffstat (limited to 'viewer/tests/profile.test.mjs')
| -rw-r--r-- | viewer/tests/profile.test.mjs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/viewer/tests/profile.test.mjs b/viewer/tests/profile.test.mjs new file mode 100644 index 0000000..9418565 --- /dev/null +++ b/viewer/tests/profile.test.mjs @@ -0,0 +1,36 @@ +import './_planet.mjs'; +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { profileModel, sampleAt } from '../js/profile.js'; + +const S = [{ d_km: 0, z_m: -200, water: true }, { d_km: 50, z_m: 300, water: false }, { d_km: 100, z_m: 1200, water: false }, + { d_km: 150, z_m: -50, water: true }]; + +test('model spans distance and elevation incl. sea level', () => { + const m = profileModel(S, 320, 130); + assert.ok(m.line.startsWith('M')); + assert.equal(m.L, 150); + assert.ok(m.lo <= -200 && m.hi >= 1200); + assert.ok(m.Y(0) > m.Y(1200) && m.Y(0) < m.Y(-200)); + assert.ok(Math.abs(m.xAt(m.X(75)) - 75) < 1e-9); + assert.equal(m.seaY, m.Y(0)); +}); + +test('water runs cover the water samples, half a step either side', () => { + const m = profileModel(S, 320, 130); + assert.equal(m.water.length, 2); + assert.ok(Math.abs(m.water[0][0] - m.X(0)) < 1e-9 && Math.abs(m.water[0][1] - m.X(25)) < 1e-9); + assert.ok(Math.abs(m.water[1][0] - m.X(125)) < 1e-9 && Math.abs(m.water[1][1] - m.X(150)) < 1e-9); +}); + +test('flat land still gets a usable vertical range', () => { + const m = profileModel([{ d_km: 0, z_m: 10, water: false }, { d_km: 5, z_m: 10, water: false }], 320, 130); + assert.ok(m.hi - m.lo >= 100); +}); + +test('nearest sample by distance', () => { + assert.equal(sampleAt(S, -5), 0); + assert.equal(sampleAt(S, 74), 1); + assert.equal(sampleAt(S, 76), 2); + assert.equal(sampleAt(S, 999), 3); +}); |
