OLD | NEW |
1 // Copyright (C) 2013 Google Inc. | 1 // Copyright (C) 2013 Google Inc. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 23 matching lines...) Expand all Loading... |
34 using i18n::addressinput::NEWLINE; | 34 using i18n::addressinput::NEWLINE; |
35 using i18n::addressinput::ORGANIZATION; | 35 using i18n::addressinput::ORGANIZATION; |
36 using i18n::addressinput::POSTAL_CODE; | 36 using i18n::addressinput::POSTAL_CODE; |
37 using i18n::addressinput::RECIPIENT; | 37 using i18n::addressinput::RECIPIENT; |
38 using i18n::addressinput::RegionDataConstants; | 38 using i18n::addressinput::RegionDataConstants; |
39 using i18n::addressinput::Rule; | 39 using i18n::addressinput::Rule; |
40 using i18n::addressinput::STREET_ADDRESS; | 40 using i18n::addressinput::STREET_ADDRESS; |
41 | 41 |
42 TEST(RuleTest, CopyOverwritesRule) { | 42 TEST(RuleTest, CopyOverwritesRule) { |
43 Rule rule; | 43 Rule rule; |
44 ASSERT_TRUE(rule.ParseSerializedRule("{" | 44 ASSERT_TRUE(rule.ParseSerializedRule( |
45 "\"fmt\":\"%S%Z\"," | 45 "{" |
46 "\"state_name_type\":\"area\"," | 46 "\"fmt\":\"%S%Z\"," |
47 "\"zip_name_type\":\"postal\"," | 47 "\"require\":\"SZ\"," |
48 "\"sub_keys\":\"CA~NY~TX\"," | 48 "\"state_name_type\":\"area\"," |
49 "\"lang\":\"en\"," | 49 "\"zip_name_type\":\"postal\"," |
50 "\"languages\":\"en~fr\"" | 50 "\"sub_keys\":\"CA~NY~TX\"," |
51 "}")); | 51 "\"lang\":\"en\"," |
| 52 "\"languages\":\"en~fr\"," |
| 53 "\"zipex\":\"95014,22162-1010\"," |
| 54 "\"zip\":\"\\\\d{5}([ \\\\-]\\\\d{4})?\"," |
| 55 "\"posturl\":\"https://tools.usps.com/go/ZipLookupAction!input.action\"" |
| 56 "}")); |
52 | 57 |
53 Rule copy; | 58 Rule copy; |
54 EXPECT_NE(rule.GetFormat(), copy.GetFormat()); | 59 EXPECT_NE(rule.GetFormat(), copy.GetFormat()); |
| 60 EXPECT_NE(rule.GetRequired(), copy.GetRequired()); |
55 EXPECT_NE(rule.GetSubKeys(), copy.GetSubKeys()); | 61 EXPECT_NE(rule.GetSubKeys(), copy.GetSubKeys()); |
56 EXPECT_NE(rule.GetLanguages(), copy.GetLanguages()); | 62 EXPECT_NE(rule.GetLanguages(), copy.GetLanguages()); |
57 EXPECT_NE(rule.GetLanguage(), copy.GetLanguage()); | 63 EXPECT_NE(rule.GetLanguage(), copy.GetLanguage()); |
| 64 EXPECT_NE(rule.GetPostalCodeExamples(), copy.GetPostalCodeExamples()); |
| 65 EXPECT_NE(rule.GetPostalCodeFormat(), copy.GetPostalCodeFormat()); |
| 66 EXPECT_NE(rule.GetPostalCodesUrl(), copy.GetPostalCodesUrl()); |
58 EXPECT_NE(rule.GetAdminAreaNameMessageId(), | 67 EXPECT_NE(rule.GetAdminAreaNameMessageId(), |
59 copy.GetAdminAreaNameMessageId()); | 68 copy.GetAdminAreaNameMessageId()); |
60 EXPECT_NE(rule.GetPostalCodeNameMessageId(), | 69 EXPECT_NE(rule.GetPostalCodeNameMessageId(), |
61 copy.GetPostalCodeNameMessageId()); | 70 copy.GetPostalCodeNameMessageId()); |
62 | 71 |
63 copy.CopyFrom(rule); | 72 copy.CopyFrom(rule); |
64 EXPECT_EQ(rule.GetFormat(), copy.GetFormat()); | 73 EXPECT_EQ(rule.GetFormat(), copy.GetFormat()); |
| 74 EXPECT_EQ(rule.GetRequired(), copy.GetRequired()); |
65 EXPECT_EQ(rule.GetSubKeys(), copy.GetSubKeys()); | 75 EXPECT_EQ(rule.GetSubKeys(), copy.GetSubKeys()); |
66 EXPECT_EQ(rule.GetLanguages(), copy.GetLanguages()); | 76 EXPECT_EQ(rule.GetLanguages(), copy.GetLanguages()); |
67 EXPECT_EQ(rule.GetLanguage(), copy.GetLanguage()); | 77 EXPECT_EQ(rule.GetLanguage(), copy.GetLanguage()); |
| 78 EXPECT_EQ(rule.GetPostalCodeExamples(), copy.GetPostalCodeExamples()); |
| 79 EXPECT_EQ(rule.GetPostalCodeFormat(), copy.GetPostalCodeFormat()); |
| 80 EXPECT_EQ(rule.GetPostalCodesUrl(), copy.GetPostalCodesUrl()); |
68 EXPECT_EQ(rule.GetAdminAreaNameMessageId(), | 81 EXPECT_EQ(rule.GetAdminAreaNameMessageId(), |
69 copy.GetAdminAreaNameMessageId()); | 82 copy.GetAdminAreaNameMessageId()); |
70 EXPECT_EQ(rule.GetPostalCodeNameMessageId(), | 83 EXPECT_EQ(rule.GetPostalCodeNameMessageId(), |
71 copy.GetPostalCodeNameMessageId()); | 84 copy.GetPostalCodeNameMessageId()); |
72 } | 85 } |
73 | 86 |
74 TEST(RuleTest, ParseOverwritesRule) { | 87 TEST(RuleTest, ParseOverwritesRule) { |
75 Rule rule; | 88 Rule rule; |
76 ASSERT_TRUE(rule.ParseSerializedRule("{" | 89 ASSERT_TRUE(rule.ParseSerializedRule( |
77 "\"fmt\":\"%S%Z\"," | 90 "{" |
78 "\"state_name_type\":\"area\"," | 91 "\"fmt\":\"%S%Z\"," |
79 "\"zip_name_type\":\"postal\"," | 92 "\"require\":\"SZ\"," |
80 "\"sub_keys\":\"CA~NY~TX\"," | 93 "\"state_name_type\":\"area\"," |
81 "\"lang\":\"en\"," | 94 "\"zip_name_type\":\"postal\"," |
82 "\"languages\":\"en~fr\"" | 95 "\"sub_keys\":\"CA~NY~TX\"," |
83 "}")); | 96 "\"lang\":\"en\"," |
| 97 "\"languages\":\"en~fr\"," |
| 98 "\"zipex\":\"95014,22162-1010\"," |
| 99 "\"zip\":\"\\\\d{5}([ \\\\-]\\\\d{4})?\"," |
| 100 "\"posturl\":\"https://tools.usps.com/go/ZipLookupAction!input.action\"" |
| 101 "}")); |
84 EXPECT_FALSE(rule.GetFormat().empty()); | 102 EXPECT_FALSE(rule.GetFormat().empty()); |
| 103 EXPECT_FALSE(rule.GetRequired().empty()); |
85 EXPECT_FALSE(rule.GetSubKeys().empty()); | 104 EXPECT_FALSE(rule.GetSubKeys().empty()); |
86 EXPECT_FALSE(rule.GetLanguages().empty()); | 105 EXPECT_FALSE(rule.GetLanguages().empty()); |
87 EXPECT_FALSE(rule.GetLanguage().empty()); | 106 EXPECT_FALSE(rule.GetLanguage().empty()); |
| 107 EXPECT_FALSE(rule.GetPostalCodeExamples().empty()); |
| 108 EXPECT_FALSE(rule.GetPostalCodeFormat().empty()); |
| 109 EXPECT_FALSE(rule.GetPostalCodesUrl().empty()); |
88 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_AREA, | 110 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_AREA, |
89 rule.GetAdminAreaNameMessageId()); | 111 rule.GetAdminAreaNameMessageId()); |
90 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_POSTAL_CODE_LABEL, | 112 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_POSTAL_CODE_LABEL, |
91 rule.GetPostalCodeNameMessageId()); | 113 rule.GetPostalCodeNameMessageId()); |
92 | 114 |
93 ASSERT_TRUE(rule.ParseSerializedRule("{" | 115 ASSERT_TRUE(rule.ParseSerializedRule( |
94 "\"fmt\":\"\"," | 116 "{" |
95 "\"state_name_type\":\"do_si\"," | 117 "\"fmt\":\"\"," |
96 "\"zip_name_type\":\"zip\"," | 118 "\"require\":\"\"," |
97 "\"sub_keys\":\"\"," | 119 "\"state_name_type\":\"do_si\"," |
98 "\"lang\":\"\"," | 120 "\"zip_name_type\":\"zip\"," |
99 "\"languages\":\"\"" | 121 "\"sub_keys\":\"\"," |
100 "}")); | 122 "\"lang\":\"\"," |
| 123 "\"languages\":\"\"," |
| 124 "\"zipex\":\"\"," |
| 125 "\"zip\":\"\"," |
| 126 "\"posturl\":\"\"" |
| 127 "}")); |
101 EXPECT_TRUE(rule.GetFormat().empty()); | 128 EXPECT_TRUE(rule.GetFormat().empty()); |
| 129 EXPECT_TRUE(rule.GetRequired().empty()); |
102 EXPECT_TRUE(rule.GetSubKeys().empty()); | 130 EXPECT_TRUE(rule.GetSubKeys().empty()); |
103 EXPECT_TRUE(rule.GetLanguages().empty()); | 131 EXPECT_TRUE(rule.GetLanguages().empty()); |
104 EXPECT_TRUE(rule.GetLanguage().empty()); | 132 EXPECT_TRUE(rule.GetLanguage().empty()); |
| 133 EXPECT_TRUE(rule.GetPostalCodeExamples().empty()); |
| 134 EXPECT_TRUE(rule.GetPostalCodeFormat().empty()); |
| 135 EXPECT_TRUE(rule.GetPostalCodesUrl().empty()); |
105 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_DO_SI, | 136 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_DO_SI, |
106 rule.GetAdminAreaNameMessageId()); | 137 rule.GetAdminAreaNameMessageId()); |
107 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_ZIP_CODE_LABEL, | 138 EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_ZIP_CODE_LABEL, |
108 rule.GetPostalCodeNameMessageId()); | 139 rule.GetPostalCodeNameMessageId()); |
109 } | 140 } |
110 | 141 |
111 TEST(RuleTest, ParsesFormatCorrectly) { | 142 TEST(RuleTest, ParsesFormatCorrectly) { |
112 Rule rule; | 143 Rule rule; |
113 ASSERT_TRUE(rule.ParseSerializedRule("{\"fmt\":\"%S\"}")); | 144 ASSERT_TRUE(rule.ParseSerializedRule("{\"fmt\":\"%S\"}")); |
114 ASSERT_EQ(1, rule.GetFormat().size()); | 145 ASSERT_EQ(1, rule.GetFormat().size()); |
115 EXPECT_EQ(ADMIN_AREA, rule.GetFormat()[0]); | 146 EXPECT_EQ(ADMIN_AREA, rule.GetFormat()[0]); |
116 } | 147 } |
117 | 148 |
| 149 TEST(RuleTest, ParsesRequiredFieldsCorrectly) { |
| 150 Rule rule; |
| 151 ASSERT_TRUE(rule.ParseSerializedRule("{\"require\":\"S\"}")); |
| 152 ASSERT_EQ(1, rule.GetRequired().size()); |
| 153 EXPECT_EQ(ADMIN_AREA, rule.GetRequired()[0]); |
| 154 } |
| 155 |
118 TEST(RuleTest, ParsesSubKeysCorrectly) { | 156 TEST(RuleTest, ParsesSubKeysCorrectly) { |
119 Rule rule; | 157 Rule rule; |
120 ASSERT_TRUE(rule.ParseSerializedRule("{\"sub_keys\":\"CA~NY~TX\"}")); | 158 ASSERT_TRUE(rule.ParseSerializedRule("{\"sub_keys\":\"CA~NY~TX\"}")); |
121 std::vector<std::string> expected; | 159 std::vector<std::string> expected; |
122 expected.push_back("CA"); | 160 expected.push_back("CA"); |
123 expected.push_back("NY"); | 161 expected.push_back("NY"); |
124 expected.push_back("TX"); | 162 expected.push_back("TX"); |
125 EXPECT_EQ(expected, rule.GetSubKeys()); | 163 EXPECT_EQ(expected, rule.GetSubKeys()); |
126 } | 164 } |
127 | 165 |
128 TEST(RuleTest, ParsesLanguageCorrectly) { | 166 TEST(RuleTest, ParsesLanguageCorrectly) { |
129 Rule rule; | 167 Rule rule; |
130 ASSERT_TRUE(rule.ParseSerializedRule("{\"lang\":\"en\"}")); | 168 ASSERT_TRUE(rule.ParseSerializedRule("{\"lang\":\"en\"}")); |
131 EXPECT_EQ("en", rule.GetLanguage()); | 169 EXPECT_EQ("en", rule.GetLanguage()); |
132 } | 170 } |
133 | 171 |
134 TEST(RuleTest, ParsesLanguagesCorrectly) { | 172 TEST(RuleTest, ParsesLanguagesCorrectly) { |
135 Rule rule; | 173 Rule rule; |
136 ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"de~fr~it\"}")); | 174 ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"de~fr~it\"}")); |
137 std::vector<std::string> expected; | 175 std::vector<std::string> expected; |
138 expected.push_back("de"); | 176 expected.push_back("de"); |
139 expected.push_back("fr"); | 177 expected.push_back("fr"); |
140 expected.push_back("it"); | 178 expected.push_back("it"); |
141 EXPECT_EQ(expected, rule.GetLanguages()); | 179 EXPECT_EQ(expected, rule.GetLanguages()); |
142 } | 180 } |
143 | 181 |
| 182 TEST(RuleTest, ParsesPostalCodeExamplesCorrectly) { |
| 183 Rule rule; |
| 184 ASSERT_TRUE(rule.ParseSerializedRule("{\"zipex\":\"95014,22162-1010\"}")); |
| 185 EXPECT_EQ("95014,22162-1010", rule.GetPostalCodeExamples()); |
| 186 } |
| 187 |
| 188 TEST(RuleTest, ParsesPostalCodeFormatCorrectly) { |
| 189 Rule rule; |
| 190 ASSERT_TRUE(rule.ParseSerializedRule( |
| 191 "{" |
| 192 "\"zip\":\"\\\\d{5}([ \\\\-]\\\\d{4})?\"" |
| 193 "}")); |
| 194 EXPECT_EQ("\\d{5}([ \\-]\\d{4})?", rule.GetPostalCodeFormat()); |
| 195 } |
| 196 |
| 197 TEST(RuleTest, ParsesPostalCodesUrlCorrectly) { |
| 198 Rule rule; |
| 199 ASSERT_TRUE(rule.ParseSerializedRule( |
| 200 "{" |
| 201 "\"posturl\":\"https://tools.usps.com/go/ZipLookupAction!input.action\"" |
| 202 "}")); |
| 203 EXPECT_EQ("https://tools.usps.com/go/ZipLookupAction!input.action", |
| 204 rule.GetPostalCodesUrl()); |
| 205 } |
| 206 |
144 TEST(RuleTest, EmptyStringIsNotValid) { | 207 TEST(RuleTest, EmptyStringIsNotValid) { |
145 Rule rule; | 208 Rule rule; |
146 EXPECT_FALSE(rule.ParseSerializedRule(std::string())); | 209 EXPECT_FALSE(rule.ParseSerializedRule(std::string())); |
147 } | 210 } |
148 | 211 |
149 TEST(RuleTest, EmptyDictionaryIsValid) { | 212 TEST(RuleTest, EmptyDictionaryIsValid) { |
150 Rule rule; | 213 Rule rule; |
151 EXPECT_TRUE(rule.ParseSerializedRule("{}")); | 214 EXPECT_TRUE(rule.ParseSerializedRule("{}")); |
152 } | 215 } |
153 | 216 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 EXPECT_TRUE(rule_.ParseSerializedRule( | 287 EXPECT_TRUE(rule_.ParseSerializedRule( |
225 RegionDataConstants::GetRegionData(GetParam()))); | 288 RegionDataConstants::GetRegionData(GetParam()))); |
226 } | 289 } |
227 | 290 |
228 // Test parsing all region data. | 291 // Test parsing all region data. |
229 INSTANTIATE_TEST_CASE_P( | 292 INSTANTIATE_TEST_CASE_P( |
230 AllRulesTest, RuleParseTest, | 293 AllRulesTest, RuleParseTest, |
231 testing::ValuesIn(RegionDataConstants::GetRegionCodes())); | 294 testing::ValuesIn(RegionDataConstants::GetRegionCodes())); |
232 | 295 |
233 } // namespace | 296 } // namespace |
OLD | NEW |