1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.inputmethod.latin.utils; 18 19 import android.test.AndroidTestCase; 20 import android.test.suitebuilder.annotation.SmallTest; 21 22 import java.util.HashMap; 23 24 @SmallTest 25 public class ResourceUtilsTests extends AndroidTestCase { 26 public void testFindConstantForKeyValuePairsSimple() { 27 final HashMap<String,String> anyKeyValue = new HashMap<>(); 28 anyKeyValue.put("anyKey", "anyValue"); 29 final HashMap<String,String> nullKeyValue = null; 30 final HashMap<String,String> emptyKeyValue = new HashMap<>(); 31 32 final String[] nullArray = null; 33 assertNull(ResourceUtils.findConstantForKeyValuePairs(anyKeyValue, nullArray)); 34 assertNull(ResourceUtils.findConstantForKeyValuePairs(emptyKeyValue, nullArray)); 35 assertNull(ResourceUtils.findConstantForKeyValuePairs(nullKeyValue, nullArray)); 36 37 final String[] emptyArray = {}; 38 assertNull(ResourceUtils.findConstantForKeyValuePairs(anyKeyValue, emptyArray)); 39 assertNull(ResourceUtils.findConstantForKeyValuePairs(emptyKeyValue, emptyArray)); 40 assertNull(ResourceUtils.findConstantForKeyValuePairs(nullKeyValue, emptyArray)); 41 42 final String HARDWARE_KEY = "HARDWARE"; 43 final String[] array = { 44 ",defaultValue", 45 "HARDWARE=grouper,0.3", 46 "HARDWARE=mako,0.4", 47 "HARDWARE=manta,0.2", 48 "HARDWARE=mako,0.5", 49 }; 50 51 final HashMap<String,String> keyValues = new HashMap<>(); 52 keyValues.put(HARDWARE_KEY, "grouper"); 53 assertEquals("0.3", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 54 keyValues.put(HARDWARE_KEY, "mako"); 55 assertEquals("0.4", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 56 keyValues.put(HARDWARE_KEY, "manta"); 57 assertEquals("0.2", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 58 59 keyValues.clear(); 60 keyValues.put("hardware", "grouper"); 61 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 62 63 keyValues.clear(); 64 keyValues.put(HARDWARE_KEY, "MAKO"); 65 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 66 keyValues.put(HARDWARE_KEY, "mantaray"); 67 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 68 69 assertNull(ResourceUtils.findConstantForKeyValuePairs(emptyKeyValue, array)); 70 } 71 72 public void testFindConstantForKeyValuePairsCombined() { 73 final String HARDWARE_KEY = "HARDWARE"; 74 final String MODEL_KEY = "MODEL"; 75 final String MANUFACTURER_KEY = "MANUFACTURER"; 76 final String[] array = { 77 ",defaultValue", 78 "no_comma", 79 "error_pattern,0.1", 80 "HARDWARE=grouper:MANUFACTURER=asus,0.3", 81 "HARDWARE=mako:MODEL=Nexus 4,0.4", 82 "HARDWARE=manta:MODEL=Nexus 10:MANUFACTURER=samsung,0.2" 83 }; 84 final String[] failArray = { 85 ",defaultValue", 86 "HARDWARE=grouper:MANUFACTURER=ASUS,0.3", 87 "HARDWARE=mako:MODEL=Nexus_4,0.4", 88 "HARDWARE=mantaray:MODEL=Nexus 10:MANUFACTURER=samsung,0.2" 89 }; 90 91 final HashMap<String,String> keyValues = new HashMap<>(); 92 keyValues.put(HARDWARE_KEY, "grouper"); 93 keyValues.put(MODEL_KEY, "Nexus 7"); 94 keyValues.put(MANUFACTURER_KEY, "asus"); 95 assertEquals("0.3", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 96 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 97 98 keyValues.clear(); 99 keyValues.put(HARDWARE_KEY, "mako"); 100 keyValues.put(MODEL_KEY, "Nexus 4"); 101 keyValues.put(MANUFACTURER_KEY, "LGE"); 102 assertEquals("0.4", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 103 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 104 105 keyValues.clear(); 106 keyValues.put(HARDWARE_KEY, "manta"); 107 keyValues.put(MODEL_KEY, "Nexus 10"); 108 keyValues.put(MANUFACTURER_KEY, "samsung"); 109 assertEquals("0.2", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 110 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 111 keyValues.put(HARDWARE_KEY, "mantaray"); 112 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 113 assertEquals("0.2", ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 114 } 115 116 public void testFindConstantForKeyValuePairsRegexp() { 117 final String HARDWARE_KEY = "HARDWARE"; 118 final String MODEL_KEY = "MODEL"; 119 final String MANUFACTURER_KEY = "MANUFACTURER"; 120 final String[] array = { 121 ",defaultValue", 122 "no_comma", 123 "HARDWARE=error_regexp:MANUFACTURER=error[regexp,0.1", 124 "HARDWARE=grouper|tilapia:MANUFACTURER=asus,0.3", 125 "HARDWARE=[mM][aA][kK][oO]:MODEL=Nexus 4,0.4", 126 "HARDWARE=manta.*:MODEL=Nexus 10:MANUFACTURER=samsung,0.2" 127 }; 128 129 final HashMap<String,String> keyValues = new HashMap<>(); 130 keyValues.put(HARDWARE_KEY, "grouper"); 131 keyValues.put(MODEL_KEY, "Nexus 7"); 132 keyValues.put(MANUFACTURER_KEY, "asus"); 133 assertEquals("0.3", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 134 keyValues.put(HARDWARE_KEY, "tilapia"); 135 assertEquals("0.3", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 136 137 keyValues.clear(); 138 keyValues.put(HARDWARE_KEY, "mako"); 139 keyValues.put(MODEL_KEY, "Nexus 4"); 140 keyValues.put(MANUFACTURER_KEY, "LGE"); 141 assertEquals("0.4", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 142 keyValues.put(HARDWARE_KEY, "MAKO"); 143 assertEquals("0.4", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 144 145 keyValues.clear(); 146 keyValues.put(HARDWARE_KEY, "manta"); 147 keyValues.put(MODEL_KEY, "Nexus 10"); 148 keyValues.put(MANUFACTURER_KEY, "samsung"); 149 assertEquals("0.2", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 150 keyValues.put(HARDWARE_KEY, "mantaray"); 151 assertEquals("0.2", ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 152 } 153 } 154