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; 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 { testFindDefaultConstant()26 public void testFindDefaultConstant() { 27 final String[] nullArray = null; 28 assertNull(ResourceUtils.findDefaultConstant(nullArray)); 29 30 final String[] emptyArray = {}; 31 assertNull(ResourceUtils.findDefaultConstant(emptyArray)); 32 33 final String[] array = { 34 "HARDWARE=grouper,0.3", 35 "HARDWARE=mako,0.4", 36 ",defaultValue1", 37 "HARDWARE=manta,0.2", 38 ",defaultValue2", 39 }; 40 assertEquals(ResourceUtils.findDefaultConstant(array), "defaultValue1"); 41 } 42 testFindConstantForKeyValuePairsSimple()43 public void testFindConstantForKeyValuePairsSimple() { 44 final HashMap<String,String> anyKeyValue = CollectionUtils.newHashMap(); 45 anyKeyValue.put("anyKey", "anyValue"); 46 final HashMap<String,String> nullKeyValue = null; 47 final HashMap<String,String> emptyKeyValue = CollectionUtils.newHashMap(); 48 49 final String[] nullArray = null; 50 assertNull(ResourceUtils.findConstantForKeyValuePairs(anyKeyValue, nullArray)); 51 assertNull(ResourceUtils.findConstantForKeyValuePairs(emptyKeyValue, nullArray)); 52 assertNull(ResourceUtils.findConstantForKeyValuePairs(nullKeyValue, nullArray)); 53 54 final String[] emptyArray = {}; 55 assertNull(ResourceUtils.findConstantForKeyValuePairs(anyKeyValue, emptyArray)); 56 assertNull(ResourceUtils.findConstantForKeyValuePairs(emptyKeyValue, emptyArray)); 57 assertNull(ResourceUtils.findConstantForKeyValuePairs(nullKeyValue, emptyArray)); 58 59 final String HARDWARE_KEY = "HARDWARE"; 60 final String[] array = { 61 ",defaultValue", 62 "HARDWARE=grouper,0.3", 63 "HARDWARE=mako,0.4", 64 "HARDWARE=manta,0.2", 65 "HARDWARE=mako,0.5", 66 }; 67 68 final HashMap<String,String> keyValues = CollectionUtils.newHashMap(); 69 keyValues.put(HARDWARE_KEY, "grouper"); 70 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.3"); 71 keyValues.put(HARDWARE_KEY, "mako"); 72 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.4"); 73 keyValues.put(HARDWARE_KEY, "manta"); 74 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.2"); 75 76 try { 77 keyValues.clear(); 78 keyValues.put("hardware", "grouper"); 79 final String constant = ResourceUtils.findConstantForKeyValuePairs(keyValues, array); 80 fail("condition without HARDWARE must fail: constant=" + constant); 81 } catch (final RuntimeException e) { 82 assertEquals(e.getMessage(), "Found unknown key: HARDWARE=grouper"); 83 } 84 keyValues.clear(); 85 keyValues.put(HARDWARE_KEY, "MAKO"); 86 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 87 keyValues.put(HARDWARE_KEY, "mantaray"); 88 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 89 90 try { 91 final String constant = ResourceUtils.findConstantForKeyValuePairs( 92 emptyKeyValue, array); 93 fail("emptyCondition shouldn't match: constant=" + constant); 94 } catch (final RuntimeException e) { 95 assertEquals(e.getMessage(), "Found unknown key: HARDWARE=grouper"); 96 } 97 } 98 testFindConstantForKeyValuePairsCombined()99 public void testFindConstantForKeyValuePairsCombined() { 100 final String HARDWARE_KEY = "HARDWARE"; 101 final String MODEL_KEY = "MODEL"; 102 final String MANUFACTURER_KEY = "MANUFACTURER"; 103 final String[] array = { 104 ",defaultValue", 105 "HARDWARE=grouper:MANUFACTURER=asus,0.3", 106 "HARDWARE=mako:MODEL=Nexus 4,0.4", 107 "HARDWARE=manta:MODEL=Nexus 10:MANUFACTURER=samsung,0.2" 108 }; 109 final String[] failArray = { 110 ",defaultValue", 111 "HARDWARE=grouper:MANUFACTURER=ASUS,0.3", 112 "HARDWARE=mako:MODEL=Nexus_4,0.4", 113 "HARDWARE=mantaray:MODEL=Nexus 10:MANUFACTURER=samsung,0.2" 114 }; 115 116 final HashMap<String,String> keyValues = CollectionUtils.newHashMap(); 117 keyValues.put(HARDWARE_KEY, "grouper"); 118 keyValues.put(MODEL_KEY, "Nexus 7"); 119 keyValues.put(MANUFACTURER_KEY, "asus"); 120 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.3"); 121 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 122 123 keyValues.clear(); 124 keyValues.put(HARDWARE_KEY, "mako"); 125 keyValues.put(MODEL_KEY, "Nexus 4"); 126 keyValues.put(MANUFACTURER_KEY, "LGE"); 127 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.4"); 128 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 129 130 keyValues.clear(); 131 keyValues.put(HARDWARE_KEY, "manta"); 132 keyValues.put(MODEL_KEY, "Nexus 10"); 133 keyValues.put(MANUFACTURER_KEY, "samsung"); 134 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.2"); 135 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray)); 136 keyValues.put(HARDWARE_KEY, "mantaray"); 137 assertNull(ResourceUtils.findConstantForKeyValuePairs(keyValues, array)); 138 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, failArray), "0.2"); 139 } 140 testFindConstantForKeyValuePairsRegexp()141 public void testFindConstantForKeyValuePairsRegexp() { 142 final String HARDWARE_KEY = "HARDWARE"; 143 final String MODEL_KEY = "MODEL"; 144 final String MANUFACTURER_KEY = "MANUFACTURER"; 145 final String[] array = { 146 ",defaultValue", 147 "HARDWARE=grouper|tilapia:MANUFACTURER=asus,0.3", 148 "HARDWARE=[mM][aA][kK][oO]:MODEL=Nexus 4,0.4", 149 "HARDWARE=manta.*:MODEL=Nexus 10:MANUFACTURER=samsung,0.2" 150 }; 151 152 final HashMap<String,String> keyValues = CollectionUtils.newHashMap(); 153 keyValues.put(HARDWARE_KEY, "grouper"); 154 keyValues.put(MODEL_KEY, "Nexus 7"); 155 keyValues.put(MANUFACTURER_KEY, "asus"); 156 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.3"); 157 keyValues.put(HARDWARE_KEY, "tilapia"); 158 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.3"); 159 160 keyValues.clear(); 161 keyValues.put(HARDWARE_KEY, "mako"); 162 keyValues.put(MODEL_KEY, "Nexus 4"); 163 keyValues.put(MANUFACTURER_KEY, "LGE"); 164 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.4"); 165 keyValues.put(HARDWARE_KEY, "MAKO"); 166 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.4"); 167 168 keyValues.clear(); 169 keyValues.put(HARDWARE_KEY, "manta"); 170 keyValues.put(MODEL_KEY, "Nexus 10"); 171 keyValues.put(MANUFACTURER_KEY, "samsung"); 172 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.2"); 173 keyValues.put(HARDWARE_KEY, "mantaray"); 174 assertEquals(ResourceUtils.findConstantForKeyValuePairs(keyValues, array), "0.2"); 175 } 176 } 177