Support regular expression for condition pattern
Bug: 8556975 Change-Id: Iffc53d6a40dd77860434c5f7f4f59af5cd1ba92bmain
parent
ec83457d72
commit
18184eacb1
|
@ -103,12 +103,12 @@ public final class ResourceUtils {
|
||||||
/**
|
/**
|
||||||
* Find the condition that fulfills specified key value pairs from an array of
|
* Find the condition that fulfills specified key value pairs from an array of
|
||||||
* "condition,constant", and return the corresponding string constant. A condition is
|
* "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"
|
* "pattern1[:pattern2...] (or an empty string for the default). A pattern is
|
||||||
* string. The condition matches only if all patterns of the condition are true for the
|
* "key=regexp_value" string. The condition matches only if all patterns of the condition
|
||||||
* specified key value pairs.
|
* are true for the specified key value pairs.
|
||||||
*
|
*
|
||||||
* For example, "condition,constant" has the following format.
|
* For example, "condition,constant" has the following format.
|
||||||
* (See {@link ResourceUtilsTests#testFindConstantForKeyValuePairsCombined()})
|
* (See {@link ResourceUtilsTests#testFindConstantForKeyValuePairsRegexp()})
|
||||||
* - HARDWARE=mako,constantForNexus4
|
* - HARDWARE=mako,constantForNexus4
|
||||||
* - MODEL=Nexus 4:MANUFACTURER=LGE,constantForNexus4
|
* - MODEL=Nexus 4:MANUFACTURER=LGE,constantForNexus4
|
||||||
* - ,defaultConstant
|
* - ,defaultConstant
|
||||||
|
@ -156,8 +156,8 @@ public final class ResourceUtils {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
throw new RuntimeException("Found unknown key: " + condition);
|
throw new RuntimeException("Found unknown key: " + condition);
|
||||||
}
|
}
|
||||||
final String patternValue = pattern.substring(posEqual + 1);
|
final String patternRegexpValue = pattern.substring(posEqual + 1);
|
||||||
if (!value.equals(patternValue)) {
|
if (!value.matches(patternRegexpValue)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,4 +137,40 @@ public class ResourceUtilsTests extends AndroidTestCase {
|
||||||
assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array));
|
assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array));
|
||||||
assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray), "0.2");
|
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 New Issue