Add methods setFlag and resetAll in FeatureFlags in test mode. For the injection usecase, user will use the interface FeatureFlags in the code to control the flags. Add tests for test mode. Bug: 280833463 Test: Atest AconfigJavaHostTest --host Change-Id: Ib59ba35a9011a6400af42fc9c283d37193577997
62 lines
1.7 KiB
Plaintext
62 lines
1.7 KiB
Plaintext
package {package_name};
|
|
{{ if is_test_mode }}
|
|
import static java.util.stream.Collectors.toMap;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.stream.Stream;
|
|
|
|
public class FakeFeatureFlagsImpl implements FeatureFlags \{
|
|
{{ for item in class_elements}}
|
|
@Override
|
|
public boolean {item.method_name}() \{
|
|
return getFlag(Flags.FLAG_{item.flag_name_constant_suffix});
|
|
}
|
|
{{ endfor}}
|
|
@Override
|
|
public void setFlag(String flagName, boolean value) \{
|
|
if (!this.mFlagMap.containsKey(flagName)) \{
|
|
throw new IllegalArgumentException("no such flag" + flagName);
|
|
}
|
|
this.mFlagMap.put(flagName, value);
|
|
}
|
|
|
|
@Override
|
|
public void resetAll() \{
|
|
for (Map.Entry entry : mFlagMap.entrySet()) \{
|
|
entry.setValue(null);
|
|
}
|
|
}
|
|
|
|
private boolean getFlag(String flagName) \{
|
|
Boolean value = this.mFlagMap.get(flagName);
|
|
if (value == null) \{
|
|
throw new IllegalArgumentException(flagName + " is not set");
|
|
}
|
|
return value;
|
|
}
|
|
|
|
private HashMap<String, Boolean> mFlagMap = Stream.of(
|
|
{{-for item in class_elements}}
|
|
Flags.FLAG_{item.flag_name_constant_suffix}{{ if not @last }},{{ endif }}
|
|
{{ -endfor }}
|
|
)
|
|
.collect(
|
|
HashMap::new,
|
|
(map, elem) -> map.put(elem, null),
|
|
HashMap::putAll
|
|
);
|
|
}
|
|
{{ else }}
|
|
{#- Generate only stub if in prod mode #}
|
|
public class FakeFeatureFlagsImpl implements FeatureFlags \{
|
|
{{ for item in class_elements}}
|
|
@Override
|
|
public boolean {item.method_name}() \{
|
|
throw new UnsupportedOperationException(
|
|
"Method is not implemented.");
|
|
}
|
|
{{ endfor}}
|
|
}
|
|
{{ endif }}
|