import test from 'node:test'; import assert from 'node:assert/strict'; import fs from 'node:fs'; import { parseGpx } from '../src/services/gpx.js'; test('parseGpx liest Beispielstrecke', () => { const parsed = parseGpx(fs.readFileSync(new URL('../examples/sample-route.gpx', import.meta.url), 'utf8')); assert.equal(parsed.name, 'Beispielweg'); assert.equal(parsed.points.length, 3); assert.ok(parsed.metrics.distanceM > 0); }); test('normalization separates waypoints and collapses stationary GPS drift', () => { const xml = 'PauseStation' + '' + '' + ''; const result = parseGpx(xml); assert.equal(result.points.length, 2); assert.equal(result.points[0].recordedAt, '2026-10-03T10:00:00Z'); assert.match(result.normalizedXml, / { const waypoint = parseGpx(''); assert.equal(waypoint.points.length, 0); assert.equal(waypoint.metrics.distanceM, 0); const empty = parseGpx(''); assert.equal(empty.points.length, 0); assert.equal(empty.metrics.startLat, null); assert.match(empty.normalizedXml, /gpsGap/); assert.throws(() => parseGpx('')); assert.throws(() => parseGpx('')); });