worldmap-viewer

git clone https://git.godosa.eu/worldmap-viewer

master

raw · 1773 bytes

import './_planet.mjs';
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { hoverText } from '../js/hover.js';

const cell = fields => ({ cell: 'x', lat: 0, lon: 0, fields });

test('land shows elevation and life zone', () => {
  assert.equal(hoverText(cell([{ key: 'z_surface_m', value: 2344.4 }, { key: 'ocean', value: false, text: 'no' },
    { key: 'lake', value: false, text: 'no' }, { key: 'holdridge', value: 3, text: 'cool temperate desert scrub' }])),
  '2,344 m · cool temperate desert scrub');
});

test('sea shows depth; lakes are named; procedural detail only when tiles show', () => {
  assert.equal(hoverText(cell([{ key: 'z_surface_m', value: -3300 }, { key: 'ocean', value: true, text: 'yes' }])), 'sea, 3,300 m deep');
  assert.equal(hoverText(cell([{ key: 'z_surface_m', value: 120 }, { key: 'ocean', value: false }, { key: 'lake', value: true },
    { key: 'holdridge', value: 1, text: 'boreal moist forest' }])), '120 m · lake · boreal moist forest');
  const both = cell([{ key: 'z_surface_m', value: 120 }, { key: 'z_detail_m', value: 131.6 }, { key: 'ocean', value: false }]);
  assert.equal(hoverText(both), '120 m', 'zoomed out: the build value');
  assert.equal(hoverText(both, true), '132 m', 'procedural tiles showing: the detail value');
});

test('a cell answer is reused near its centre, never under procedural detail', async () => {
  const { canReuse } = await import('../js/hover.js');
  const c = { center: [10, 20], inner_km: 50 };
  assert.equal(canReuse(c, { lat: 10.1, lon: 20 }, false), true);
  assert.equal(canReuse(c, { lat: 11, lon: 20 }, false), false);
  assert.equal(canReuse(c, { lat: 10.1, lon: 20 }, true), false);
  assert.equal(canReuse(null, { lat: 10, lon: 20 }, false), false);
});