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.
5 #include "components/autofill/core/browser/address_i18n.h"
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"
22 using ::i18n::addressinput::AddressData
;
23 using ::i18n::addressinput::AddressField
;
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
;
35 TEST(AddressI18nTest
, FieldTypeMirrorConversions
) {
38 ServerFieldType server_field
;
39 AddressField address_field
;
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
},
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
);
66 ServerFieldType server_field
=
67 TypeForField(kTestData
[i
].address_field
, kTestData
[i
].billing
);
68 EXPECT_EQ(kTestData
[i
].server_field
, server_field
);
72 TEST(AddressI18nTest
, FieldTypeUnidirectionalConversions
) {
74 ServerFieldType server_field
;
75 AddressField expected_address_field
;
77 {ADDRESS_BILLING_LINE1
, STREET_ADDRESS
},
78 {ADDRESS_BILLING_LINE2
, STREET_ADDRESS
},
79 {ADDRESS_HOME_LINE1
, STREET_ADDRESS
},
80 {ADDRESS_HOME_LINE2
, STREET_ADDRESS
},
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
);
90 TEST(AddressI18nTest
, UnconvertableServerFields
) {
91 EXPECT_FALSE(FieldForType(PHONE_HOME_NUMBER
, NULL
));
92 EXPECT_FALSE(FieldForType(EMAIL_ADDRESS
, NULL
));
95 TEST(AddressI18nTest
, CreateAddressDataFromAutofillProfile
) {
96 AutofillProfile
profile(base::GenerateGUID(), "http://www.example.com/");
97 test::SetProfileInfo(&profile
,
109 profile
.set_language_code("en");
110 scoped_ptr
<AddressData
> actual
=
111 CreateAddressDataFromAutofillProfile(profile
, "en_US");
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";
124 EXPECT_EQ(expected
, *actual
);
128 } // namespace autofill