summaryrefslogtreecommitdiff
path: root/android-app/app/src/test
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-07-01 06:17:37 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-07-01 06:17:37 +0000
commit36d94937a561300197ef53aa9096defadfda3e72 (patch)
tree260de6db4ca7d5a75a5bdfc4c56df12b57aa0f78 /android-app/app/src/test
parent13c72a335b7d1a0338d3e2d68556689d05d87a1c (diff)
feat(aton): AtonData model + AtonRepository with 24h cache
Implements AtonData (color mapping + Gson-based JSON parsing for NOAA AtoN station data) and AtonRepository (disk-cached HTTP fetcher). Uses Gson instead of org.json so unit tests run on the JVM classpath. 7/7 AtonDataTest assertions pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'android-app/app/src/test')
-rw-r--r--android-app/app/src/test/kotlin/org/terst/nav/ui/aton/AtonDataTest.kt37
1 files changed, 37 insertions, 0 deletions
diff --git a/android-app/app/src/test/kotlin/org/terst/nav/ui/aton/AtonDataTest.kt b/android-app/app/src/test/kotlin/org/terst/nav/ui/aton/AtonDataTest.kt
new file mode 100644
index 0000000..dc0cb4f
--- /dev/null
+++ b/android-app/app/src/test/kotlin/org/terst/nav/ui/aton/AtonDataTest.kt
@@ -0,0 +1,37 @@
+package org.terst.nav.ui.aton
+
+import org.junit.Assert.*
+import org.junit.Test
+
+class AtonDataTest {
+ @Test fun `light type maps to red`() {
+ assertEquals("#FF0000", AtonData.colorFor("Light"))
+ }
+ @Test fun `float type maps to green`() {
+ assertEquals("#00AA00", AtonData.colorFor("Float"))
+ }
+ @Test fun `buoy type maps to green`() {
+ assertEquals("#00AA00", AtonData.colorFor("Buoy"))
+ }
+ @Test fun `daybeacon type maps to yellow`() {
+ assertEquals("#FFDD00", AtonData.colorFor("Daybeacon"))
+ }
+ @Test fun `unknown type maps to white`() {
+ assertEquals("#FFFFFF", AtonData.colorFor("WeirdThing"))
+ }
+ @Test fun `parse station json to feature`() {
+ val json = """{"id":"8443970","name":"Boston Light","lat":42.3298,"lng":-70.8930,"type":"Light"}"""
+ val f = AtonData.parseStation(json)
+ assertNotNull(f)
+ assertEquals("Boston Light", f!!.getStringProperty("name"))
+ assertEquals("#FF0000", f.getStringProperty("color"))
+ }
+ @Test fun `parse response returns list of features`() {
+ val json = """{"stations":[
+ {"id":"1","name":"A","lat":21.0,"lng":-158.0,"type":"Buoy"},
+ {"id":"2","name":"B","lat":21.1,"lng":-157.9,"type":"Light"}
+ ]}"""
+ val features = AtonData.parseResponse(json)
+ assertEquals(2, features.size)
+ }
+}