From 62cc93086498d57ef7298eddb40cc382dfc10c6d Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 20 May 2026 22:18:38 +0000 Subject: Fix Long overflow in TackDetector: var lastTackMs = Long.MIN_VALUE caused subtraction overflow, filtering every tack --- .../org/terst/nav/track/TackDetectorGpxTest.kt | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 android-app/app/src/test/kotlin/org/terst/nav/track/TackDetectorGpxTest.kt (limited to 'android-app/app/src/test/kotlin/org/terst') diff --git a/android-app/app/src/test/kotlin/org/terst/nav/track/TackDetectorGpxTest.kt b/android-app/app/src/test/kotlin/org/terst/nav/track/TackDetectorGpxTest.kt new file mode 100644 index 0000000..83ca259 --- /dev/null +++ b/android-app/app/src/test/kotlin/org/terst/nav/track/TackDetectorGpxTest.kt @@ -0,0 +1,25 @@ +package org.terst.nav.track + +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Test + +class TackDetectorGpxTest { + + @Test + fun `detects 6 tacks in April 22 test file`() { + val stream = javaClass.classLoader!! + .getResourceAsStream("nav_20260422_190543.gpx") + ?: error("GPX test file not found in test resources") + val points = GpxParser.parse(stream) + assertTrue("Expected >100 points, got ${points.size}", points.size > 100) + + val tacks = TackDetector.detectTacks(points) + assertEquals( + "Expected 6 tacks in test track; got ${tacks.size}: ${ + tacks.map { "%.0f→%.0f".format(it.cogBefore, it.cogAfter) } + }", + 6, tacks.size + ) + } +} -- cgit v1.2.3