1f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia/* 2f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * Copyright (C) 2011 Google Inc. 3f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * 4f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * Licensed under the Apache License, Version 2.0 (the "License"); 5f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * you may not use this file except in compliance with the License. 6f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * You may obtain a copy of the License at 7f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * 8f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * http://www.apache.org/licenses/LICENSE-2.0 9f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * 10f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * Unless required by applicable law or agreed to in writing, software 11f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * distributed under the License is distributed on an "AS IS" BASIS, 12f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * See the License for the specific language governing permissions and 14f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * limitations under the License. 15f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia */ 16f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 17f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiapackage com.android.i18n.phonenumbers.geocoding; 18f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 19f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport junit.framework.TestCase; 20f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 21f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.io.ByteArrayInputStream; 22f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.io.ByteArrayOutputStream; 23f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.io.IOException; 24f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.io.ObjectInputStream; 25f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.io.ObjectOutputStream; 26f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.util.SortedMap; 27f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiaimport java.util.TreeMap; 28f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 29f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia/** 30f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * Unittests for FlyweightMapStorage.java 31f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * 32f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia * @author Philippe Liard 33f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia */ 34f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jiapublic class FlyweightMapStorageTest extends TestCase { 35f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia private final SortedMap<Integer, String> areaCodeMap = new TreeMap<Integer, String>(); 36f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 37f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia public FlyweightMapStorageTest() { 38f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia areaCodeMap.put(331402, "Paris"); 39f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia areaCodeMap.put(331434, "Paris"); 40f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia areaCodeMap.put(334910, "Marseille"); 41f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia areaCodeMap.put(334911, "Marseille"); 42f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia } 43f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 44f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia public void testReadFromSortedMap() { 45f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia FlyweightMapStorage mapStorage = new FlyweightMapStorage(); 46f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia mapStorage.readFromSortedMap(areaCodeMap); 47f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 48f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals(331402, mapStorage.getPrefix(0)); 49f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals(331434, mapStorage.getPrefix(1)); 50f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals(334910, mapStorage.getPrefix(2)); 51f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals(334911, mapStorage.getPrefix(3)); 52f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 53f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia String desc = mapStorage.getDescription(0); 54f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals("Paris", desc); 55f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertTrue(desc == mapStorage.getDescription(1)); // Same identity. 56f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 57f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia desc = mapStorage.getDescription(2); 58f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals("Marseille", desc); 59f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertTrue(desc == mapStorage.getDescription(3)); // Same identity. 60f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia } 61f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 62f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia public void testWriteAndReadExternal() throws IOException { 63f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia FlyweightMapStorage mapStorage = new FlyweightMapStorage(); 64f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia mapStorage.readFromSortedMap(areaCodeMap); 65f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 66f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 67f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 68f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia mapStorage.writeExternal(objectOutputStream); 69f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia objectOutputStream.flush(); 70f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 71f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia FlyweightMapStorage newMapStorage = new FlyweightMapStorage(); 72f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia ObjectInputStream objectInputStream = 73f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray())); 74f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia newMapStorage.readExternal(objectInputStream); 75f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia 76f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia String expected = mapStorage.toString(); 77f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertFalse(expected.length() == 0); 78f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia assertEquals(expected, newMapStorage.toString()); 79f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia } 80f7e0224b862054893f28d2736b3f6804d9935886Shaopeng Jia} 81