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) } }