* commit '6780e43d761b0cbe0ce54cfc017ac779509e1c61': Support regular expression for condition pattern
This commit is contained in:
commit
66e5e05fbf
2 changed files with 42 additions and 6 deletions
|
@ -103,12 +103,12 @@ public final class ResourceUtils {
|
|||
/**
|
||||
* Find the condition that fulfills specified key value pairs from an array of
|
||||
* "condition,constant", and return the corresponding string constant. A condition is
|
||||
* "pattern1[:pattern2...] (or an empty string for the default). A pattern is "key=value"
|
||||
* string. The condition matches only if all patterns of the condition are true for the
|
||||
* specified key value pairs.
|
||||
* "pattern1[:pattern2...] (or an empty string for the default). A pattern is
|
||||
* "key=regexp_value" string. The condition matches only if all patterns of the condition
|
||||
* are true for the specified key value pairs.
|
||||
*
|
||||
* For example, "condition,constant" has the following format.
|
||||
* (See {@link ResourceUtilsTests#testFindConstantForKeyValuePairsCombined()})
|
||||
* (See {@link ResourceUtilsTests#testFindConstantForKeyValuePairsRegexp()})
|
||||
* - HARDWARE=mako,constantForNexus4
|
||||
* - MODEL=Nexus 4:MANUFACTURER=LGE,constantForNexus4
|
||||
* - ,defaultConstant
|
||||
|
@ -156,8 +156,8 @@ public final class ResourceUtils {
|
|||
if (value == null) {
|
||||
throw new RuntimeException("Found unknown key: " + condition);
|
||||
}
|
||||
final String patternValue = pattern.substring(posEqual + 1);
|
||||
if (!value.equals(patternValue)) {
|
||||
final String patternRegexpValue = pattern.substring(posEqual + 1);
|
||||
if (!value.matches(patternRegexpValue)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,4 +137,40 @@ public class ResourceUtilsTests extends AndroidTestCase {
|
|||
assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array));
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray), "0.2");
|
||||
}
|
||||
|
||||
public void testFindConstantForKeyValuePairsRegexp() {
|
||||
final String HARDWARE_KEY = "HARDWARE";
|
||||
final String MODEL_KEY = "MODEL";
|
||||
final String MANUFACTURER_KEY = "MANUFACTURER";
|
||||
final String[] array = {
|
||||
",defaultValue",
|
||||
"HARDWARE=grouper|tilapia:MANUFACTURER=asus,0.3",
|
||||
"HARDWARE=[mM][aA][kK][oO]:MODEL=Nexus 4,0.4",
|
||||
"HARDWARE=manta.*:MODEL=Nexus 10:MANUFACTURER=samsung,0.2"
|
||||
};
|
||||
|
||||
final HashMap<String,String> keyValues = CollectionUtils.newHashMap();
|
||||
keyValues.put(HARDWARE_KEY, "grouper");
|
||||
keyValues.put(MODEL_KEY, "Nexus 7");
|
||||
keyValues.put(MANUFACTURER_KEY, "asus");
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.3");
|
||||
keyValues.put(HARDWARE_KEY, "tilapia");
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.3");
|
||||
|
||||
keyValues.clear();
|
||||
keyValues.put(HARDWARE_KEY, "mako");
|
||||
keyValues.put(MODEL_KEY, "Nexus 4");
|
||||
keyValues.put(MANUFACTURER_KEY, "LGE");
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.4");
|
||||
keyValues.put(HARDWARE_KEY, "MAKO");
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.4");
|
||||
|
||||
keyValues.clear();
|
||||
keyValues.put(HARDWARE_KEY, "manta");
|
||||
keyValues.put(MODEL_KEY, "Nexus 10");
|
||||
keyValues.put(MANUFACTURER_KEY, "samsung");
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.2");
|
||||
keyValues.put(HARDWARE_KEY, "mantaray");
|
||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.2");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue