Loading java/src/com/android/inputmethod/latin/ResourceUtils.java +6 −6 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; } } Loading tests/src/com/android/inputmethod/latin/ResourceUtilsTests.java +36 −0 Original line number Diff line number Diff line Loading @@ -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
java/src/com/android/inputmethod/latin/ResourceUtils.java +6 −6 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; } } Loading
tests/src/com/android/inputmethod/latin/ResourceUtilsTests.java +36 −0 Original line number Diff line number Diff line Loading @@ -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"); } }