19b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com/* 29b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * Copyright (C) 2010 Google Inc. 39b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * 49b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 59b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * you may not use this file except in compliance with the License. 69b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * You may obtain a copy of the License at 79b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * 89b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * http://www.apache.org/licenses/LICENSE-2.0 99b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * 109b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * Unless required by applicable law or agreed to in writing, software 119b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * distributed under the License is distributed on an "AS IS" BASIS, 129b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * See the License for the specific language governing permissions and 149b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * limitations under the License. 159b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com */ 169b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 179b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.compackage com.android.i18n.addressinput; 189b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 199b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.comimport com.android.i18n.addressinput.LookupKey.KeyType; 209b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 219b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.comimport java.util.HashMap; 229b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.comimport java.util.Map; 239b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 2486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.comimport junit.framework.TestCase; 2586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 269b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com/** 279b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com * Unit tests for the LookupKey class. 289b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com */ 299b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.compublic class LookupKeyTest extends TestCase { 3086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String ROOT_KEY = "data"; 3186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String ROOT_EXAMPLE_KEY = "examples"; 3286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String US_KEY = "data/US"; 3386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String CALIFORNIA_KEY = "data/US/CA"; 3486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String EXAMPLE_LOCAL_US_KEY = "examples/US/local/_default"; 3586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 3686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Data key for Da-an District, Taipei Taiwan 3786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String TW_KEY = "data/TW/\u53F0\u5317\u5E02/\u5927\u5B89\u5340"; 3886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 3986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Example key for TW's address (local script) 4086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String TW_EXAMPLE_LOCAL_KEY = "examples/TW/local/_default"; 4186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 4286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Example key for TW's address (latin script) 4386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String TW_EXAMPLE_LATIN_KEY = "examples/TW/latin/_default"; 4486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 4586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String RANDOM_KEY = "sdfIisooIFOOBAR"; 4686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com private static final String RANDOM_COUNTRY_KEY = "data/asIOSDxcowW"; 4786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 4886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testRootKey() { 4986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.DATA).build(); 5086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(ROOT_KEY, key.toString()); 5186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 5286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key2 = new LookupKey.Builder(key.toString()).build(); 5386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(ROOT_KEY, key2.toString()); 549b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com } 5586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 5686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testDataKeys() { 5786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(US_KEY).build(); 5886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(US_KEY, key.toString()); 5986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 6086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key2 = new LookupKey.Builder(CALIFORNIA_KEY).build(); 6186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(CALIFORNIA_KEY, key2.toString()); 629b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com } 639b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 6486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testExampleRootKeys() { 6586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.EXAMPLES).build(); 6686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(ROOT_EXAMPLE_KEY, key.toString()); 6786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 689b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 6986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testExampleKeys() { 7086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com AddressData address = new AddressData.Builder().setCountry("US") 7186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setLanguageCode("en") 7286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .build(); 739b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 7486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.EXAMPLES).setAddressData(address).build(); 7586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(EXAMPLE_LOCAL_US_KEY, key.toString()); 769b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 7786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = new LookupKey.Builder(EXAMPLE_LOCAL_US_KEY).build(); 7886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(EXAMPLE_LOCAL_US_KEY, key.toString()); 7986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 8086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 8186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testKeyWithWrongScriptType() { 8286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com String wrongScript = "examples/US/asdfasdfasdf/_default"; 8386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com try { 8486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com new LookupKey.Builder(wrongScript).build(); 8586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com fail("should fail since the script type is wrong"); 8686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } catch (RuntimeException e) { 8786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Expected. 8886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 8986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 9086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 9186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testFallbackToCountry() { 9286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Admin Area is missing. 9386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com AddressData address = new AddressData.Builder().setCountry("US") 9486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setLocality("Mt View") 9586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .build(); 9686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 9786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.DATA).setAddressData(address).build(); 9886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 9986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("locality should be omitted since admin area is not specified", US_KEY, 10086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key.toString()); 1019b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 10286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Tries key string with the same problem (missing Admin Area). 10386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = new LookupKey.Builder("data/US//Mt View").build(); 1049b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 10586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("locality should be omitted since admin area is not specified", US_KEY, 10686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key.toString()); 10786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 10886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 10986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testNonUsAddress() { 11086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com AddressData address = new AddressData.Builder().setCountry("TW") 11186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Taipei City 11286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setAdminArea("\u53F0\u5317\u5E02") 11386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Da-an District 11486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setLocality("\u5927\u5B89\u5340") 11586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .build(); 11686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 11786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.DATA).setAddressData(address).build(); 11886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(TW_KEY, key.toString()); 1199b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 12086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = new LookupKey.Builder(KeyType.EXAMPLES).setAddressData(address).build(); 12186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(TW_EXAMPLE_LOCAL_KEY, key.toString()); 1229b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 12386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com address = new AddressData.Builder(address).setLanguageCode("zh-latn").build(); 12486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = new LookupKey.Builder(KeyType.EXAMPLES).setAddressData(address).build(); 12586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(TW_EXAMPLE_LATIN_KEY, key.toString()); 1269b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com } 12786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 12886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testGetKeyForUpperLevelFieldWithDataKey() { 12986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com AddressData address = new AddressData.Builder().setCountry("US") 13086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setAdminArea("CA") 13186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setLocality("Mt View") 13286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .build(); 13386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 13486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.DATA).setAddressData(address).build(); 13586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey newKey = key.getKeyForUpperLevelField(AddressField.COUNTRY); 13686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertNotNull("failed to get key for " + AddressField.COUNTRY, newKey); 13786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US", newKey.toString()); 13886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 13986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com newKey = key.getKeyForUpperLevelField(AddressField.ADMIN_AREA); 14086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertNotNull("failed to get key for " + AddressField.ADMIN_AREA, newKey); 14186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US/CA", newKey.toString()); 14286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("original key should not be changed", "data/US/CA/Mt View", key.toString()); 14386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 14486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com newKey = key.getKeyForUpperLevelField(AddressField.LOCALITY); 14586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertNotNull("failed to get key for " + AddressField.LOCALITY, newKey); 14686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US/CA/Mt View", newKey.toString()); 14786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 14886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com newKey = key.getKeyForUpperLevelField(AddressField.DEPENDENT_LOCALITY); 14986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertNull("should return null for field not contained in current key", newKey); 15086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 15186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com newKey = key.getKeyForUpperLevelField(AddressField.RECIPIENT); 15286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertNull("should return null since field '" + AddressField.RECIPIENT + 15386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com "' is not in address hierarchy", newKey); 15486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 15586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 15686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testGetKeyForUpperLevelFieldWithExampleKey() { 15786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder("examples/US/latin/_default").build(); 15886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 15986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com try { 16086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key.getKeyForUpperLevelField(AddressField.COUNTRY); 16186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com fail("should fail if you try to get parent key for an example key."); 16286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } catch (RuntimeException e) { 16386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Expected. 16486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 16586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 16686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 16786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testGetParentKey() { 16886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com AddressData address = new AddressData.Builder().setCountry("US") 16986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setAdminArea("CA") 17086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setLocality("Mt View") 17186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .setDependentLocality("El Camino") 17286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com .build(); 17386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 17486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(KeyType.DATA).setAddressData(address).build(); 17586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US/CA/Mt View/El Camino", key.toString()); 17686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 17786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = key.getParentKey(); 17886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US/CA/Mt View", key.toString()); 17986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 18086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = key.getParentKey(); 18186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US/CA", key.toString()); 18286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 18386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = key.getParentKey(); 18486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data/US", key.toString()); 18586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 18686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = key.getParentKey(); 18786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("data", key.toString()); 18886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 18986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com key = key.getParentKey(); 19086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertNull("root key's parent should be null", key); 19186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 19286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 19386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testInvalidKeyTypeWillFail() { 19486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com try { 19586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com new LookupKey.Builder(RANDOM_KEY).build(); 19686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com fail("Should fail if key string does not start with a valid key type"); 19786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } catch (RuntimeException e) { 19886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com // Expected. 19986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 20086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 20186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 20286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com /** 20386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com * Ensures that even when the input key string is random, we still create a key. (We do not 20486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com * verify if the key maps to an real world entity like a city or country). 20586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com */ 20686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testWeDontVerifyKeyName() { 20786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder(RANDOM_COUNTRY_KEY).build(); 20886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(RANDOM_COUNTRY_KEY, key.toString()); 20986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 21086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 21186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testHash() { 21286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com String keys[] = { ROOT_KEY, ROOT_EXAMPLE_KEY, US_KEY, CALIFORNIA_KEY }; 21386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com Map<LookupKey, String> map = new HashMap<LookupKey, String>(); 21486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 21586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com for (String key : keys) { 21686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com map.put(new LookupKey.Builder(key).build(), key); 21786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 21886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 21986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com for (String key : keys) { 22086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertTrue(map.containsKey(new LookupKey.Builder(key).build())); 22186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals(key, map.get(new LookupKey.Builder(key).build())); 22286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 22386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertFalse(map.containsKey(new LookupKey.Builder(RANDOM_COUNTRY_KEY).build())); 22486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com } 22586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com 22686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testGetValueForUpperLevelField() { 22786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder("data/US/CA").build(); 22886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("US", key.getValueForUpperLevelField(AddressField.COUNTRY)); 2299b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com } 2309b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com 23186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com public void testGetValueForUpperLevelFieldInvalid() { 23286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key = new LookupKey.Builder("data").build(); 23386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("", key.getValueForUpperLevelField(AddressField.COUNTRY)); 23486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com LookupKey key2 = new LookupKey.Builder("data/").build(); 23586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com assertEquals("", key2.getValueForUpperLevelField(AddressField.COUNTRY)); 2369b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com } 2379b19e1202dec7ddb9c43d9459c901da291030d2flararennie@google.com} 238