autofill_dialog_i18n_input_unittest.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/ui/autofill/autofill_dialog_i18n_input.h"
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/autofill/core/browser/field_types.h"
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/libaddressinput/chromium/cpp/include/libaddressinput/address_ui.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace autofill {
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace i18ninput {
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace {
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_MACOSX)
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)const size_t kNumberOfAddressLinesUS = 7;
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)const size_t kNumberOfAddressLinesUS = 6;
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST(AutofillDialogI18nInput, USShippingAddress) {
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DetailInputs inputs;
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BuildAddressInputs(common::ADDRESS_TYPE_SHIPPING, "US", &inputs);
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ASSERT_EQ(kNumberOfAddressLinesUS, inputs.size());
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(NAME_FULL, inputs[0].type);
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(ADDRESS_HOME_COUNTRY, inputs[kNumberOfAddressLinesUS - 1].type);
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST(AutofillDialogI18nInput, USBillingAddress) {
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DetailInputs inputs;
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BuildAddressInputs(common::ADDRESS_TYPE_BILLING, "US", &inputs);
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ASSERT_EQ(kNumberOfAddressLinesUS, inputs.size());
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EXPECT_EQ(NAME_BILLING_FULL, inputs[0].type);
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EXPECT_EQ(ADDRESS_BILLING_COUNTRY, inputs[kNumberOfAddressLinesUS - 1].type);
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST(AutofillDialogI18nInput, USCityStateAndZipCodeShareInputRow) {
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DetailInputs inputs;
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BuildAddressInputs(common::ADDRESS_TYPE_SHIPPING, "US", &inputs);
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ASSERT_EQ(kNumberOfAddressLinesUS, inputs.size());
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_MACOSX)
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int input_index = 3;
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#else
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int input_index = 2;
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Inputs before or after [ City ] [ State ] [ Zip ] should be on other lines.
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_NE(inputs[input_index - 1].length, DetailInput::SHORT);
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const DetailInput& city = inputs[input_index++];
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(ADDRESS_HOME_CITY, city.type);
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(city.length, DetailInput::SHORT);
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const DetailInput& state = inputs[input_index++];
6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(ADDRESS_HOME_STATE, state.type);
6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(state.length, DetailInput::SHORT);
6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const DetailInput& zip = inputs[input_index++];
6546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(ADDRESS_HOME_ZIP, zip.type);
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_EQ(zip.length, DetailInput::SHORT);
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  EXPECT_NE(inputs[input_index].length, DetailInput::SHORT);
6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST(AutofillDialogI18nInput, IvoryCoastNoStreetLine2) {
7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DetailInputs inputs;
7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  BuildAddressInputs(common::ADDRESS_TYPE_SHIPPING, "CI", &inputs);
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  for (size_t i = 0; i < inputs.size(); ++i) {
7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_NE(ADDRESS_HOME_LINE2, inputs[i].type);
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
7846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST(AutofillDialogI18nInput, FullySupportedCountries) {
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const std::vector<std::string>& regions =
8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      ::i18n::addressinput::GetRegionCodes();
8246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  for (size_t i = 0; i < regions.size(); ++i) {
8346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bool should_be_supported = !(regions[i] == "KR" || regions[i] == "CN");
8446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(should_be_supported, CountryIsFullySupported(regions[i]));
8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace i18ninput
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace autofill
9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)