| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertThrows; |
| import static org.junit.Assert.assertTrue; |
| |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.JUnit4; |
| |
| |
| import com.android.aconfig.test.FakeFeatureFlagsImpl; |
| import com.android.aconfig.test.FeatureFlags; |
| import com.android.aconfig.test.FeatureFlagsImpl; |
| import com.android.aconfig.test.Flags; |
| |
| @RunWith(JUnit4.class) |
| public final class AconfigHostTest { |
| @Test |
| public void testThrowsExceptionIfFlagNotSet() { |
| assertThrows(NullPointerException.class, () -> Flags.disabledRo()); |
| FakeFeatureFlagsImpl featureFlags = new FakeFeatureFlagsImpl(); |
| assertThrows(IllegalArgumentException.class, () -> featureFlags.disabledRo()); |
| } |
| |
| @Test |
| public void testSetFlagInFakeFeatureFlagsImpl() { |
| FakeFeatureFlagsImpl featureFlags = new FakeFeatureFlagsImpl(); |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RW, true); |
| assertTrue(featureFlags.enabledRw()); |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RW, false); |
| assertFalse(featureFlags.enabledRw()); |
| |
| //Set Flags |
| assertThrows(NullPointerException.class, () -> Flags.enabledRw()); |
| Flags.setFeatureFlags(featureFlags); |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RW, true); |
| assertTrue(Flags.enabledRw()); |
| Flags.unsetFeatureFlags(); |
| } |
| |
| @Test |
| public void testSetFlagWithRandomName() { |
| FakeFeatureFlagsImpl featureFlags = new FakeFeatureFlagsImpl(); |
| assertThrows(IllegalArgumentException.class, |
| () -> featureFlags.setFlag("Randome_name", true)); |
| } |
| |
| @Test |
| public void testResetFlagsInFakeFeatureFlagsImpl() { |
| FakeFeatureFlagsImpl featureFlags = new FakeFeatureFlagsImpl(); |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RO, true); |
| assertTrue(featureFlags.enabledRo()); |
| featureFlags.resetAll(); |
| assertThrows(IllegalArgumentException.class, () -> featureFlags.enabledRo()); |
| |
| // Set value after reset |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RO, false); |
| assertFalse(featureFlags.enabledRo()); |
| } |
| |
| @Test |
| public void testFlagsSetFeatureFlags() { |
| FakeFeatureFlagsImpl featureFlags = new FakeFeatureFlagsImpl(); |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RW, true); |
| assertThrows(NullPointerException.class, () -> Flags.enabledRw()); |
| Flags.setFeatureFlags(featureFlags); |
| assertTrue(Flags.enabledRw()); |
| Flags.unsetFeatureFlags(); |
| } |
| |
| @Test |
| public void testFlagsUnsetFeatureFlags() { |
| FakeFeatureFlagsImpl featureFlags = new FakeFeatureFlagsImpl(); |
| featureFlags.setFlag(Flags.FLAG_ENABLED_RW, true); |
| assertThrows(NullPointerException.class, () -> Flags.enabledRw()); |
| Flags.setFeatureFlags(featureFlags); |
| assertTrue(Flags.enabledRw()); |
| |
| Flags.unsetFeatureFlags(); |
| assertThrows(NullPointerException.class, () -> Flags.enabledRw()); |
| } |
| |
| @Test |
| public void testFeatureFlagsImplNotImpl() { |
| FeatureFlags featureFlags = new FeatureFlagsImpl(); |
| assertThrows(UnsupportedOperationException.class, |
| () -> featureFlags.enabledRw()); |
| } |
| } |