1d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia/* 2ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia * Copyright (C) 2011 The Libphonenumber Authors 3d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * 4d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * Licensed under the Apache License, Version 2.0 (the "License"); 5d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * you may not use this file except in compliance with the License. 6d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * You may obtain a copy of the License at 7d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * 8d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * http://www.apache.org/licenses/LICENSE-2.0 9d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * 10d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * Unless required by applicable law or agreed to in writing, software 11d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * distributed under the License is distributed on an "AS IS" BASIS, 12d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * See the License for the specific language governing permissions and 14d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * limitations under the License. 15d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia */ 16d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 1793f6965c2c041ac707bf1b3bcf5a3f60e452f421Shaopeng Jiapackage com.android.i18n.phonenumbers.geocoding; 18d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 1993f6965c2c041ac707bf1b3bcf5a3f60e452f421Shaopeng Jiaimport com.android.i18n.phonenumbers.Phonenumber.PhoneNumber; 20d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport junit.framework.TestCase; 21d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 22d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.io.ByteArrayInputStream; 23d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.io.ByteArrayOutputStream; 24d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.io.IOException; 25d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.io.ObjectInputStream; 26d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.io.ObjectOutputStream; 27d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.util.SortedMap; 28d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiaimport java.util.TreeMap; 29d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 30d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia/** 31d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * Unittests for AreaCodeMap.java 32d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * 33d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia * @author Shaopeng Jia 34d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia */ 35d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jiapublic class AreaCodeMapTest extends TestCase { 36f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia private final AreaCodeMap areaCodeMapForUS = new AreaCodeMap(); 37f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia private final AreaCodeMap areaCodeMapForIT = new AreaCodeMap(); 38d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia private PhoneNumber number = new PhoneNumber(); 39d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 40d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public AreaCodeMapTest() { 419651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia SortedMap<Integer, String> sortedMapForUS = new TreeMap<Integer, String>(); 429651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1212, "New York"); 439651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1480, "Arizona"); 449651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1650, "California"); 459651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1907, "Alaska"); 469651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1201664, "Westwood, NJ"); 479651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1480893, "Phoenix, AZ"); 489651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1501372, "Little Rock, AR"); 499651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1626308, "Alhambra, CA"); 509651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1650345, "San Mateo, CA"); 519651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1867993, "Dawson, YT"); 529651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForUS.put(1972480, "Richardson, TX"); 539651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 549651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia areaCodeMapForUS.readAreaCodeMap(sortedMapForUS); 559651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 569651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia SortedMap<Integer, String> sortedMapForIT = new TreeMap<Integer, String>(); 579651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForIT.put(3902, "Milan"); 589651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForIT.put(3906, "Rome"); 599651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForIT.put(39010, "Genoa"); 609651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForIT.put(390131, "Alessandria"); 619651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForIT.put(390321, "Novara"); 629651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMapForIT.put(390975, "Potenza"); 639651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 649651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia areaCodeMapForIT.readAreaCodeMap(sortedMapForIT); 659651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 669651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 679651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia private static SortedMap<Integer, String> createDefaultStorageMapCandidate() { 689651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia SortedMap<Integer, String> sortedMap = new TreeMap<Integer, String>(); 699651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia // Make the area codes bigger to store them using integer. 709651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMap.put(121212345, "New York"); 719651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMap.put(148034434, "Arizona"); 729651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia return sortedMap; 739651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 749651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 759651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia private static SortedMap<Integer, String> createFlyweightStorageMapCandidate() { 76d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia SortedMap<Integer, String> sortedMap = new TreeMap<Integer, String>(); 77d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia sortedMap.put(1212, "New York"); 789651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMap.put(1213, "New York"); 799651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia sortedMap.put(1214, "New York"); 80d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia sortedMap.put(1480, "Arizona"); 819651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia return sortedMap; 829651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 839651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 849651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia public void testGetSmallerMapStorageChoosesDefaultImpl() { 859651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia AreaCodeMapStorageStrategy mapStorage = 86f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia new AreaCodeMap().getSmallerMapStorage(createDefaultStorageMapCandidate()); 87ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertFalse(mapStorage instanceof FlyweightMapStorage); 889651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 89d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 909651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia public void testGetSmallerMapStorageChoosesFlyweightImpl() { 919651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia AreaCodeMapStorageStrategy mapStorage = 92f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia new AreaCodeMap().getSmallerMapStorage(createFlyweightStorageMapCandidate()); 93ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertTrue(mapStorage instanceof FlyweightMapStorage); 94d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 95d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 96d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupInvalidNumber_US() { 97d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia // central office code cannot start with 1. 98d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(2121234567L); 999651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("New York", areaCodeMapForUS.lookup(number)); 100d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 101d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 102d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumber_NJ() { 103d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(2016641234L); 1049651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("Westwood, NJ", areaCodeMapForUS.lookup(number)); 105d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 106d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 107d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumber_NY() { 108d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(2126641234L); 1099651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("New York", areaCodeMapForUS.lookup(number)); 110d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 111d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 112d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumber_CA_1() { 113d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(6503451234L); 1149651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("San Mateo, CA", areaCodeMapForUS.lookup(number)); 115d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 116d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 117d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumber_CA_2() { 118d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(6502531234L); 1199651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("California", areaCodeMapForUS.lookup(number)); 120d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 121d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 122d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumberFound_TX() { 123d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(9724801234L); 1249651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("Richardson, TX", areaCodeMapForUS.lookup(number)); 125d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 126d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 127d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumberNotFound_TX() { 128d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(1).setNationalNumber(9724811234L); 129ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertNull(areaCodeMapForUS.lookup(number)); 130d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 131d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 132d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia public void testLookupNumber_CH() { 133d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia number.setCountryCode(41).setNationalNumber(446681300L); 134ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertNull(areaCodeMapForUS.lookup(number)); 1359651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 1369651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1379651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia public void testLookupNumber_IT() { 1389651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia number.setCountryCode(39).setNationalNumber(212345678L).setItalianLeadingZero(true); 1399651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("Milan", areaCodeMapForIT.lookup(number)); 1409651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1419651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia number.setNationalNumber(612345678L); 1429651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("Rome", areaCodeMapForIT.lookup(number)); 1439651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1449651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia number.setNationalNumber(3211234L); 1459651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("Novara", areaCodeMapForIT.lookup(number)); 1469651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1479651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia // A mobile number 1489651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia number.setNationalNumber(321123456L).setItalianLeadingZero(false); 149ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertNull(areaCodeMapForIT.lookup(number)); 1509651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1519651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia // An invalid number (too short) 1529651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia number.setNationalNumber(321123L).setItalianLeadingZero(true); 1539651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals("Novara", areaCodeMapForIT.lookup(number)); 154d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 155d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 1569651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia /** 1579651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia * Creates a new area code map serializing the provided area code map to a stream and then reading 1589651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia * this stream. The resulting area code map is expected to be strictly equal to the provided one 1599651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia * from which it was generated. 1609651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia */ 161f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia private static AreaCodeMap createNewAreaCodeMap(AreaCodeMap areaCodeMap) throws IOException { 1629651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 1639651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 1649651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia areaCodeMap.writeExternal(objectOutputStream); 1659651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia objectOutputStream.flush(); 1669651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 167f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia AreaCodeMap newAreaCodeMap = new AreaCodeMap(); 1689651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia newAreaCodeMap.readExternal( 1699651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()))); 1709651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia return newAreaCodeMap; 1719651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 1729651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1739651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia public void testReadWriteExternalWithDefaultStrategy() throws IOException { 174f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia AreaCodeMap localAreaCodeMap = new AreaCodeMap(); 1759651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia localAreaCodeMap.readAreaCodeMap(createDefaultStorageMapCandidate()); 176ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertFalse(localAreaCodeMap.getAreaCodeMapStorage() instanceof FlyweightMapStorage); 1779651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia 1789651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia AreaCodeMap newAreaCodeMap; 1799651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia newAreaCodeMap = createNewAreaCodeMap(localAreaCodeMap); 1809651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals(localAreaCodeMap.toString(), newAreaCodeMap.toString()); 1819651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia } 182d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 1839651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia public void testReadWriteExternalWithFlyweightStrategy() throws IOException { 184f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia AreaCodeMap localAreaCodeMap = new AreaCodeMap(); 1859651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia localAreaCodeMap.readAreaCodeMap(createFlyweightStorageMapCandidate()); 186ca1e43d6e1fac07c7fc29c66c7da1fa9d7cf50f2Shaopeng Jia assertTrue(localAreaCodeMap.getAreaCodeMapStorage() instanceof FlyweightMapStorage); 187d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia 1889651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia AreaCodeMap newAreaCodeMap; 1899651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia newAreaCodeMap = createNewAreaCodeMap(localAreaCodeMap); 1909651f4d6f2740017c0c4ea9c1c340af6f644d609Shaopeng Jia assertEquals(localAreaCodeMap.toString(), newAreaCodeMap.toString()); 191d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia } 192d1db4c508088ac27cb0815a222cf2600f16ad5b9Shaopeng Jia} 193