diff options
Diffstat (limited to 'test-runner/src')
| -rw-r--r-- | test-runner/src/main/kotlin/org/terst/nav/settings/HardwareSource.kt | 23 | ||||
| -rw-r--r-- | test-runner/src/test/kotlin/org/terst/nav/settings/FeatureFlagsTest.kt | 61 |
2 files changed, 84 insertions, 0 deletions
diff --git a/test-runner/src/main/kotlin/org/terst/nav/settings/HardwareSource.kt b/test-runner/src/main/kotlin/org/terst/nav/settings/HardwareSource.kt new file mode 100644 index 0000000..b44cb66 --- /dev/null +++ b/test-runner/src/main/kotlin/org/terst/nav/settings/HardwareSource.kt @@ -0,0 +1,23 @@ +package org.terst.nav.settings + +enum class HardwareSource(val prefKey: String, val label: String) { + AIS_RECEIVER("hw_ais_receiver", "AIS Receiver"), + NMEA_INSTRUMENTS("hw_nmea_instruments", "NMEA Instruments") +} + +/** Minimal in-memory implementation for JVM tests. */ +class InMemoryFeatureFlags { + private val state = mutableMapOf<HardwareSource, Boolean>() + + fun isEnabled(source: HardwareSource): Boolean = state[source] ?: false + + fun setEnabled(source: HardwareSource, enabled: Boolean) { + state[source] = enabled + } + + fun toggle(source: HardwareSource): Boolean { + val next = !isEnabled(source) + setEnabled(source, next) + return next + } +} diff --git a/test-runner/src/test/kotlin/org/terst/nav/settings/FeatureFlagsTest.kt b/test-runner/src/test/kotlin/org/terst/nav/settings/FeatureFlagsTest.kt new file mode 100644 index 0000000..a8e8271 --- /dev/null +++ b/test-runner/src/test/kotlin/org/terst/nav/settings/FeatureFlagsTest.kt @@ -0,0 +1,61 @@ +package org.terst.nav.settings + +import org.junit.Assert.* +import org.junit.Before +import org.junit.Test + +class FeatureFlagsTest { + + private lateinit var flags: InMemoryFeatureFlags + + @Before + fun setup() { + flags = InMemoryFeatureFlags() + } + + @Test + fun `all sources default to disabled`() { + for (source in HardwareSource.values()) { + assertFalse("Expected $source to be disabled by default", flags.isEnabled(source)) + } + } + + @Test + fun `setEnabled true enables source`() { + flags.setEnabled(HardwareSource.AIS_RECEIVER, true) + assertTrue(flags.isEnabled(HardwareSource.AIS_RECEIVER)) + } + + @Test + fun `setEnabled false disables source`() { + flags.setEnabled(HardwareSource.AIS_RECEIVER, true) + flags.setEnabled(HardwareSource.AIS_RECEIVER, false) + assertFalse(flags.isEnabled(HardwareSource.AIS_RECEIVER)) + } + + @Test + fun `toggle flips from false to true`() { + val result = flags.toggle(HardwareSource.NMEA_INSTRUMENTS) + assertTrue(result) + assertTrue(flags.isEnabled(HardwareSource.NMEA_INSTRUMENTS)) + } + + @Test + fun `toggle flips from true to false`() { + flags.setEnabled(HardwareSource.NMEA_INSTRUMENTS, true) + val result = flags.toggle(HardwareSource.NMEA_INSTRUMENTS) + assertFalse(result) + assertFalse(flags.isEnabled(HardwareSource.NMEA_INSTRUMENTS)) + } + + @Test + fun `sources are independent`() { + flags.setEnabled(HardwareSource.AIS_RECEIVER, true) + assertFalse(flags.isEnabled(HardwareSource.NMEA_INSTRUMENTS)) + } + + @Test + fun `toggle returns new state`() { + assertFalse(flags.toggle(HardwareSource.AIS_RECEIVER).also { assertTrue(it) } == false) + } +} |
