aboutsummaryrefslogtreecommitdiff
path: root/cpp/test/rule_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/test/rule_test.cc')
-rw-r--r--cpp/test/rule_test.cc123
1 files changed, 108 insertions, 15 deletions
diff --git a/cpp/test/rule_test.cc b/cpp/test/rule_test.cc
index 7c5a0c5..5f61ce4 100644
--- a/cpp/test/rule_test.cc
+++ b/cpp/test/rule_test.cc
@@ -46,21 +46,24 @@ using i18n::addressinput::STREET_ADDRESS;
TEST(RuleTest, CopyOverwritesRule) {
Rule rule;
- ASSERT_TRUE(rule.ParseSerializedRule("{"
- "\"fmt\":\"%S%Z\","
- "\"lfmt\":\"%Z%S\","
- "\"id\":\"data/XA\","
- "\"name\":\"Le Test\","
- "\"lname\":\"Testistan\","
- "\"require\":\"AC\","
- "\"sub_keys\":\"aa~bb~cc\","
- "\"languages\":\"en~fr\","
- "\"zip\":\"\\\\d{3}\","
- "\"state_name_type\":\"area\","
- "\"zip_name_type\":\"postal\","
- "\"zipex\":\"1234\","
- "\"posturl\":\"http://www.testpost.com\""
- "}"));
+ ASSERT_TRUE(rule.ParseSerializedRule(
+ "{"
+ "\"fmt\":\"%S%Z\","
+ "\"lfmt\":\"%Z%S\","
+ "\"id\":\"data/XA\","
+ "\"name\":\"Le Test\","
+ "\"lname\":\"Testistan\","
+ "\"require\":\"AC\","
+ "\"sub_keys\":\"aa~bb~cc\","
+ "\"languages\":\"en~fr\","
+ "\"zip\":\"\\\\d{3}\","
+ "\"state_name_type\":\"area\","
+ "\"locality_name_type\":\"post_town\","
+ "\"sublocality_name_type\":\"neighborhood\","
+ "\"zip_name_type\":\"postal\","
+ "\"zipex\":\"1234\","
+ "\"posturl\":\"http://www.testpost.com\""
+ "}"));
Rule copy;
EXPECT_NE(rule.GetFormat(), copy.GetFormat());
@@ -73,6 +76,10 @@ TEST(RuleTest, CopyOverwritesRule) {
copy.GetAdminAreaNameMessageId());
EXPECT_NE(rule.GetPostalCodeNameMessageId(),
copy.GetPostalCodeNameMessageId());
+ EXPECT_NE(rule.GetLocalityNameMessageId(),
+ copy.GetLocalityNameMessageId());
+ EXPECT_NE(rule.GetSublocalityNameMessageId(),
+ copy.GetSublocalityNameMessageId());
EXPECT_NE(rule.GetName(), copy.GetName());
EXPECT_NE(rule.GetLatinName(), copy.GetLatinName());
EXPECT_NE(rule.GetPostalCodeExample(), copy.GetPostalCodeExample());
@@ -92,6 +99,10 @@ TEST(RuleTest, CopyOverwritesRule) {
copy.GetAdminAreaNameMessageId());
EXPECT_EQ(rule.GetPostalCodeNameMessageId(),
copy.GetPostalCodeNameMessageId());
+ EXPECT_EQ(rule.GetSublocalityNameMessageId(),
+ copy.GetSublocalityNameMessageId());
+ EXPECT_EQ(rule.GetLocalityNameMessageId(),
+ copy.GetLocalityNameMessageId());
EXPECT_EQ(rule.GetName(), copy.GetName());
EXPECT_EQ(rule.GetLatinName(), copy.GetLatinName());
EXPECT_EQ(rule.GetPostalCodeExample(), copy.GetPostalCodeExample());
@@ -264,6 +275,64 @@ INSTANTIATE_TEST_CASE_P(
std::make_pair("{\"zip_name_type\":\"zip\"}",
IDS_LIBADDRESSINPUT_ZIP_CODE_LABEL)));
+// Tests for parsing the locality name.
+class LocalityNameParseTest
+ : public testing::TestWithParam<std::pair<std::string, int> > {
+ protected:
+ LocalityNameParseTest() {}
+ Rule rule_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(LocalityNameParseTest);
+};
+
+// Verifies that a locality name is parsed correctly.
+TEST_P(LocalityNameParseTest, ParsedCorrectly) {
+ ASSERT_TRUE(rule_.ParseSerializedRule(GetParam().first));
+ EXPECT_EQ(GetParam().second, rule_.GetLocalityNameMessageId());
+}
+
+// Test parsing all locality names.
+INSTANTIATE_TEST_CASE_P(
+ AllLocalityNames, LocalityNameParseTest,
+ testing::Values(
+ std::make_pair("{\"locality_name_type\":\"post_town\"}",
+ IDS_LIBADDRESSINPUT_POST_TOWN),
+ std::make_pair("{\"locality_name_type\":\"city\"}",
+ IDS_LIBADDRESSINPUT_LOCALITY_LABEL),
+ std::make_pair("{\"locality_name_type\":\"district\"}",
+ IDS_LIBADDRESSINPUT_DISTRICT)));
+
+// Tests for parsing the locality name.
+class SublocalityNameParseTest
+ : public testing::TestWithParam<std::pair<std::string, int> > {
+ protected:
+ SublocalityNameParseTest() {}
+ Rule rule_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SublocalityNameParseTest);
+};
+
+// Verifies that a sublocality name is parsed correctly.
+TEST_P(SublocalityNameParseTest, ParsedCorrectly) {
+ ASSERT_TRUE(rule_.ParseSerializedRule(GetParam().first));
+ EXPECT_EQ(GetParam().second, rule_.GetSublocalityNameMessageId());
+}
+
+// Test parsing all sublocality names.
+INSTANTIATE_TEST_CASE_P(
+ AllSublocalityNames, SublocalityNameParseTest,
+ testing::Values(
+ std::make_pair("{\"sublocality_name_type\":\"village_township\"}",
+ IDS_LIBADDRESSINPUT_VILLAGE_TOWNSHIP),
+ std::make_pair("{\"sublocality_name_type\":\"neighborhood\"}",
+ IDS_LIBADDRESSINPUT_NEIGHBORHOOD),
+ std::make_pair("{\"sublocality_name_type\":\"suburb\"}",
+ IDS_LIBADDRESSINPUT_SUBURB),
+ std::make_pair("{\"sublocality_name_type\":\"district\"}",
+ IDS_LIBADDRESSINPUT_DISTRICT)));
+
// Tests for parsing the administrative area name.
class AdminAreaNameParseTest
: public testing::TestWithParam<std::pair<std::string, int> > {
@@ -355,6 +424,30 @@ TEST_P(RuleParseTest, PostalCodeNameTypeHasUiString) {
}
}
+// Verifies that the locality name type corresponds to a UI string.
+TEST_P(RuleParseTest, LocalityNameTypeHasUiString) {
+ const std::string& region_data = GetRegionData();
+ rule_.ParseSerializedRule(region_data);
+ // The leading quote here ensures we don't match against sublocality_name_type
+ // in the data.
+ if (region_data.find("\"locality_name_type") != std::string::npos) {
+ EXPECT_NE(INVALID_MESSAGE_ID, rule_.GetLocalityNameMessageId());
+ EXPECT_FALSE(
+ localization_.GetString(rule_.GetLocalityNameMessageId()).empty());
+ }
+}
+
+// Verifies that the sublocality name type corresponds to a UI string.
+TEST_P(RuleParseTest, SublocalityNameTypeHasUiString) {
+ const std::string& region_data = GetRegionData();
+ rule_.ParseSerializedRule(region_data);
+ if (region_data.find("sublocality_name_type") != std::string::npos) {
+ EXPECT_NE(INVALID_MESSAGE_ID, rule_.GetSublocalityNameMessageId());
+ EXPECT_FALSE(
+ localization_.GetString(rule_.GetSublocalityNameMessageId()).empty());
+ }
+}
+
// Verifies that the sole postal code is correctly recognised and copied.
TEST_P(RuleParseTest, SolePostalCode) {
Rule rule;