1a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com/*
2a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * Copyright (C) 2010 Google Inc.
3a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com *
4a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * Licensed under the Apache License, Version 2.0 (the "License");
5a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * you may not use this file except in compliance with the License.
6a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * You may obtain a copy of the License at
7a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com *
8a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * http://www.apache.org/licenses/LICENSE-2.0
9a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com *
10a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * Unless required by applicable law or agreed to in writing, software
11a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * distributed under the License is distributed on an "AS IS" BASIS,
12a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * See the License for the specific language governing permissions and
14a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com * limitations under the License.
15a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com */
16a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com
17a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.compackage com.android.i18n.addressinput;
18a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com
19a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.comimport junit.framework.TestCase;
20a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com
21a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com/**
2286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com * Spot check the standard data set for various cases of interest. This is not an exhaustive test.
23a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com */
247c138c50bd9264f99564f18dbec37b396450c1bdroubert@google.compublic class StandardAddressVerifierTest extends TestCase {
25a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com
2686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    private AddressProblems problems = new AddressProblems();
2786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    private StandardAddressVerifier verifier;
2886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
291e17a681ee8e5566384ead1588f6e6c4c8aa333aroubert@google.com    @Override
3086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    protected void setUp() {
3186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        problems.clear();
3286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier = new StandardAddressVerifier(new FieldVerifier(new ClientData(new CacheData())),
3386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                               StandardChecks.PROBLEM_MAP);
3486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
3586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
3686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testUnitedStatesOk() {
3786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("US")
3886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("CA")
3986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Mountain View")
4086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAddress("1234 Somewhere")
4186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("94025")
4286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
4386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
4486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());  // no mismatch
4586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
4686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
4786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testUnitedStatesZipMismatch() {
4886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("US")
4986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("CA")
5086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Mountain View")
5186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("12345")
5286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
5386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
5486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
5586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.MISMATCHING_VALUE,
5686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.POSTAL_CODE));
5786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
5886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
5986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testUnitedStatesNotOk() {
6086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("US")
6186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("CA")
6286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality(null)
6386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setDependentLocality("Foo Bar")
6486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("12345")
6586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
6686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
6786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
6886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.MISMATCHING_VALUE,
6986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.POSTAL_CODE));
7086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.MISSING_REQUIRED_FIELD,
7186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.LOCALITY));
7286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
7386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
7486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testChinaOk() {
7586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("CN")
7686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("Beijing Shi")
7786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Xicheng Qu")
7886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAddress("Yitiao Lu")
7986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("123456")
8086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
8186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
8286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
8386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
8486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
8586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testGermanAddress() {
8686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("DE")
8786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Berlin")
8886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAddress("Huttenstr. 50")
8986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("10553")
9086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setOrganization("BMW AG Niederkassung Berlin")
9186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setRecipient("Herr Diefendorf")
9286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
9386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
9486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
9586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
9686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
9786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // Clones address but leave city empty.
9886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        addr = new AddressData.Builder().set(addr).setLocality(null).build();
9986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
10086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
10186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.MISSING_REQUIRED_FIELD,
10286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.LOCALITY));
10386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
10486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
10586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testIrishAddress() {
10686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("IE")
10786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Dublin")
10886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("Co. Dublin")
10986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAddress("7424 118 Avenue NW")
11086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setRecipient("Conan O'Brien")
11186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
11286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
11386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
11486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
11586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
11686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // Clones address but leave county empty. This address should be valid
11786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // since county is not required.
11886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        addr = new AddressData.Builder().set(addr).setAdminArea(null).build();
11986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
12086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
12186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
12286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
12386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
12486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testChinaPostalCodeBadFormat() {
12586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("CN")
12686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("Beijing Shi")
12786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Xicheng Qu")
12886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("12345")
12986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
13086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
13186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
13286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // ensure problem is unrecognized format and problem is in POSTAL_CODE
13386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.UNRECOGNIZED_FORMAT,
13486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.POSTAL_CODE));
13586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
13686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
13786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    /**
13886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com     * If there is a postal code pattern for a certain country, and the input postal code is empty,
13986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com     * it should not be reported as bad postal code format. Whether empty postal code is ok should
14086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com     * be determined by checks for required fields.
14186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com     */
14286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testEmptyPostalCodeReportedAsGoodFormat() {
14386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // Chilean address has a postal code format pattern, but does not require
14486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // postal code. The following address is valid.
14586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("CL")
14686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAddressLine1("GUSTAVO LE PAIGE ST #159")
14786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("Atacama")
14886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("San Pedro")
14986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("")
15086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
15186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
15286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
15386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
15486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        problems.clear();
15586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
15686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // Now checks for US addresses, which requires postal code. The following
15786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // address's postal code is wrong because it misses required field, not
15886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // because it mismatches expected postal code pattern.
15986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        addr = new AddressData.Builder().setCountry("US").setPostalCode("").build();
16086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        problems.clear();
16186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
16286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
16386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.MISSING_REQUIRED_FIELD,
16486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.POSTAL_CODE));
16586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
16686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
16786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testChinaTaiwanOk() {
16886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("CN")
16986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("Taiwan")
17086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Taichung City")
17186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setDependentLocality("Situn District")
17286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAddress("12345 Yitiao Lu")
17386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("407")
17486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
17586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
17686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
17786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
17886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
17986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testChinaTaiwanUnknownDistrict() {
18086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("CN")
18186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("Taiwan")
18286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Taichung City")
18386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setDependentLocality("Foo Bar")
18486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("400")
18586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
18686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
18786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
18886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.UNKNOWN_VALUE,
18986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.DEPENDENT_LOCALITY));
19086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
19186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
19286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testStreetVerification() {
19386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // missing street address
19486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        AddressData addr = new AddressData.Builder().setCountry("US")
19586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setAdminArea("CA")
19686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setLocality("Mountain View")
19786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .setPostalCode("94025")
19886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                                    .build();
19986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
20086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertNull(addr.getAddressLine1());
20186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertNull(addr.getAddressLine2());
20286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
20386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(addr, problems);
20486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
20586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertEquals(AddressProblemType.MISSING_REQUIRED_FIELD,
20686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                     problems.getProblem(AddressField.STREET_ADDRESS));
20786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
20886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
20986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    // Tests The Bahamas' address
21086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void failingtestBahamas() {
21186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        final AddressData address =
21286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                new AddressData.Builder().setAddress("Abaco Beach Resort & Boat Habour")
21386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                         .setLocality("Treasure Cay")
21486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                         .setAdminArea("Abaco")
21586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                         .setCountry("BS")
21686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                                         .build();
21786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(address, problems);
21886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
21986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
22086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
22186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testJapan() {
22286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // added AdminArea since address verification can't infer it from Kyoto City
22386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // commented out dependent locality since address verification doesn't use it
22486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // TODO: support inference of higher levels from lower ones
22586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // TODO: add dependent locality support for japan addresses
22686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        final AddressData address =
22786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                new AddressData.Builder()
22886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setRecipient("\u5BAE\u672C \u8302")  // SHIGERU_MIYAMOTO
22986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setAddress("\u4E0A\u9CE5\u7FBD\u927E\u7ACB\u753A11\u756A\u5730")
23086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setAdminArea("\u4eac\u90fd\u5e9c")  // Kyoto prefecture, added
23186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setLocality("\u4EAC\u90FD\u5E02")  // Kyoto city
23286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        // .setDependentLocality("\u5357\u533A")
23386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setCountry("JP")
23486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setPostalCode("601-8501")
23586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .build();
23686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(address, problems);
23786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
23886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
23986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com
24086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    public void testJapanLatin() {
24186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // added AdminArea since address verification can't infer it from Kyoto City
24286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        // commented out dependent locality since address verification doesn't use it
24386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        final AddressData address =
24486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                new AddressData.Builder()
24586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setRecipient("Shigeru Miyamoto")  // SHIGERU_MIYAMOTO_ENGLISH
24686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setAddress("11-1 Kamitoba-hokotate-cho")
24786eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setAdminArea("KYOTO")  // Kyoto prefecture, added
24886eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setLocality("Kyoto")  // Kyoto city
24986eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        // .setDependentLocality("Minami-ku")
25086eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setLanguageCode("ja_Latn")
25186eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setCountry("JP")
25286eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .setPostalCode("601-8501")
25386eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com                        .build();
25486eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        verifier.verify(address, problems);
25586eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com        assertTrue(problems.toString(), problems.isEmpty());
25686eb8dc8d730348b3e9e7aa50a02781b5b7db3d1lararennie@google.com    }
257a19c5e2726c61a028b879068d1aa289e20548215jeanine@google.com}
258