aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-06-18 14:13:46 +0000
committerroubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-06-18 14:13:46 +0000
commit00f17cd3444f47786c3ce993681f2c8697cacc62 (patch)
tree50b17694083a78981bf29c917153413a53661a81
parent90e624a56973856b6b81112fc1cd815a4224aa96 (diff)
downloadsrc-00f17cd3444f47786c3ce993681f2c8697cacc62.tar.gz
Bugfix: PreloadSupplier drops language tags when building index.
TBR=rouslan@chromium.org BUG= Review URL: https://codereview.appspot.com/101350044 git-svn-id: http://libaddressinput.googlecode.com/svn/trunk@291 38ededc0-08b8-5190-f2ac-b31f878777ad
-rw-r--r--cpp/src/preload_supplier.cc9
-rw-r--r--cpp/test/address_validator_test.cc34
2 files changed, 43 insertions, 0 deletions
diff --git a/cpp/src/preload_supplier.cc b/cpp/src/preload_supplier.cc
index 1a1ecf6..cf9ed80 100644
--- a/cpp/src/preload_supplier.cc
+++ b/cpp/src/preload_supplier.cc
@@ -214,6 +214,15 @@ class Helper {
}
}
+ // If the ID has a language tag, copy it.
+ {
+ const std::string& id = (*it)->GetId();
+ std::string::size_type pos = id.rfind("--");
+ if (pos != std::string::npos) {
+ human_id.append(id, pos, id.size() - pos);
+ }
+ }
+
rule_index_->insert(std::make_pair(human_id, *it));
// Add the Latin script ID, if a Latin script name could be found for
diff --git a/cpp/test/address_validator_test.cc b/cpp/test/address_validator_test.cc
index 5703a37..79195e3 100644
--- a/cpp/test/address_validator_test.cc
+++ b/cpp/test/address_validator_test.cc
@@ -381,4 +381,38 @@ TEST_P(AddressValidatorTest, ValidAddressBR) {
EXPECT_EQ(expected_, problems_);
}
+TEST_P(AddressValidatorTest, ValidAddressCA_en) {
+ // Skip this test case when using the OndemandSupplier, which depends on the
+ // address metadata server to map natural language names to metadata IDs.
+ if (GetParam() == &OndemandValidatorWrapper::Build) return;
+
+ address_.region_code = "CA";
+ address_.administrative_area = "New Brunswick";
+ address_.locality = "Saint John County";
+ address_.postal_code = "E2L 4Z6";
+ address_.address_line.push_back("...");
+ address_.language_code = "en";
+
+ ASSERT_NO_FATAL_FAILURE(Validate());
+ ASSERT_TRUE(called_);
+ EXPECT_EQ(expected_, problems_);
+}
+
+TEST_P(AddressValidatorTest, ValidAddressCA_fr) {
+ // Skip this test case when using the OndemandSupplier, which depends on the
+ // address metadata server to map natural language names to metadata IDs.
+ if (GetParam() == &OndemandValidatorWrapper::Build) return;
+
+ address_.region_code = "CA";
+ address_.administrative_area = "Nouveau-Brunswick";
+ address_.locality = "Comt\xC3\xA9 de Saint-Jean"; /* Comté de Saint-Jean */
+ address_.postal_code = "E2L 4Z6";
+ address_.address_line.push_back("...");
+ address_.language_code = "fr";
+
+ ASSERT_NO_FATAL_FAILURE(Validate());
+ ASSERT_TRUE(called_);
+ EXPECT_EQ(expected_, problems_);
+}
+
} // namespace