diff options
5 files changed, 46 insertions, 143 deletions
diff --git a/libraries/flag-helpers/junit/src_base/android/platform/test/flag/junit/SetFlagsRule.java b/libraries/flag-helpers/junit/src_base/android/platform/test/flag/junit/SetFlagsRule.java index 0c8696136..6c6e2fd40 100644 --- a/libraries/flag-helpers/junit/src_base/android/platform/test/flag/junit/SetFlagsRule.java +++ b/libraries/flag-helpers/junit/src_base/android/platform/test/flag/junit/SetFlagsRule.java @@ -184,37 +184,6 @@ public final class SetFlagsRule implements TestRule { } } - /** - * Returns a FeatureFlags used by SetFlagsRule of given FeatureFlags - * - * @param featureFlagsClass The class of FeatureFlags. The interface of FakeFeatureFlagsImpl - * @return A FakeFeatureFlagsImpl in type of FeatureFlags - */ - public <T> T getFakeFeatureFlags(Class<T> featureFlagsClass) { - if (!featureFlagsClass.isInterface() - || !featureFlagsClass.getSimpleName().equals(FEATURE_FLAGS_CLASS_NAME)) { - throw new IllegalArgumentException( - String.format( - "%s is not a FeatureFlags. " + "Please pass in FeatureFlags interface", - featureFlagsClass)); - } - - String packageName = featureFlagsClass.getPackageName(); - String flagsClassName = String.format("%s.%s", packageName, FLAGS_CLASS_NAME); - Class<?> flagsClass = null; - - try { - flagsClass = Class.forName(flagsClassName); - } catch (ClassNotFoundException e) { - throw new UnsupportedOperationException( - String.format("Failed to load class %s.", flagsClassName)); - } - - Object fakeFlagsImplInstance = getOrCreateFakeFlagsImp(flagsClass); - - return featureFlagsClass.cast(fakeFlagsImplInstance); - } - private void ensureFlagsAreUnset() { if (!mFlagsClassToFakeFlagsImpl.isEmpty()) { throw new IllegalStateException("Some flags were set before the rule was initialized"); diff --git a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FakeFeatureFlagsImpl.java b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FakeFeatureFlagsImpl.java index 2fd2ab360..c94637ba7 100644 --- a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FakeFeatureFlagsImpl.java +++ b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FakeFeatureFlagsImpl.java @@ -22,12 +22,14 @@ import java.util.HashSet; /** A Fake FakeFeatureFlagsImpl to test the {@code MockFlagsRule}. */ public class FakeFeatureFlagsImpl implements FeatureFlags { - public HashSet<String> readOnlyFlagSet = new HashSet<>(); + private HashSet<String> mReadOnlyFlagSet = new HashSet<>(); private HashMap<String, Boolean> mFlagMap = new HashMap<>(); public FakeFeatureFlagsImpl() { this.mFlagMap.put(Flags.FLAG_FLAG_NAME3, null); this.mFlagMap.put(Flags.FLAG_FLAG_NAME4, null); + this.mReadOnlyFlagSet.add(Flags.FLAG_RO_ENABLED); + this.mReadOnlyFlagSet.add(Flags.FLAG_RO_DISABLED); } /** Returns the flag value. */ @@ -42,6 +44,16 @@ public class FakeFeatureFlagsImpl implements FeatureFlags { return this.mFlagMap.get(Flags.FLAG_FLAG_NAME4); } + @Override + public boolean roEnabled() { + return this.mFlagMap.get(Flags.FLAG_RO_ENABLED); + } + + @Override + public boolean roDisabled() { + return this.mFlagMap.get(Flags.FLAG_RO_DISABLED); + } + public void setFlag(String flag, boolean value) { this.mFlagMap.put(flag, value); } @@ -52,6 +64,6 @@ public class FakeFeatureFlagsImpl implements FeatureFlags { /** Verify if the given flag is read_only and optimized */ public boolean isFlagReadOnlyOptimized(String flagName) { - return readOnlyFlagSet.contains(flagName); + return mReadOnlyFlagSet.contains(flagName); } } diff --git a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FeatureFlags.java b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FeatureFlags.java index 428ae0725..9c6922953 100644 --- a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FeatureFlags.java +++ b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FeatureFlags.java @@ -24,4 +24,8 @@ public interface FeatureFlags { /** another flag */ boolean flagName4(); + + boolean roEnabled(); + + boolean roDisabled(); } diff --git a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/Flags.java b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/Flags.java index 8027d1edd..0d673289f 100644 --- a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/Flags.java +++ b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/Flags.java @@ -21,16 +21,8 @@ public class Flags { public static final String FLAG_FLAG_NAME3 = "android.platform.test.flag.junit.flag_name3"; public static final String FLAG_FLAG_NAME4 = "android.platform.test.flag.junit.flag_name4"; - - /** Returns the flag value. */ - public static boolean flagName1() { - return true; - } - - /** Returns a non-boolean flag value. */ - public static int flagName2() { - return 1; - } + public static final String FLAG_RO_ENABLED = "android.platform.test.flag.junit.ro_enabled"; + public static final String FLAG_RO_DISABLED = "android.platform.test.flag.junit.ro_disabled"; /** Returns the flag value. */ public static boolean flagName3() { @@ -42,6 +34,14 @@ public class Flags { return FEATURE_FLAGS.flagName4(); } + public static boolean roEnabled() { + return true; + } + + public static boolean roDisabled() { + return false; + } + public static void setFeatureFlags(FeatureFlags featureFlagsImpl) { FEATURE_FLAGS = featureFlagsImpl; } @@ -57,5 +57,15 @@ public class Flags { public boolean flagName4() { return true; } + + @Override + public boolean roEnabled() { + return true; + } + + @Override + public boolean roDisabled() { + return false; + } }; } diff --git a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/SetFlagsRuleTest.java b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/SetFlagsRuleTest.java index 6c255c731..58112fd39 100644 --- a/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/SetFlagsRuleTest.java +++ b/libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/SetFlagsRuleTest.java @@ -105,118 +105,26 @@ public final class SetFlagsRuleTest { } @Test - public void getFakeFeatureFlags_afterSet() { - mSetFlagsRule.enableFlags(Flags.FLAG_FLAG_NAME3, Flags.FLAG_FLAG_NAME4); - FeatureFlags fakeFlagsImpl = mSetFlagsRule.getFakeFeatureFlags(FeatureFlags.class); - assertTrue(fakeFlagsImpl.flagName3()); - assertTrue(fakeFlagsImpl.flagName4()); - - mSetFlagsRule.disableFlags(Flags.FLAG_FLAG_NAME3, Flags.FLAG_FLAG_NAME4); - assertFalse(fakeFlagsImpl.flagName3()); - assertFalse(fakeFlagsImpl.flagName4()); - } - - @Test - public void getFakeFeatureFlags_thenSet() { - FeatureFlags fakeFlagsImpl = mSetFlagsRule.getFakeFeatureFlags(FeatureFlags.class); - if (this.mIsInitWithDefault) { - assertFalse(Flags.flagName3()); - assertFalse(fakeFlagsImpl.flagName3()); - assertTrue(Flags.flagName4()); - assertTrue(fakeFlagsImpl.flagName4()); - - mSetFlagsRule.enableFlags(Flags.FLAG_FLAG_NAME3); - mSetFlagsRule.disableFlags(Flags.FLAG_FLAG_NAME4); - - assertTrue(Flags.flagName3()); - assertTrue(fakeFlagsImpl.flagName3()); - assertFalse(Flags.flagName4()); - assertFalse(fakeFlagsImpl.flagName4()); - } else { - assertThrows( - NullPointerException.class, - () -> { - fakeFlagsImpl.flagName3(); - }); - assertFalse(Flags.flagName3()); - - mSetFlagsRule.enableFlags(Flags.FLAG_FLAG_NAME3); - - assertTrue(Flags.flagName3()); - assertTrue(fakeFlagsImpl.flagName3()); - assertThrows( - NullPointerException.class, - () -> { - fakeFlagsImpl.flagName4(); - }); - assertThrows( - NullPointerException.class, - () -> { - Flags.flagName4(); - }); - - mSetFlagsRule.disableFlags(Flags.FLAG_FLAG_NAME4); - - assertFalse(Flags.flagName4()); - assertFalse(fakeFlagsImpl.flagName4()); - } - } - - @Test - public void getFakeFeatureFlags_castToWrongType() { - mSetFlagsRule.enableFlags(Flags.FLAG_FLAG_NAME3, Flags.FLAG_FLAG_NAME4); - - assertThrows( - IllegalArgumentException.class, - () -> { - FakeFeatureFlagsImpl fakeFlagsImpl = - mSetFlagsRule.getFakeFeatureFlags(FakeFeatureFlagsImpl.class); - }); + public void skipReadOnlyOptimizedFlag() { assertThrows( - IllegalArgumentException.class, + AssumptionViolatedException.class, () -> { - Flags fakeFlagsImpl = mSetFlagsRule.getFakeFeatureFlags(Flags.class); + mSetFlagsRule.enableFlags(Flags.FLAG_RO_ENABLED); }); assertThrows( - IllegalArgumentException.class, + AssumptionViolatedException.class, () -> { - FeatureFlagsImpl fakeFlagsImpl = - mSetFlagsRule.getFakeFeatureFlags(FeatureFlagsImpl.class); + mSetFlagsRule.disableFlags(Flags.FLAG_RO_ENABLED); }); assertThrows( - IllegalArgumentException.class, + AssumptionViolatedException.class, () -> { - FakeFeatureFlags fakeFlagsImpl = - mSetFlagsRule.getFakeFeatureFlags(FakeFeatureFlags.class); + mSetFlagsRule.enableFlags(Flags.FLAG_RO_DISABLED); }); - } - - @Test - public void skipReadOnlyOptimizedFlag() { - FakeFeatureFlagsImpl fakeFlagsImpl = - (FakeFeatureFlagsImpl) mSetFlagsRule.getFakeFeatureFlags(FeatureFlags.class); - fakeFlagsImpl.readOnlyFlagSet.add(Flags.FLAG_FLAG_NAME3); assertThrows( AssumptionViolatedException.class, () -> { - mSetFlagsRule.enableFlags(Flags.FLAG_FLAG_NAME3); + mSetFlagsRule.disableFlags(Flags.FLAG_RO_DISABLED); }); } - - private class FeatureFlagsImpl implements FeatureFlags { - @Override - public boolean flagName3() { - return false; - } - - @Override - public boolean flagName4() { - return true; - } - } - - private interface FakeFeatureFlags { - /** Returns the flag value. */ - boolean flagName3(); - } } |