Chromium Code Reviews| Index: third_party/libaddressinput/chromium/suggestions_unittest.cc |
| diff --git a/third_party/libaddressinput/chromium/suggestions_unittest.cc b/third_party/libaddressinput/chromium/suggestions_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e248202b538991440447313bd95e2570a2e2fd8d |
| --- /dev/null |
| +++ b/third_party/libaddressinput/chromium/suggestions_unittest.cc |
| @@ -0,0 +1,356 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
|
please use gerrit instead
2014/06/05 22:22:49
Remove this file! (PreloadAddressValidatorTests ha
please use gerrit instead
2014/06/09 23:28:17
Done.
|
| +// found in the LICENSE file. |
| + |
| +#include "third_party/libaddressinput/chromium/suggestions.h" |
| + |
| +// Use "base/memory/scoped_ptr.h" instead. |
| +#define I18N_ADDRESSINPUT_UTIL_SCOPED_PTR_H_ |
| + |
| +#include "base/basictypes.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| +#include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h" |
| +#include "third_party/libaddressinput/src/cpp/include/libaddressinput/null_storage.h" |
| +#include "third_party/libaddressinput/src/cpp/include/libaddressinput/preload_supplier.h" |
| +#include "third_party/libaddressinput/src/cpp/test/fake_downloader.h" |
| + |
| +namespace autofill { |
| + |
| +/* |
| +class SuggestionsTest : public testing::Test { |
| + protected: |
| + SuggestionsTest() : suggestions_() {} |
| + |
| + virtual ~SuggestionsTest() {} |
| + |
| + Suggestions suggestions_; |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(SuggestionsTest); |
| +}; |
| + |
| +TEST_F(SuggestionsTest, Basic) {} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestAdminAreaForPostalCode) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.postal_code = "90291"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("CA", suggestions[0].administrative_area); |
| + EXPECT_EQ("90291", suggestions[0].postal_code); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestLocalityForPostalCodeWithAdminArea) { |
| + validator_->LoadRules("TW"); |
| + AddressData address; |
| + address.region_code = "TW"; |
| + address.postal_code = "515"; |
| + address.administrative_area = "Changhua"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Dacun Township", suggestions[0].locality); |
| + EXPECT_EQ("Changhua County", suggestions[0].administrative_area); |
| + EXPECT_EQ("515", suggestions[0].postal_code); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestAdminAreaForPostalCodeWithLocality) { |
| + validator_->LoadRules("TW"); |
| + AddressData address; |
| + address.region_code = "TW"; |
| + address.postal_code = "515"; |
| + address.locality = "Dacun"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Dacun Township", suggestions[0].locality); |
| + EXPECT_EQ("Changhua County", suggestions[0].administrative_area); |
| + EXPECT_EQ("515", suggestions[0].postal_code); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, NoSuggestForPostalCodeWithWrongAdminArea) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.postal_code = "90066"; |
| + address.postal_code = "TX"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + EXPECT_TRUE(suggestions.empty()); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestForLocality) { |
| + validator_->LoadRules("CN"); |
| + AddressData address; |
| + address.region_code = "CN"; |
| + address.locality = "Anqin"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Anqing Shi", suggestions[0].locality); |
| + EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestForLocalityAndAdminArea) { |
| + validator_->LoadRules("CN"); |
| + AddressData address; |
| + address.region_code = "CN"; |
| + address.locality = "Anqing"; |
| + address.administrative_area = "Anhui"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, LOCALITY, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_TRUE(suggestions[0].dependent_locality.empty()); |
| + EXPECT_EQ("Anqing Shi", suggestions[0].locality); |
| + EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestForAdminAreaAndLocality) { |
| + validator_->LoadRules("CN"); |
| + AddressData address; |
| + address.region_code = "CN"; |
| + address.locality = "Anqing"; |
| + address.administrative_area = "Anhui"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_TRUE(suggestions[0].dependent_locality.empty()); |
| + EXPECT_TRUE(suggestions[0].locality.empty()); |
| + EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestForDependentLocality) { |
| + validator_->LoadRules("CN"); |
| + AddressData address; |
| + address.region_code = "CN"; |
| + address.dependent_locality = "Zongyang"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions( |
| + address, DEPENDENT_LOCALITY, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Zongyang Xian", suggestions[0].dependent_locality); |
| + EXPECT_EQ("Anqing Shi", suggestions[0].locality); |
| + EXPECT_EQ("ANHUI SHENG", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, |
| + NoSuggestForDependentLocalityWithWrongAdminArea) { |
| + validator_->LoadRules("CN"); |
| + AddressData address; |
| + address.region_code = "CN"; |
| + address.dependent_locality = "Zongyang"; |
| + address.administrative_area = "Sichuan Sheng"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions( |
| + address, DEPENDENT_LOCALITY, 10, &suggestions)); |
| + EXPECT_TRUE(suggestions.empty()); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, EmptySuggestionsOverLimit) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.administrative_area = "A"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); |
| + EXPECT_TRUE(suggestions.empty()); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, PreferShortSuggestions) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.administrative_area = "CA"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("CA", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestTheSingleMatchForFullMatchName) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.administrative_area = "Texas"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Texas", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestAdminArea) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.administrative_area = "Cali"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("California", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, MultipleSuggestions) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.administrative_area = "MA"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 10, &suggestions)); |
| + EXPECT_LT(1U, suggestions.size()); |
| + |
| + // Massachusetts should not be a suggestion, because it's already covered |
| + // under MA. |
| + std::set<std::string> expected_suggestions; |
| + expected_suggestions.insert("MA"); |
| + expected_suggestions.insert("Maine"); |
| + expected_suggestions.insert("Marshall Islands"); |
| + expected_suggestions.insert("Maryland"); |
| + for (std::vector<AddressData>::const_iterator it = suggestions.begin(); |
| + it != suggestions.end(); ++it) { |
| + expected_suggestions.erase(it->administrative_area); |
| + } |
| + EXPECT_TRUE(expected_suggestions.empty()); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestNonLatinKeyWhenLanguageMatches) { |
| + validator_->LoadRules("KR"); |
| + AddressData address; |
| + address.language_code = "ko"; |
| + address.region_code = "KR"; |
| + address.postal_code = "210-210"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("강원도", suggestions[0].administrative_area); |
| + EXPECT_EQ("210-210", suggestions[0].postal_code); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestNonLatinKeyWhenUserInputIsNotLatin) { |
| + validator_->LoadRules("KR"); |
| + AddressData address; |
| + address.language_code = "en"; |
| + address.region_code = "KR"; |
| + address.administrative_area = "강원"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("강원도", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, |
| + SuggestLatinNameWhenLanguageDiffersAndLatinNameAvailable) { |
| + validator_->LoadRules("KR"); |
| + AddressData address; |
| + address.language_code = "en"; |
| + address.region_code = "KR"; |
| + address.postal_code = "210-210"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Gangwon", suggestions[0].administrative_area); |
| + EXPECT_EQ("210-210", suggestions[0].postal_code); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestLatinNameWhenUserInputIsLatin) { |
| + validator_->LoadRules("KR"); |
| + AddressData address; |
| + address.language_code = "ko"; |
| + address.region_code = "KR"; |
| + address.administrative_area = "Gang"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, ADMIN_AREA, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("Gangwon", suggestions[0].administrative_area); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, NoSuggestionsForEmptyAddress) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ( |
| + ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 999, &suggestions)); |
| + EXPECT_TRUE(suggestions.empty()); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestionIncludesCountry) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.postal_code = "90291"; |
| + |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions(address, POSTAL_CODE, 1, &suggestions)); |
| + ASSERT_EQ(1U, suggestions.size()); |
| + EXPECT_EQ("US", suggestions[0].region_code); |
| +} |
| + |
| +TEST_F(ChromeAddressValidatorTest, SuggestOnlyForAdministrativeAreasAndPostalCode) { |
| + AddressData address; |
| + address.region_code = "US"; |
| + address.administrative_area = "CA"; |
| + address.locality = "Los Angeles"; |
| + address.dependent_locality = "Venice"; |
| + address.postal_code = "90291"; |
| + address.sorting_code = "123"; |
| + address.address_line.push_back("123 Main St"); |
| + address.recipient = "Jon Smith"; |
| + |
| + // Fields that should not have suggestions in US. |
| + static const AddressField kNoSugestFields[] = { |
| + COUNTRY, |
| + LOCALITY, |
| + DEPENDENT_LOCALITY, |
| + SORTING_CODE, |
| + STREET_ADDRESS, |
| + RECIPIENT |
| + }; |
| + |
| + static const size_t kNumNoSuggestFields = |
| + sizeof kNoSugestFields / sizeof (AddressField); |
| + |
| + for (size_t i = 0; i < kNumNoSuggestFields; ++i) { |
| + std::vector<AddressData> suggestions; |
| + EXPECT_EQ(ChromeAddressValidator::SUCCESS, |
| + validator_->GetSuggestions( |
| + address, kNoSugestFields[i], 999, &suggestions)); |
| + EXPECT_TRUE(suggestions.empty()); |
| + } |
| +} |
| +*/ |
| + |
| +} // namespace |