1 /* 2 * Copyright (C) 2011 Google Inc. 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.i18n.phonenumbers.geocoding; 18 19 import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber; 20 import junit.framework.TestCase; 21 22 import java.util.Locale; 23 24 /** 25 * Unit tests for PhoneNumberOfflineGeocoder.java 26 * 27 * @author Shaopeng Jia 28 */ 29 public class PhoneNumberOfflineGeocoderTest extends TestCase { 30 private final PhoneNumberOfflineGeocoder geocoder = 31 new PhoneNumberOfflineGeocoder(TEST_MAPPING_DATA_DIRECTORY); 32 private static final String TEST_MAPPING_DATA_DIRECTORY = 33 "/com/android/i18n/phonenumbers/geocoding/testing_data/"; 34 35 // Set up some test numbers to re-use. 36 private static final PhoneNumber KO_NUMBER1 = 37 new PhoneNumber().setCountryCode(82).setNationalNumber(22123456L); 38 private static final PhoneNumber KO_NUMBER2 = 39 new PhoneNumber().setCountryCode(82).setNationalNumber(322123456L); 40 private static final PhoneNumber KO_NUMBER3 = 41 new PhoneNumber().setCountryCode(82).setNationalNumber(6421234567L); 42 private static final PhoneNumber KO_INVALID_NUMBER = 43 new PhoneNumber().setCountryCode(82).setNationalNumber(1234L); 44 private static final PhoneNumber US_NUMBER1 = 45 new PhoneNumber().setCountryCode(1).setNationalNumber(6502530000L); 46 private static final PhoneNumber US_NUMBER2 = 47 new PhoneNumber().setCountryCode(1).setNationalNumber(6509600000L); 48 private static final PhoneNumber US_NUMBER3 = 49 new PhoneNumber().setCountryCode(1).setNationalNumber(2128120000L); 50 private static final PhoneNumber US_INVALID_NUMBER = 51 new PhoneNumber().setCountryCode(1).setNationalNumber(123456789L); 52 private static final PhoneNumber BS_NUMBER1 = 53 new PhoneNumber().setCountryCode(1).setNationalNumber(2423651234L); 54 private static final PhoneNumber AU_NUMBER = 55 new PhoneNumber().setCountryCode(61).setNationalNumber(236618300L); 56 private static final PhoneNumber NUMBER_WITH_INVALID_COUNTRY_CODE = 57 new PhoneNumber().setCountryCode(999).setNationalNumber(2423651234L); 58 testGetDescriptionForNumberWithNoDataFile()59 public void testGetDescriptionForNumberWithNoDataFile() { 60 // No data file containing mappings for US numbers is available in Chinese for the unittests. As 61 // a result, the country name of United States in simplified Chinese is returned. 62 assertEquals("\u7F8E\u56FD", 63 geocoder.getDescriptionForNumber(US_NUMBER1, Locale.SIMPLIFIED_CHINESE)); 64 assertEquals("Stati Uniti", 65 geocoder.getDescriptionForNumber(US_NUMBER1, Locale.ITALIAN)); 66 assertEquals("Bahamas", 67 geocoder.getDescriptionForNumber(BS_NUMBER1, new Locale("en", "US"))); 68 assertEquals("Australia", 69 geocoder.getDescriptionForNumber(AU_NUMBER, new Locale("en", "US"))); 70 assertEquals("", geocoder.getDescriptionForNumber(NUMBER_WITH_INVALID_COUNTRY_CODE, 71 new Locale("en", "US"))); 72 } 73 testGetDescriptionForNumber_en_US()74 public void testGetDescriptionForNumber_en_US() { 75 assertEquals("CA", 76 geocoder.getDescriptionForNumber(US_NUMBER1, new Locale("en", "US"))); 77 assertEquals("Mountain View, CA", 78 geocoder.getDescriptionForNumber(US_NUMBER2, new Locale("en", "US"))); 79 assertEquals("New York, NY", 80 geocoder.getDescriptionForNumber(US_NUMBER3, new Locale("en", "US"))); 81 } 82 testGetDescriptionForKoreanNumber()83 public void testGetDescriptionForKoreanNumber() { 84 assertEquals("Seoul", 85 geocoder.getDescriptionForNumber(KO_NUMBER1, Locale.ENGLISH)); 86 assertEquals("Incheon", 87 geocoder.getDescriptionForNumber(KO_NUMBER2, Locale.ENGLISH)); 88 assertEquals("Jeju", 89 geocoder.getDescriptionForNumber(KO_NUMBER3, Locale.ENGLISH)); 90 assertEquals("\uC11C\uC6B8", 91 geocoder.getDescriptionForNumber(KO_NUMBER1, Locale.KOREAN)); 92 assertEquals("\uC778\uCC9C", 93 geocoder.getDescriptionForNumber(KO_NUMBER2, Locale.KOREAN)); 94 assertEquals("\uC81C\uC8FC", 95 geocoder.getDescriptionForNumber(KO_NUMBER3, Locale.KOREAN)); 96 } 97 testGetDescriptionForInvalidNumber()98 public void testGetDescriptionForInvalidNumber() { 99 assertEquals("", geocoder.getDescriptionForNumber(KO_INVALID_NUMBER, Locale.ENGLISH)); 100 assertEquals("", geocoder.getDescriptionForNumber(US_INVALID_NUMBER, Locale.ENGLISH)); 101 } 102 } 103