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