summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libraries/flag-helpers/junit/src_base/android/platform/test/flag/junit/SetFlagsRule.java31
-rw-r--r--libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FakeFeatureFlagsImpl.java16
-rw-r--r--libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/FeatureFlags.java4
-rw-r--r--libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/Flags.java30
-rw-r--r--libraries/flag-helpers/junit/test/src/android/platform/test/flag/junit/SetFlagsRuleTest.java108
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();
- }
}