diff options
author | roubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-06-18 14:13:46 +0000 |
---|---|---|
committer | roubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-06-18 14:13:46 +0000 |
commit | 00f17cd3444f47786c3ce993681f2c8697cacc62 (patch) | |
tree | 50b17694083a78981bf29c917153413a53661a81 | |
parent | 90e624a56973856b6b81112fc1cd815a4224aa96 (diff) | |
download | src-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.cc | 9 | ||||
-rw-r--r-- | cpp/test/address_validator_test.cc | 34 |
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 |