• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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