15b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa/* 25b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project 35b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * 45b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License"); 55b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * you may not use this file except in compliance with the License. 65b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * You may obtain a copy of the License at 75b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * 85b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * http://www.apache.org/licenses/LICENSE-2.0 95b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * 105b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software 115b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS, 125b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * See the License for the specific language governing permissions and 145b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * limitations under the License. 155b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa */ 165b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 175b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawapackage com.android.providers.contacts; 185b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 195b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawaimport android.test.suitebuilder.annotation.SmallTest; 205b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 2138210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport com.android.providers.contacts.PostalSplitter.Postal; 225b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 235b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawaimport junit.framework.TestCase; 245b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 2538210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport java.util.Locale; 2638210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki 275b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa/** 285b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * Tests for {@link PostalSplitter}, especially for ja_JP locale. 295b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * This class depends on the assumption that all the tests in {@link NameSplitterTest} pass. 305b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * 315b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * Run the test like this: 325b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * <code> 335b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * adb shell am instrument -e class com.android.providers.contacts.PostalSplitterForJapaneseTest -w 345b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * com.android.providers.contacts.tests/android.test.InstrumentationTestRunner 355b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa * </code> 365b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa */ 375b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa@SmallTest 385b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawapublic class PostalSplitterForJapaneseTest extends TestCase { 395b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private PostalSplitter mPostalSplitter; 405b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 415b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // Postal address for Tokyo Metropolitan City Hall (Tokyo-Tocho) as of 2009 + pseudo PO box. 425b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // Japanese don't use neighborhood, so it is not used in this test suite. 435b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // 445b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // "Nihon" in Kanji 455b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private static final String COUNTRY = "\u65E5\u672C"; 465b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private static final String POSTCODE = "163-8001"; 475b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // "Tokyo-to" in Kanji 485b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private static final String REGION = "\u6771\u4EAC\u90FD"; 495b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // "Sinjuku-ku" in Kanji 505b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private static final String CITY = "\u65B0\u5BBF\u533A"; 515b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // Nishi-Sinjuku 2-8-1 525b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private static final String STREET = "\u897F\u65B0\u5BBF 2-8-1"; 535b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa // Pseudo PO box for test: "Sisyobako 404" 545b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private static final String POBOX = "\u79C1\u66F8\u7BB1"; 555b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 565b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa @Override 575b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa protected void setUp() throws Exception { 585b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa super.setUp(); 595b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 605b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa mPostalSplitter = new PostalSplitter(Locale.JAPAN); 615b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 625b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 635b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testNull() { 645b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertSplitPostal(null, null, null, null, null, null, null, null); 655b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(null, null, null, null, null, null, null, null); 665b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 675b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 685b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testEmpty() { 695b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertSplitPostal("", null, null, null, null, null, null, null); 705b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(null, null, null, null, null, null, null, null); 715b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 725b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 735b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testSpaces() { 745b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertSplitPostal(" ", " ", null, null, null, null, null, null); 755b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(" ", " ", null, null, null, null, null, null); 765b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 775b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 785b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testPobox() { 795b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(CITY + "\n" + POBOX, null, POBOX, null, CITY, null, null, null); 805b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 815b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 825b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testNormal() { 835b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(POSTCODE + "\n" + REGION + " " + CITY + "\n" + STREET, 845b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, CITY, REGION, POSTCODE, null); 855b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 865b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 875b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testMissingRegion() { 885b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(POSTCODE + "\n" + REGION + "\n" + STREET, 895b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, REGION, null, POSTCODE, null); 905b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 915b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(POSTCODE + "\n" + STREET, 925b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, null, null, POSTCODE, null); 935b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 945b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(COUNTRY + " " + POSTCODE + "\n" + STREET, 955b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, null, null, POSTCODE, COUNTRY); 965b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 975b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 985b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testMissingPostcode() { 995b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(REGION + " " + CITY + "\n" + STREET, 1005b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, CITY, REGION, null, null); 1015b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 1025b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(COUNTRY + "\n" + REGION + " " + CITY + "\n" + STREET, 1035b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, CITY, REGION, null, COUNTRY); 1045b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 1055b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(COUNTRY + "\n" + STREET, 1065b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa STREET, null, null, null, null, null, COUNTRY); 1075b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 1085b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 1095b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa public void testMissingStreet() { 1105b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertJoinedPostal(COUNTRY + "\n" + STREET, 1115b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa null, null, STREET, null, null, null, COUNTRY); 1125b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 1135b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 1145b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private void assertSplitPostal(String formattedPostal, String street, String pobox, 1155b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa String neighborhood, String city, String region, String postcode, String country) { 1165b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa final Postal postal = new Postal(); 1175b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa mPostalSplitter.split(postal, formattedPostal); 1185b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(street, postal.street); 1195b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(pobox, postal.pobox); 1205b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(neighborhood, postal.neighborhood); 1215b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(city, postal.city); 1225b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(region, postal.region); 1235b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(postcode, postal.postcode); 1245b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(country, postal.country); 1255b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 1265b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 1275b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa private void assertJoinedPostal(String formattedPostal, String street, String pobox, 1285b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa String neighborhood, String city, String region, String postcode, String country) { 1295b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa final Postal postal = new Postal(); 1305b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.street = street; 1315b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.pobox = pobox; 1325b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.neighborhood = neighborhood; 1335b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.city = city; 1345b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.region = region; 1355b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.postcode = postcode; 1365b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa postal.country = country; 1375b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa 1385b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa final String joined = mPostalSplitter.join(postal); 1395b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa assertEquals(formattedPostal, joined); 1405b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa } 1415b6f7fbb003a085088b2ae4e61b07774d61f8565Daisuke Miyakawa} 142