summaryrefslogtreecommitdiff
path: root/android-app/app/src/test
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-05-26 07:13:53 +0000
committerClaude <noreply@anthropic.com>2026-05-26 07:13:53 +0000
commit5c3bcee9a574780476ac4a4888b51b76f186c032 (patch)
treed983e88e63dd26a099143a5e71e6f356c7faeec5 /android-app/app/src/test
parentd35410c707900075bf4207bab518ead44d43c6e7 (diff)
parent8c1d1605f529e32876ba4cb325a019a311c5011d (diff)
Merge claude/optimize-nav-location-tracking-Vac5Z into main
- Add notes/photos to finished tracks (TrackDetailSheet) - Single Nav voice trip report (remove NarrativeStyle, 4-style picker) - Fix speed coloring on MapLibre 11.x (Expression.step on numeric property) - Redesign tack detection: time-based windows + circularMAD stability - Update worklog https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn
Diffstat (limited to 'android-app/app/src/test')
-rw-r--r--android-app/app/src/test/kotlin/org/terst/nav/tripreport/TripReportGeneratorTest.kt32
1 files changed, 20 insertions, 12 deletions
diff --git a/android-app/app/src/test/kotlin/org/terst/nav/tripreport/TripReportGeneratorTest.kt b/android-app/app/src/test/kotlin/org/terst/nav/tripreport/TripReportGeneratorTest.kt
index eea3234..8209d1a 100644
--- a/android-app/app/src/test/kotlin/org/terst/nav/tripreport/TripReportGeneratorTest.kt
+++ b/android-app/app/src/test/kotlin/org/terst/nav/tripreport/TripReportGeneratorTest.kt
@@ -14,8 +14,8 @@ class TripReportGeneratorTest {
private fun pt(lat: Double, lon: Double, sog: Double = 5.0, ts: Long) =
TrackPoint(lat = lat, lon = lon, sogKnots = sog, cogDeg = 0.0, timestampMs = ts)
- private fun entry(ts: Long, text: String = "note") = LogEntry(
- timestampMs = ts, text = text, entryType = EntryType.GENERAL
+ private fun entry(ts: Long, text: String = "note", photoPath: String? = null) = LogEntry(
+ timestampMs = ts, text = text, entryType = EntryType.GENERAL, photoPath = photoPath
)
// ── generateSummary ───────────────────────────────────────────────────────
@@ -30,7 +30,6 @@ class TripReportGeneratorTest {
@Test
fun `distance between two points one nm apart`() {
- // 1 nm north along prime meridian ≈ 0.01667° latitude
val points = listOf(pt(0.0, 0.0, ts = 0L), pt(0.016667, 0.0, ts = 60_000L))
val s = gen.generateSummary(points, emptyList())
assertEquals(1.0, s.distanceNm, 0.02)
@@ -70,20 +69,29 @@ class TripReportGeneratorTest {
// ── generateNarrative ─────────────────────────────────────────────────────
@Test
- fun `professional narrative contains distance and speed`() {
+ fun `narrative contains passage header and distance`() {
val points = listOf(pt(0.0, 0.0, sog = 5.0, ts = 0L), pt(0.016667, 0.0, sog = 5.0, ts = 3_600_000L))
val s = gen.generateSummary(points, emptyList())
- val narrative = gen.generateNarrative(s, NarrativeStyle.PROFESSIONAL)
- assertTrue("Expected distance in narrative", narrative.contains("NM") || narrative.contains("nm"))
+ val narrative = gen.generateNarrative(s)
+ assertTrue("Expected PASSAGE header", narrative.contains("PASSAGE"))
+ assertTrue("Expected distance in nm", narrative.contains("nm"))
+ assertTrue("Expected avg speed", narrative.contains("avg"))
+ assertTrue("Expected max speed", narrative.contains("max"))
}
@Test
- fun `all narrative styles produce non-empty output`() {
+ fun `narrative includes log entry text`() {
val points = listOf(pt(0.0, 0.0, ts = 0L), pt(0.016667, 0.0, ts = 3_600_000L))
- val s = gen.generateSummary(points, listOf(entry(1_000L)))
- for (style in NarrativeStyle.values()) {
- val narrative = gen.generateNarrative(s, style)
- assertTrue("Narrative for $style should not be blank", narrative.isNotBlank())
- }
+ val s = gen.generateSummary(points, listOf(entry(1_000L, "hoisted main")))
+ val narrative = gen.generateNarrative(s)
+ assertTrue("Expected log entry in narrative", narrative.contains("hoisted main"))
+ }
+
+ @Test
+ fun `narrative marks photo entries`() {
+ val points = listOf(pt(0.0, 0.0, ts = 0L), pt(0.016667, 0.0, ts = 3_600_000L))
+ val s = gen.generateSummary(points, listOf(entry(1_000L, "crew photo", photoPath = "/some/path.jpg")))
+ val narrative = gen.generateNarrative(s)
+ assertTrue("Expected [photo] marker", narrative.contains("[photo]"))
}
}