select_control_handler_unittest.cc revision dc0f95d653279beabeb9817299e2902918ba123e
1// Copyright (c) 2011 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 "base/utf_string_conversions.h"
6#include "chrome/browser/autofill/autofill_profile.h"
7#include "chrome/browser/autofill/autofill_type.h"
8#include "chrome/browser/autofill/credit_card.h"
9#include "chrome/browser/autofill/select_control_handler.h"
10#include "testing/gtest/include/gtest/gtest.h"
11#include "webkit/glue/form_field.h"
12
13TEST(SelectControlHandlerTest, CreditCardMonthExact) {
14  const char* const kMonthsNumeric[] = {
15    "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12",
16  };
17  std::vector<string16> options(arraysize(kMonthsNumeric));
18  for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i)
19    options[i] = ASCIIToUTF16(kMonthsNumeric[i]);
20
21  webkit_glue::FormField field;
22  field.set_form_control_type(ASCIIToUTF16("select-one"));
23  field.set_option_strings(options);
24
25  CreditCard credit_card;
26  credit_card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("01"));
27  autofill::FillSelectControl(credit_card,
28                              AutofillType(CREDIT_CARD_EXP_MONTH),
29                              &field);
30  EXPECT_EQ(ASCIIToUTF16("01"), field.value());
31}
32
33TEST(SelectControlHandlerTest, CreditCardMonthAbbreviated) {
34  const char* const kMonthsAbbreviated[] = {
35    "Jan", "Feb", "Mar", "Apr", "May", "Jun",
36    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
37  };
38  std::vector<string16> options(arraysize(kMonthsAbbreviated));
39  for (size_t i = 0; i < arraysize(kMonthsAbbreviated); ++i)
40    options[i] = ASCIIToUTF16(kMonthsAbbreviated[i]);
41
42  webkit_glue::FormField field;
43  field.set_form_control_type(ASCIIToUTF16("select-one"));
44  field.set_option_strings(options);
45
46  CreditCard credit_card;
47  credit_card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("01"));
48  autofill::FillSelectControl(credit_card,
49                              AutofillType(CREDIT_CARD_EXP_MONTH),
50                              &field);
51  EXPECT_EQ(ASCIIToUTF16("Jan"), field.value());
52}
53
54TEST(SelectControlHandlerTest, CreditCardMonthFull) {
55  const char* const kMonthsFull[] = {
56    "January", "February", "March", "April", "May", "June",
57    "July", "August", "September", "October", "November", "December",
58  };
59  std::vector<string16> options(arraysize(kMonthsFull));
60  for (size_t i = 0; i < arraysize(kMonthsFull); ++i)
61    options[i] = ASCIIToUTF16(kMonthsFull[i]);
62
63  webkit_glue::FormField field;
64  field.set_form_control_type(ASCIIToUTF16("select-one"));
65  field.set_option_strings(options);
66
67  CreditCard credit_card;
68  credit_card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("01"));
69  autofill::FillSelectControl(credit_card,
70                              AutofillType(CREDIT_CARD_EXP_MONTH),
71                              &field);
72  EXPECT_EQ(ASCIIToUTF16("January"), field.value());
73}
74
75TEST(SelectControlHandlerTest, CreditCardMonthNumeric) {
76  const char* const kMonthsNumeric[] = {
77    "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
78  };
79  std::vector<string16> options(arraysize(kMonthsNumeric));
80  for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i)
81    options[i] = ASCIIToUTF16(kMonthsNumeric[i]);
82
83  webkit_glue::FormField field;
84  field.set_form_control_type(ASCIIToUTF16("select-one"));
85  field.set_option_strings(options);
86
87  CreditCard credit_card;
88  credit_card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("01"));
89  autofill::FillSelectControl(credit_card,
90                              AutofillType(CREDIT_CARD_EXP_MONTH),
91                              &field);
92  EXPECT_EQ(ASCIIToUTF16("1"), field.value());
93}
94
95TEST(SelectControlHandlerTest, AddressCountryFull) {
96  const char* const kCountries[] = {
97    "Albania", "Canada"
98  };
99  std::vector<string16> options(arraysize(kCountries));
100  for (size_t i = 0; i < arraysize(kCountries); ++i)
101    options[i] = ASCIIToUTF16(kCountries[i]);
102
103  webkit_glue::FormField field;
104  field.set_form_control_type(ASCIIToUTF16("select-one"));
105  field.set_option_strings(options);
106
107  AutoFillProfile profile;
108  profile.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("CA"));
109  autofill::FillSelectControl(profile,
110                              AutofillType(ADDRESS_HOME_COUNTRY),
111                              &field);
112  EXPECT_EQ(ASCIIToUTF16("Canada"), field.value());
113}
114
115TEST(SelectControlHandlerTest, AddressCountryAbbrev) {
116  const char* const kCountries[] = {
117    "AL", "CA"
118  };
119  std::vector<string16> options(arraysize(kCountries));
120  for (size_t i = 0; i < arraysize(kCountries); ++i)
121    options[i] = ASCIIToUTF16(kCountries[i]);
122
123  webkit_glue::FormField field;
124  field.set_form_control_type(ASCIIToUTF16("select-one"));
125  field.set_option_strings(options);
126
127  AutoFillProfile profile;
128  profile.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("Canada"));
129  autofill::FillSelectControl(profile,
130                              AutofillType(ADDRESS_HOME_COUNTRY),
131                              &field);
132  EXPECT_EQ(ASCIIToUTF16("CA"), field.value());
133}
134
135TEST(SelectControlHandlerTest, AddressStateFull) {
136  const char* const kStates[] = {
137    "Alabama", "California"
138  };
139  std::vector<string16> options(arraysize(kStates));
140  for (size_t i = 0; i < arraysize(kStates); ++i)
141    options[i] = ASCIIToUTF16(kStates[i]);
142
143  webkit_glue::FormField field;
144  field.set_form_control_type(ASCIIToUTF16("select-one"));
145  field.set_option_strings(options);
146
147  AutoFillProfile profile;
148  profile.SetInfo(AutofillType(ADDRESS_HOME_STATE), ASCIIToUTF16("CA"));
149  autofill::FillSelectControl(profile,
150                              AutofillType(ADDRESS_HOME_STATE),
151                              &field);
152  EXPECT_EQ(ASCIIToUTF16("California"), field.value());
153}
154
155TEST(SelectControlHandlerTest, AddressStateAbbrev) {
156  const char* const kStates[] = {
157    "AL", "CA"
158  };
159  std::vector<string16> options(arraysize(kStates));
160  for (size_t i = 0; i < arraysize(kStates); ++i)
161    options[i] = ASCIIToUTF16(kStates[i]);
162
163  webkit_glue::FormField field;
164  field.set_form_control_type(ASCIIToUTF16("select-one"));
165  field.set_option_strings(options);
166
167  AutoFillProfile profile;
168  profile.SetInfo(AutofillType(ADDRESS_HOME_STATE), ASCIIToUTF16("California"));
169  autofill::FillSelectControl(profile,
170                              AutofillType(ADDRESS_HOME_STATE),
171                              &field);
172  EXPECT_EQ(ASCIIToUTF16("CA"), field.value());
173}
174