Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / components / autofill / core / browser / address_i18n_unittest.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/autofill/core/browser/address_i18n.h"
6
7 #include <string>
8 #include <vector>
9
10 #include "base/guid.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "components/autofill/core/browser/autofill_profile.h"
13 #include "components/autofill/core/browser/autofill_test_utils.h"
14 #include "components/autofill/core/browser/field_types.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h"
17 #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_field.h"
18
19 namespace autofill {
20 namespace i18n {
21
22 using ::i18n::addressinput::AddressData;
23 using ::i18n::addressinput::AddressField;
24
25 using ::i18n::addressinput::ADMIN_AREA;
26 using ::i18n::addressinput::COUNTRY;
27 using ::i18n::addressinput::DEPENDENT_LOCALITY;
28 using ::i18n::addressinput::LOCALITY;
29 using ::i18n::addressinput::ORGANIZATION;
30 using ::i18n::addressinput::POSTAL_CODE;
31 using ::i18n::addressinput::RECIPIENT;
32 using ::i18n::addressinput::SORTING_CODE;
33 using ::i18n::addressinput::STREET_ADDRESS;
34
35 TEST(AddressI18nTest, FieldTypeMirrorConversions) {
36   static const struct {
37     bool billing;
38     ServerFieldType server_field;
39     AddressField address_field;
40   } kTestData[] = {
41     {true, ADDRESS_BILLING_COUNTRY, COUNTRY},
42     {true, ADDRESS_BILLING_STATE, ADMIN_AREA},
43     {true, ADDRESS_BILLING_CITY, LOCALITY},
44     {true, ADDRESS_BILLING_DEPENDENT_LOCALITY, DEPENDENT_LOCALITY},
45     {true, ADDRESS_BILLING_SORTING_CODE, SORTING_CODE},
46     {true, ADDRESS_BILLING_ZIP, POSTAL_CODE},
47     {true, ADDRESS_BILLING_STREET_ADDRESS, STREET_ADDRESS},
48     {true, COMPANY_NAME, ORGANIZATION},
49     {true, NAME_BILLING_FULL, RECIPIENT},
50     {false, ADDRESS_HOME_COUNTRY, COUNTRY},
51     {false, ADDRESS_HOME_STATE, ADMIN_AREA},
52     {false, ADDRESS_HOME_CITY, LOCALITY},
53     {false, ADDRESS_HOME_DEPENDENT_LOCALITY, DEPENDENT_LOCALITY},
54     {false, ADDRESS_HOME_SORTING_CODE, SORTING_CODE},
55     {false, ADDRESS_HOME_ZIP, POSTAL_CODE},
56     {false, ADDRESS_HOME_STREET_ADDRESS, STREET_ADDRESS},
57     {false, COMPANY_NAME, ORGANIZATION},
58     {false, NAME_FULL, RECIPIENT},
59   };
60
61   for (size_t i = 0; i < arraysize(kTestData); ++i) {
62     AddressField address_field;
63     EXPECT_TRUE(FieldForType(kTestData[i].server_field, &address_field));
64     EXPECT_EQ(kTestData[i].address_field, address_field);
65
66     ServerFieldType server_field =
67         TypeForField(kTestData[i].address_field, kTestData[i].billing);
68     EXPECT_EQ(kTestData[i].server_field, server_field);
69   }
70 }
71
72 TEST(AddressI18nTest, FieldTypeUnidirectionalConversions) {
73   static const struct {
74     ServerFieldType server_field;
75     AddressField expected_address_field;
76   } kTestData[] = {
77     {ADDRESS_BILLING_LINE1, STREET_ADDRESS},
78     {ADDRESS_BILLING_LINE2, STREET_ADDRESS},
79     {ADDRESS_HOME_LINE1, STREET_ADDRESS},
80     {ADDRESS_HOME_LINE2, STREET_ADDRESS},
81   };
82
83   for (size_t i = 0; i < arraysize(kTestData); ++i) {
84     AddressField actual_address_field;
85     FieldForType(kTestData[i].server_field, &actual_address_field);
86     EXPECT_EQ(kTestData[i].expected_address_field, actual_address_field);
87   }
88 }
89
90 TEST(AddressI18nTest, UnconvertableServerFields) {
91   EXPECT_FALSE(FieldForType(PHONE_HOME_NUMBER, NULL));
92   EXPECT_FALSE(FieldForType(EMAIL_ADDRESS, NULL));
93 }
94
95 TEST(AddressI18nTest, CreateAddressDataFromAutofillProfile) {
96   AutofillProfile profile(base::GenerateGUID(), "http://www.example.com/");
97   test::SetProfileInfo(&profile,
98                        "John",
99                        "H.",
100                        "Doe",
101                        "johndoe@hades.com",
102                        "Underworld",
103                        "666 Erebus St.",
104                        "Apt 8",
105                        "Elysium", "CA",
106                        "91111",
107                        "US",
108                        "16502111111");
109   profile.set_language_code("en");
110   scoped_ptr<AddressData> actual =
111       CreateAddressDataFromAutofillProfile(profile, "en_US");
112
113   AddressData expected;
114   expected.region_code = "US";
115   expected.address_line.push_back("666 Erebus St.");
116   expected.address_line.push_back("Apt 8");
117   expected.administrative_area = "CA";
118   expected.locality = "Elysium";
119   expected.postal_code = "91111";
120   expected.language_code = "en";
121   expected.organization = "Underworld";
122   expected.recipient = "John H. Doe";
123
124   EXPECT_EQ(expected, *actual);
125 }
126
127 }  // namespace i18n
128 }  // namespace autofill