Index: third_party/libaddressinput/chromium/cpp/test/rule_test.cc |
diff --git a/third_party/libaddressinput/chromium/cpp/test/rule_test.cc b/third_party/libaddressinput/chromium/cpp/test/rule_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2f903b95a1b3709c9b85f89072daba5b3c12bbf5 |
--- /dev/null |
+++ b/third_party/libaddressinput/chromium/cpp/test/rule_test.cc |
@@ -0,0 +1,186 @@ |
+// Copyright (C) 2013 Google Inc. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+#include "rule.h" |
+ |
+#include <libaddressinput/address_field.h> |
+ |
+#include <string> |
+#include <utility> |
+#include <vector> |
+ |
+#include <gtest/gtest.h> |
+ |
+#include "address_field_util.h" |
+#include "messages.h" |
+#include "region_data_constants.h" |
+ |
+namespace { |
+ |
+using i18n::addressinput::AddressField; |
+using i18n::addressinput::ADMIN_AREA; |
+using i18n::addressinput::LOCALITY; |
+using i18n::addressinput::NEWLINE; |
+using i18n::addressinput::ORGANIZATION; |
+using i18n::addressinput::POSTAL_CODE; |
+using i18n::addressinput::RECIPIENT; |
+using i18n::addressinput::RegionDataConstants; |
+using i18n::addressinput::Rule; |
+using i18n::addressinput::STREET_ADDRESS; |
+ |
+TEST(RuleTest, CopyOverwritesRule) { |
+ Rule rule; |
+ ASSERT_TRUE(rule.ParseSerializedRule("{" |
+ "\"fmt\":\"%S%Z\"," |
+ "\"state_name_type\":\"area\"," |
+ "\"zip_name_type\":\"postal\"" |
+ "}")); |
+ |
+ Rule copy; |
+ EXPECT_NE(rule.GetFormat(), copy.GetFormat()); |
+ EXPECT_NE(rule.GetAdminAreaNameMessageId(), |
+ copy.GetAdminAreaNameMessageId()); |
+ EXPECT_NE(rule.GetPostalCodeNameMessageId(), |
+ copy.GetPostalCodeNameMessageId()); |
+ |
+ copy.CopyFrom(rule); |
+ EXPECT_EQ(rule.GetFormat(), copy.GetFormat()); |
+ EXPECT_EQ(rule.GetAdminAreaNameMessageId(), |
+ copy.GetAdminAreaNameMessageId()); |
+ EXPECT_EQ(rule.GetPostalCodeNameMessageId(), |
+ copy.GetPostalCodeNameMessageId()); |
+} |
+ |
+TEST(RuleTest, ParseOverwritesRule) { |
+ Rule rule; |
+ ASSERT_TRUE(rule.ParseSerializedRule("{" |
+ "\"fmt\":\"%S%Z\"," |
+ "\"state_name_type\":\"area\"," |
+ "\"zip_name_type\":\"postal\"" |
+ "}")); |
+ EXPECT_FALSE(rule.GetFormat().empty()); |
+ EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_AREA, |
+ rule.GetAdminAreaNameMessageId()); |
+ EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_POSTAL_CODE_LABEL, |
+ rule.GetPostalCodeNameMessageId()); |
+ |
+ ASSERT_TRUE(rule.ParseSerializedRule("{" |
+ "\"fmt\":\"\"," |
+ "\"state_name_type\":\"do_si\"," |
+ "\"zip_name_type\":\"zip\"" |
+ "}")); |
+ EXPECT_TRUE(rule.GetFormat().empty()); |
+ EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_DO_SI, |
+ rule.GetAdminAreaNameMessageId()); |
+ EXPECT_EQ(IDS_LIBADDRESSINPUT_I18N_ZIP_CODE_LABEL, |
+ rule.GetPostalCodeNameMessageId()); |
+} |
+ |
+TEST(RuleTest, ParsesFormatCorrectly) { |
+ Rule rule; |
+ ASSERT_TRUE(rule.ParseSerializedRule("{\"fmt\":\"%S\"}")); |
+ ASSERT_EQ(1, rule.GetFormat().size()); |
+ EXPECT_EQ(ADMIN_AREA, rule.GetFormat()[0]); |
+} |
+ |
+TEST(RuleTest, EmptyStringIsNotValid) { |
+ Rule rule; |
+ EXPECT_FALSE(rule.ParseSerializedRule(std::string())); |
+} |
+ |
+TEST(RuleTest, EmptyDictionaryIsValid) { |
+ Rule rule; |
+ EXPECT_TRUE(rule.ParseSerializedRule("{}")); |
+} |
+ |
+// Tests for parsing the postal code name. |
+class PostalCodeNameParseTest |
+ : public testing::TestWithParam<std::pair<std::string, int> > { |
+ protected: |
+ Rule rule_; |
+}; |
+ |
+// Verifies that a postal code name is parsed correctly. |
+TEST_P(PostalCodeNameParseTest, ParsedCorrectly) { |
+ ASSERT_TRUE(rule_.ParseSerializedRule(GetParam().first)); |
+ EXPECT_EQ(GetParam().second, rule_.GetPostalCodeNameMessageId()); |
+} |
+ |
+// Test parsing all postal code names. |
+INSTANTIATE_TEST_CASE_P( |
+ AllPostalCodeNames, PostalCodeNameParseTest, |
+ testing::Values( |
+ std::make_pair("{\"zip_name_type\":\"postal\"}", |
+ IDS_LIBADDRESSINPUT_I18N_POSTAL_CODE_LABEL), |
+ std::make_pair("{\"zip_name_type\":\"zip\"}", |
+ IDS_LIBADDRESSINPUT_I18N_ZIP_CODE_LABEL))); |
+ |
+// Tests for parsing the administrative area name. |
+class AdminAreaNameParseTest |
+ : public testing::TestWithParam<std::pair<std::string, int> > { |
+ protected: |
+ Rule rule_; |
+}; |
+ |
+// Verifies that an administrative area name is parsed correctly. |
+TEST_P(AdminAreaNameParseTest, ParsedCorrectly) { |
+ ASSERT_TRUE(rule_.ParseSerializedRule(GetParam().first)); |
+ EXPECT_EQ(GetParam().second, rule_.GetAdminAreaNameMessageId()); |
+} |
+ |
+// Test parsing all administrative area names. |
+INSTANTIATE_TEST_CASE_P( |
+ AllAdminAreaNames, AdminAreaNameParseTest, |
+ testing::Values( |
+ std::make_pair("{\"state_name_type\":\"area\"}", |
+ IDS_LIBADDRESSINPUT_I18N_AREA), |
+ std::make_pair("{\"state_name_type\":\"county\"}", |
+ IDS_LIBADDRESSINPUT_I18N_COUNTY_LABEL), |
+ std::make_pair("{\"state_name_type\":\"department\"}", |
+ IDS_LIBADDRESSINPUT_I18N_DEPARTMENT), |
+ std::make_pair("{\"state_name_type\":\"district\"}", |
+ IDS_LIBADDRESSINPUT_I18N_DEPENDENT_LOCALITY_LABEL), |
+ std::make_pair("{\"state_name_type\":\"do_si\"}", |
+ IDS_LIBADDRESSINPUT_I18N_DO_SI), |
+ std::make_pair("{\"state_name_type\":\"emirate\"}", |
+ IDS_LIBADDRESSINPUT_I18N_EMIRATE), |
+ std::make_pair("{\"state_name_type\":\"island\"}", |
+ IDS_LIBADDRESSINPUT_I18N_ISLAND), |
+ std::make_pair("{\"state_name_type\":\"parish\"}", |
+ IDS_LIBADDRESSINPUT_I18N_PARISH), |
+ std::make_pair("{\"state_name_type\":\"prefecture\"}", |
+ IDS_LIBADDRESSINPUT_I18N_PREFECTURE), |
+ std::make_pair("{\"state_name_type\":\"province\"}", |
+ IDS_LIBADDRESSINPUT_I18N_PROVINCE), |
+ std::make_pair("{\"state_name_type\":\"state\"}", |
+ IDS_LIBADDRESSINPUT_I18N_STATE_LABEL))); |
+ |
+// Tests for rule parsing. |
+class RuleParseTest : public testing::TestWithParam<std::string> { |
+ protected: |
+ Rule rule_; |
+}; |
+ |
+// Verifies that a region data can be parsed successfully. |
+TEST_P(RuleParseTest, RegionDataParsedSuccessfully) { |
+ EXPECT_TRUE(rule_.ParseSerializedRule( |
+ RegionDataConstants::GetRegionData(GetParam()))); |
+} |
+ |
+// Test parsing all region data. |
+INSTANTIATE_TEST_CASE_P( |
+ AllRulesTest, RuleParseTest, |
+ testing::ValuesIn(RegionDataConstants::GetRegionCodes())); |
+ |
+} // namespace |