summaryrefslogtreecommitdiff
path: root/test-runner/src/test/kotlin
diff options
context:
space:
mode:
Diffstat (limited to 'test-runner/src/test/kotlin')
-rw-r--r--test-runner/src/test/kotlin/org/terst/nav/settings/FeatureFlagsTest.kt61
1 files changed, 61 insertions, 0 deletions
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)
+ }
+}