1f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Copyright (C) 2013 Google Inc.
2f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org//
3f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Licensed under the Apache License, Version 2.0 (the "License");
4f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// you may not use this file except in compliance with the License.
5f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// You may obtain a copy of the License at
6f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org//
7f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// http://www.apache.org/licenses/LICENSE-2.0
8f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org//
9f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Unless required by applicable law or agreed to in writing, software
10f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// distributed under the License is distributed on an "AS IS" BASIS,
11f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// See the License for the specific language governing permissions and
13f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// limitations under the License.
14f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
15f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org#include <libaddressinput/localization.h>
16f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
17e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com#include <libaddressinput/address_data.h>
18e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com#include <libaddressinput/address_field.h>
19e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com#include <libaddressinput/address_problem.h>
206c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com#include <libaddressinput/util/basictypes.h>
21e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
22f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org#include <string>
239f47fe3ed525accac995b095d408a825673a2ee1roubert@google.com#include <vector>
24f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
25f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org#include <gtest/gtest.h>
26f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
27f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org#include "grit.h"
28f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org#include "messages.h"
29f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
30f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgnamespace {
31f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
32e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comusing i18n::addressinput::AddressData;
33e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comusing i18n::addressinput::AddressField;
34f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgusing i18n::addressinput::INVALID_MESSAGE_ID;
35f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgusing i18n::addressinput::Localization;
369f47fe3ed525accac995b095d408a825673a2ee1roubert@google.com
379f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::COUNTRY;
389f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::ADMIN_AREA;
399f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::LOCALITY;
409f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::DEPENDENT_LOCALITY;
41e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comusing i18n::addressinput::SORTING_CODE;
429f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::POSTAL_CODE;
43e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comusing i18n::addressinput::STREET_ADDRESS;
44b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.orgusing i18n::addressinput::ORGANIZATION;
459f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::RECIPIENT;
469f47fe3ed525accac995b095d408a825673a2ee1roubert@google.com
479f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::MISSING_REQUIRED_FIELD;
48e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comusing i18n::addressinput::UNKNOWN_VALUE;
499f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::INVALID_FORMAT;
509f47fe3ed525accac995b095d408a825673a2ee1roubert@google.comusing i18n::addressinput::MISMATCHING_VALUE;
51e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comusing i18n::addressinput::USES_P_O_BOX;
52f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
53f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Tests for Localization object.
54f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgclass LocalizationTest : public testing::TestWithParam<int> {
55f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org protected:
566c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com  LocalizationTest() {}
57f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org  Localization localization_;
586c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com
596c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com private:
606c42355ce8c105bbadf57deb999c777b5c49df59roubert@google.com  DISALLOW_COPY_AND_ASSIGN(LocalizationTest);
61f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org};
62f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
63f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Verifies that a custom message getter can be used.
64947ce24396bbb66ec5fcd14a73f85f4e32c3dcc0rouslan@chromium.orgstatic const char kValidMessage[] = "Data";
65f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgstd::string GetValidMessage(int message_id) { return kValidMessage; }
66f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgTEST_P(LocalizationTest, ValidStringGetterCanBeUsed) {
670286d15a542e34d770d366f84fbc8c1d2116d970rouslan@chromium.org  localization_.SetGetter(&GetValidMessage);
68f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org  EXPECT_EQ(kValidMessage, localization_.GetString(GetParam()));
69f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org}
70f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
71f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Verifies that the default language for messages does not have empty strings.
72f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgTEST_P(LocalizationTest, DefaultStringIsNotEmpty) {
73f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org  EXPECT_FALSE(localization_.GetString(GetParam()).empty());
74f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org}
75f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
7691de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org// Verifies that the messages do not have newlines.
7791de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.orgTEST_P(LocalizationTest, NoNewline) {
7891de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org  EXPECT_EQ(std::string::npos, localization_.GetString(GetParam()).find('\n'));
7991de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org}
8091de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org
8191de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org// Verifies that the messages do not have double spaces.
8291de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.orgTEST_P(LocalizationTest, NoDoubleSpace) {
8391de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org  EXPECT_EQ(std::string::npos,
8491de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org            localization_.GetString(GetParam()).find(std::string(2U, ' ')));
8591de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org}
8691de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org
87f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Tests all message identifiers.
88f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgINSTANTIATE_TEST_CASE_P(
89f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org    AllMessages, LocalizationTest,
90e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com    testing::Values(
91e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_COUNTRY_OR_REGION_LABEL,
92e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_LOCALITY_LABEL,
93e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_ADDRESS_LINE_1_LABEL,
94e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_POSTAL_CODE_LABEL,
95e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_ZIP_CODE_LABEL,
96e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_AREA,
97e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_COUNTY,
98e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_DEPARTMENT,
99e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_DISTRICT,
100e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_DO_SI,
101e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_EMIRATE,
102e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_ISLAND,
103e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_PARISH,
104e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_PREFECTURE,
105e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_PROVINCE,
106e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_STATE,
107b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org        IDS_LIBADDRESSINPUT_ORGANIZATION_LABEL,
108e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_RECIPIENT_LABEL,
109e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISSING_REQUIRED_FIELD,
110e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISSING_REQUIRED_POSTAL_CODE_EXAMPLE_AND_URL,
111e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISSING_REQUIRED_POSTAL_CODE_EXAMPLE,
112e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISSING_REQUIRED_ZIP_CODE_EXAMPLE_AND_URL,
113e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISSING_REQUIRED_ZIP_CODE_EXAMPLE,
114e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNKNOWN_VALUE,
115e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNRECOGNIZED_FORMAT_POSTAL_CODE_EXAMPLE_AND_URL,
116e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNRECOGNIZED_FORMAT_POSTAL_CODE_EXAMPLE,
117e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNRECOGNIZED_FORMAT_POSTAL_CODE,
118e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNRECOGNIZED_FORMAT_ZIP_CODE_EXAMPLE_AND_URL,
119e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNRECOGNIZED_FORMAT_ZIP_CODE_EXAMPLE,
120e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_UNRECOGNIZED_FORMAT_ZIP,
121e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISMATCHING_VALUE_POSTAL_CODE_URL,
122e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISMATCHING_VALUE_POSTAL_CODE,
123e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISMATCHING_VALUE_ZIP_URL,
124e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_MISMATCHING_VALUE_ZIP,
125e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com        IDS_LIBADDRESSINPUT_PO_BOX_FORBIDDEN_VALUE));
126f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
127f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// Verifies that an invalid message identifier results in an empty string in the
128f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org// default configuration.
129f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.orgTEST_F(LocalizationTest, InvalidMessageIsEmptyString) {
130f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org  EXPECT_TRUE(localization_.GetString(INVALID_MESSAGE_ID).empty());
131f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org}
132f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org
133e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, MissingRequiredPostalCode) {
134e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
135e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
136e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "CH";
137e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("You must provide a postal code, for example 2544."
138e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your postal code? Find it out"
139e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"http://www.post.ch/db/owa/pv_plz_pack/pr_main\">"
140e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "here</a>.",
141e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
142e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, true, true));
14365a674171223dd2912f5e07bac3662e017fa1621rouslan@chromium.org  EXPECT_EQ("You must provide a postal code, for example 2544.",
144e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
145e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, true, false));
146e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("You can't leave this empty.",
147e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
148e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, false, false));
149e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("You can't leave this empty.",
150e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
151e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, false, true));
152e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
153e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
154e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, MissingRequiredZipCode) {
155e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
156e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
157e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "US";
158e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("You must provide a ZIP code, for example 95014."
159e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your ZIP code? Find it out"
160e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"https://tools.usps.com/go/ZipLookupAction!"
161e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "input.action\">here</a>.",
162e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
163e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, true, true));
16465a674171223dd2912f5e07bac3662e017fa1621rouslan@chromium.org  EXPECT_EQ("You must provide a ZIP code, for example 95014.",
165e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
166e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, true, false));
167e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("You can't leave this empty.",
168e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
169e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISSING_REQUIRED_FIELD, false, false));
170e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("You can't leave this empty.",
171e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
172e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            MISSING_REQUIRED_FIELD, false, true));
173e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
174e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
175e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, MissingRequiredOtherFields) {
176e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
177e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
178e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "US";
179e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  std::vector<AddressField> other_fields;
180e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(COUNTRY);
181e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(ADMIN_AREA);
182e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(LOCALITY);
183e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(DEPENDENT_LOCALITY);
184e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(SORTING_CODE);
185e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(STREET_ADDRESS);
186b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  other_fields.push_back(ORGANIZATION);
187e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(RECIPIENT);
188e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  for (std::vector<AddressField>::iterator it = other_fields.begin();
189e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com       it != other_fields.end(); it++) {
190e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com    EXPECT_EQ("You can't leave this empty.",
191e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
192e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, MISSING_REQUIRED_FIELD, true, true));
193e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com    EXPECT_EQ("You can't leave this empty.",
194e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
195e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, MISSING_REQUIRED_FIELD, true, false));
196e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com    EXPECT_EQ("You can't leave this empty.",
197e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
198e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, MISSING_REQUIRED_FIELD, false, false));
199e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com    EXPECT_EQ("You can't leave this empty.",
200e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
201e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, MISSING_REQUIRED_FIELD, false, true));
202e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  }
203e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
204e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
205e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, UnknownValueOtherFields) {
206e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
207e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
208e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "US";
209e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.administrative_area = "bad admin area";
210e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.locality = "bad locality";
211e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.dependent_locality = "bad dependent locality";
212e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.sorting_code = "bad sorting code";
213e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  std::vector<std::string> address_line;
214e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address_line.push_back("bad address line 1");
215e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address_line.push_back("bad address line 2");
216e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.address_line = address_line;
217b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  address.organization = "bad organization";
218e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.recipient = "bad recipient";
219e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("US "
220e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
221e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
222e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, COUNTRY, UNKNOWN_VALUE, true, true));
223e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("US "
224e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
225e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
226e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, COUNTRY, UNKNOWN_VALUE, true, false));
227e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("US "
228e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
229e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
230e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, COUNTRY, UNKNOWN_VALUE, false, false));
231e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("US "
232e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
233e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
234e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, COUNTRY, UNKNOWN_VALUE, false, true));
235e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad admin area "
236e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
237e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
238e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, ADMIN_AREA, UNKNOWN_VALUE, true, true));
239e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad admin area "
240e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
241e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
242e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, ADMIN_AREA, UNKNOWN_VALUE, true, false));
243e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad admin area "
244e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
245e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
246e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, ADMIN_AREA, UNKNOWN_VALUE, false, false));
247e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad admin area "
248e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
249e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
250e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, ADMIN_AREA, UNKNOWN_VALUE, false, true));
251e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad locality "
252e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
253e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
254e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, LOCALITY, UNKNOWN_VALUE, true, true));
255e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad locality "
256e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
257e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
258e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, LOCALITY, UNKNOWN_VALUE, true, false));
259e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad locality "
260e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
261e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
262e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, LOCALITY, UNKNOWN_VALUE, false, false));
263e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad locality "
264e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
265e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
266e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, LOCALITY, UNKNOWN_VALUE, false, true));
267e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad dependent locality "
268e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
269e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
270e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, DEPENDENT_LOCALITY, UNKNOWN_VALUE, true, true));
271e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad dependent locality "
272e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
273e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
274e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, DEPENDENT_LOCALITY, UNKNOWN_VALUE, true, false));
275e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad dependent locality "
276e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
277e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
278e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, DEPENDENT_LOCALITY, UNKNOWN_VALUE, false, false));
279e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad dependent locality "
280e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
281e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
282e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, DEPENDENT_LOCALITY, UNKNOWN_VALUE, false, true));
283e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad sorting code "
284e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
285e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
286e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, SORTING_CODE, UNKNOWN_VALUE, true, true));
287e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad sorting code "
288e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
289e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
290e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, SORTING_CODE, UNKNOWN_VALUE, true, false));
291e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad sorting code "
292e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
293e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
294e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, SORTING_CODE, UNKNOWN_VALUE, false, false));
295e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad sorting code "
296e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
297e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
298e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, SORTING_CODE, UNKNOWN_VALUE, false, true));
299e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad address line 1 "
300e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
301e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
302e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, STREET_ADDRESS, UNKNOWN_VALUE, true, true));
303e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad address line 1 "
304e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
305e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
306e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, STREET_ADDRESS, UNKNOWN_VALUE, true, false));
307e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad address line 1 "
308e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
309e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
310e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, STREET_ADDRESS, UNKNOWN_VALUE, false, false));
311e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad address line 1 "
312e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
313e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
314e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, STREET_ADDRESS, UNKNOWN_VALUE, false, true));
315b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  EXPECT_EQ("bad organization "
316b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            "is not recognized as a known value for this field.",
317b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            localization.GetErrorMessage(
318b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org                address, ORGANIZATION, UNKNOWN_VALUE, true, true));
319b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  EXPECT_EQ("bad organization "
320b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            "is not recognized as a known value for this field.",
321b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            localization.GetErrorMessage(
322b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org                address, ORGANIZATION, UNKNOWN_VALUE, true, false));
323b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  EXPECT_EQ("bad organization "
324b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            "is not recognized as a known value for this field.",
325b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            localization.GetErrorMessage(
326b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org                address, ORGANIZATION, UNKNOWN_VALUE, false, false));
327b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  EXPECT_EQ("bad organization "
328b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            "is not recognized as a known value for this field.",
329b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org            localization.GetErrorMessage(
330b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org                address, ORGANIZATION, UNKNOWN_VALUE, false, true));
331e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad recipient "
332e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
333e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
334e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, RECIPIENT, UNKNOWN_VALUE, true, true));
335e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad recipient "
336e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
337e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
338e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, RECIPIENT, UNKNOWN_VALUE, true, false));
339e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad recipient "
340e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
341e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
342e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, RECIPIENT, UNKNOWN_VALUE, false, false));
343e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("bad recipient "
344e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "is not recognized as a known value for this field.",
345e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(
346e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                address, RECIPIENT, UNKNOWN_VALUE, false, true));
347e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
348e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
349e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, InvalidFormatPostalCode) {
350e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
351e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
352e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "CH";
353e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This postal code format is not recognized. Example "
354e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            "of a valid postal code: 2544."
355e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your postal code? Find it out"
356e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"http://www.post.ch/db/owa/pv_plz_pack/pr_main\">"
357e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "here</a>.",
358e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
359e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, true, true));
360e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This postal code format is not recognized. Example "
36165a674171223dd2912f5e07bac3662e017fa1621rouslan@chromium.org            "of a valid postal code: 2544.",
362e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
363e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, true, false));
364e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("This postal code format is not recognized.",
365e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
366e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, false, false));
367e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("This postal code format is not recognized.",
368e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
369e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, false, true));
370e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
371e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
372e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, InvalidFormatZipCode) {
373e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
374e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
375e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "US";
376e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This ZIP code format is not recognized. Example of "
377e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            "a valid ZIP code: 95014."
378e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your ZIP code? Find it out"
379e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"https://tools.usps.com/go/ZipLookupAction!"
380e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "input.action\">here</a>.",
381e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
382e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, true, true));
383e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This ZIP code format is not recognized. Example of "
38465a674171223dd2912f5e07bac3662e017fa1621rouslan@chromium.org            "a valid ZIP code: 95014.",
385e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
386e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, true, false));
387e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("This ZIP code format is not recognized.",
388e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
389e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, false, false));
390e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  EXPECT_EQ("This ZIP code format is not recognized.",
391e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
392e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         INVALID_FORMAT, false, true));
393e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
394e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
395e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, MismatchingValuePostalCode) {
396e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
397e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
398e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "CH";
399e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This postal code does not appear to match the rest "
400e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            "of this address."
401e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your postal code? Find it out"
402e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"http://www.post.ch/db/owa/pv_plz_pack/pr_main\">"
403e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "here</a>.",
404e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
405e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, true, true));
406e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This postal code does not appear to match the rest "
407e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "of this address.",
408e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
409e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, true, false));
410e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This postal code does not appear to match the rest "
411e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "of this address.",
412e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
413e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, false, false));
414e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This postal code does not appear to match the rest "
415e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            "of this address."
416e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your postal code? Find it out"
417e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"http://www.post.ch/db/owa/pv_plz_pack/pr_main\">"
418e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "here</a>.",
419e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
420e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, false, true));
421e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
422e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
423e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, MismatchingValueZipCode) {
424e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
425e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
426e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "US";
427e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This ZIP code does not appear to match the rest of "
428e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            "this address."
429e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your ZIP code? Find it out"
430e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"https://tools.usps.com/go/ZipLookupAction!"
431e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "input.action\">here</a>.",
432e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
433e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, true, true));
434e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This ZIP code does not appear to match the rest of "
435e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "this address.",
436e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
437e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, true, false));
438e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This ZIP code does not appear to match the rest of "
439e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "this address.",
440e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
441e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, false, false));
442e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com  EXPECT_EQ("This ZIP code does not appear to match the rest of "
443e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            "this address."
444e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " Don't know your ZIP code? Find it out"
445e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com            " <a href=\"https://tools.usps.com/go/ZipLookupAction!"
446e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            "input.action\">here</a>.",
447e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com            localization.GetErrorMessage(address, POSTAL_CODE,
448e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                                         MISMATCHING_VALUE, false, true));
449e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
450e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
451e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.comTEST(LocalizationGetErrorMessageTest, UsesPOBoxOtherFields) {
452e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  Localization localization;
453e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  AddressData address;
454e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  address.region_code = "US";
455e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  std::vector<AddressField> other_fields;
456e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(COUNTRY);
457e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(ADMIN_AREA);
458e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(LOCALITY);
459e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(DEPENDENT_LOCALITY);
460e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(SORTING_CODE);
461e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(STREET_ADDRESS);
462b52a2aeb63a28914850f3ed81cd7fd26ecdd4cdcrouslan@chromium.org  other_fields.push_back(ORGANIZATION);
463e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  other_fields.push_back(RECIPIENT);
464e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  for (std::vector<AddressField>::iterator it = other_fields.begin();
465e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com       it != other_fields.end(); it++) {
466e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com    EXPECT_EQ("This address line appears to contain a post "
467e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com              "office box. Please use a street"
46891de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org              " or building address.",
469e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
470e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, USES_P_O_BOX, true, true));
471e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com    EXPECT_EQ("This address line appears to contain a post "
472e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com              "office box. Please use a street"
47391de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org              " or building address.",
474e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
475e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, USES_P_O_BOX, true, false));
476e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com    EXPECT_EQ("This address line appears to contain a post "
477e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com              "office box. Please use a street"
47891de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org              " or building address.",
479e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
480e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, USES_P_O_BOX, false, false));
481e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com    EXPECT_EQ("This address line appears to contain a post "
482e1083998394470811ecc73cc3263b0af82b0a7e1roubert@google.com              "office box. Please use a street"
48391de79c2a6ae5ca94594a503020ee1f08c1e559frouslan@chromium.org              " or building address.",
484e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com              localization.GetErrorMessage(
485e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com                  address, *it, USES_P_O_BOX, false, true));
486e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com  }
487e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com}
488e66bf12636bf12067bd8b199b8e6c1035315d2aakeghani@google.com
489f80a0c70943fe82b268e14c4173a7f1ee2304ecbrouslan@chromium.org}  // namespace
490