Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / libaddressinput / src / java / test / com / android / i18n / addressinput / FormatInterpreterTest.java
1 /*
2  * Copyright (C) 2010 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.addressinput;
18
19 import com.android.i18n.addressinput.LookupKey.ScriptType;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import junit.framework.TestCase;
25
26 /**
27  * Tests for the FormatInterpreter class.
28  */
29 public class FormatInterpreterTest extends TestCase {
30   private static final AddressData US_CA_ADDRESS;
31   private static final AddressData TW_ADDRESS;
32
33   private FormatInterpreter formatInterpreter;
34
35   static {
36     US_CA_ADDRESS = new AddressData.Builder().setCountry("US")
37         .setAdminArea("CA")
38         .setLocality("Mt View")
39         .setAddressLine1("1098 Alta Ave")
40         .setPostalCode("94043")
41         .build();
42
43     TW_ADDRESS = new AddressData.Builder().setCountry("TW")
44         .setAdminArea("\u53F0\u5317\u5E02")  // Taipei city
45         .setLocality("\u5927\u5B89\u5340")  // Da-an district
46         .setAddressLine1("Sec. 3 Hsin-yi Rd.")
47         .setPostalCode("106")
48         .setOrganization("Giant Bike Store")
49         .setRecipient("Mr. Liu")
50         .build();
51   }
52
53   @Override
54   public void setUp() {
55     formatInterpreter = new FormatInterpreter(new FormOptions.Builder().build());
56   }
57
58   public void testIterateUsAddressFields() {
59     AddressField[] format = {
60       AddressField.RECIPIENT,
61       AddressField.ORGANIZATION,
62       AddressField.ADDRESS_LINE_1,
63       AddressField.ADDRESS_LINE_2,
64       AddressField.LOCALITY,
65       AddressField.ADMIN_AREA,
66       AddressField.POSTAL_CODE
67     };
68
69     int currIndex = 0;
70     for (AddressField field : formatInterpreter.getAddressFieldOrder(ScriptType.LOCAL, "US")) {
71       assertEquals("index " + currIndex + " should have matched",
72           format[currIndex].getChar(), field.getChar());
73       currIndex++;
74     }
75   }
76
77   /**
78    * Tests that this works for the case of Vanuatu, since we have no country-specific formatting
79    * data for that country. Should fall back to the default region.
80    */
81   public void testIterateVuAddressFields() {
82     AddressField[] format = {
83       AddressField.RECIPIENT,
84       AddressField.ORGANIZATION,
85       AddressField.ADDRESS_LINE_1,
86       AddressField.ADDRESS_LINE_2,
87       AddressField.LOCALITY,
88     };
89
90     int currIndex = 0;
91     for (AddressField field : formatInterpreter.getAddressFieldOrder(ScriptType.LOCAL, "VU")) {
92       assertEquals("index " + currIndex + " should have matched",
93           format[currIndex].getChar(), field.getChar());
94       currIndex++;
95     }
96   }
97
98   public void testOverrideFieldOrder() {
99     AddressField[] expectedOrder = {
100       AddressField.ADMIN_AREA,
101       AddressField.ORGANIZATION,
102       AddressField.ADDRESS_LINE_1,
103       AddressField.ADDRESS_LINE_2,
104       AddressField.LOCALITY,
105       AddressField.RECIPIENT,
106       AddressField.POSTAL_CODE
107     };
108
109     FormatInterpreter myInterpreter = new FormatInterpreter(
110         new FormOptions.Builder().customizeFieldOrder("US",
111           AddressField.ADMIN_AREA,
112           AddressField.RECIPIENT,
113           AddressField.SORTING_CODE,
114           AddressField.POSTAL_CODE).build());
115
116     int currIndex = 0;
117     for (AddressField field : myInterpreter.getAddressFieldOrder(ScriptType.LOCAL, "US")) {
118       assertEquals("Wrong field order for US on index " + currIndex + " of address fields.",
119           expectedOrder[currIndex], field);
120
121       // Sorting code (CEDEX) is not in US address format and should be
122       // neglected even if it is specified in customizeFieldOrder().
123       assertNotSame(AddressField.SORTING_CODE, field);
124       currIndex++;
125     }
126   }
127
128   public void testIterateTwLatinAddressFields() {
129     AddressField[] format = {
130       AddressField.RECIPIENT,
131       AddressField.ORGANIZATION,
132       AddressField.ADDRESS_LINE_1,
133       AddressField.ADDRESS_LINE_2,
134       AddressField.LOCALITY,
135       AddressField.ADMIN_AREA,
136       AddressField.POSTAL_CODE
137     };
138
139     int currIndex = 0;
140     for (AddressField field : formatInterpreter.getAddressFieldOrder(ScriptType.LATIN, "TW")) {
141       assertEquals("Unexpected field order -- mismatched on index " + currIndex,
142           format[currIndex].getChar(), field.getChar());
143       currIndex++;
144     }
145   }
146
147   public void testUsEnvelopeAddress() {
148     List<String> expected = new ArrayList<String>();
149     expected.add("1098 Alta Ave");
150     expected.add("Mt View, CA 94043");
151
152     List<String> real = formatInterpreter.getEnvelopeAddress(US_CA_ADDRESS);
153
154     assertEquals(expected, real);
155   }
156
157   public void testTwEnvelopeAddress() {
158     // To be in this order, the whole address should really be in Traditional Chinese - for
159     // readability, only the neighbourhood and city are.
160     List<String> expected = new ArrayList<String>();
161     expected.add("106");
162     expected.add("\u53F0\u5317\u5E02\u5927\u5B89\u5340");  // Taipei city, Da-an district
163     expected.add("Sec. 3 Hsin-yi Rd.");
164     expected.add("Giant Bike Store");
165     expected.add("Mr. Liu");
166
167     List<String> real = formatInterpreter.getEnvelopeAddress(TW_ADDRESS);
168
169     assertEquals(expected, real);
170   }
171
172   public void testEnvelopeAddressIncompleteAddress() {
173     List<String> expected = new ArrayList<String>();
174     expected.add("1098 Alta Ave");
175     expected.add("CA 94043");
176
177     AddressData address = new AddressData.Builder().set(US_CA_ADDRESS)
178         .set(AddressField.LOCALITY, null).build();
179
180     List<String> real = formatInterpreter.getEnvelopeAddress(address);
181
182     assertEquals(expected, real);
183   }
184
185   public void testEnvelopeAddressEmptyAddress() {
186     List<String> expected = new ArrayList<String>();
187     AddressData address = new AddressData.Builder().setCountry("US").build();
188
189     List<String> real = formatInterpreter.getEnvelopeAddress(address);
190     assertEquals(expected, real);
191   }
192
193   public void testEnvelopeAddressLeadingPostPrefix() {
194     List<String> expected = new ArrayList<String>();
195     expected.add("CH-8047 Herrliberg");
196     AddressData address = new AddressData.Builder().setCountry("CH")
197         .setPostalCode("8047")
198         .setLocality("Herrliberg")
199         .build();
200
201     List<String> real = formatInterpreter.getEnvelopeAddress(address);
202     assertEquals(expected, real);
203   }
204
205   public void testSvAddress() {
206     final AddressData svAddress = new AddressData.Builder().setCountry("SV")
207         .setAdminArea("Ahuachapán")
208         .setLocality("Ahuachapán")
209         .setAddressLine1("Some Street 12")
210         .build();
211
212     List<String> expected = new ArrayList<String>();
213     expected.add("Some Street 12");
214     expected.add("Ahuachapán");
215     expected.add("Ahuachapán");
216
217     List<String> real = formatInterpreter.getEnvelopeAddress(svAddress);
218     assertEquals(expected, real);
219
220     final AddressData svAddressWithPostCode = new AddressData.Builder(svAddress)
221         .setPostalCode("CP 2101")
222         .build();
223
224     expected = new ArrayList<String>();
225     expected.add("Some Street 12");
226     expected.add("CP 2101-Ahuachapán");
227     expected.add("Ahuachapán");
228
229     real = formatInterpreter.getEnvelopeAddress(svAddressWithPostCode);
230     assertEquals(expected, real);
231   }
232 }