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 13 TEST(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.form_control_type = ASCIIToUTF16("select-one"); 23 field.option_strings = options; 24 25 CreditCard credit_card; 26 credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 27 autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 28 EXPECT_EQ(ASCIIToUTF16("01"), field.value); 29 } 30 31 TEST(SelectControlHandlerTest, CreditCardMonthAbbreviated) { 32 const char* const kMonthsAbbreviated[] = { 33 "Jan", "Feb", "Mar", "Apr", "May", "Jun", 34 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 35 }; 36 std::vector<string16> options(arraysize(kMonthsAbbreviated)); 37 for (size_t i = 0; i < arraysize(kMonthsAbbreviated); ++i) 38 options[i] = ASCIIToUTF16(kMonthsAbbreviated[i]); 39 40 webkit_glue::FormField field; 41 field.form_control_type = ASCIIToUTF16("select-one"); 42 field.option_strings = options; 43 44 CreditCard credit_card; 45 credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 46 autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 47 EXPECT_EQ(ASCIIToUTF16("Jan"), field.value); 48 } 49 50 TEST(SelectControlHandlerTest, CreditCardMonthFull) { 51 const char* const kMonthsFull[] = { 52 "January", "February", "March", "April", "May", "June", 53 "July", "August", "September", "October", "November", "December", 54 }; 55 std::vector<string16> options(arraysize(kMonthsFull)); 56 for (size_t i = 0; i < arraysize(kMonthsFull); ++i) 57 options[i] = ASCIIToUTF16(kMonthsFull[i]); 58 59 webkit_glue::FormField field; 60 field.form_control_type = ASCIIToUTF16("select-one"); 61 field.option_strings = options; 62 63 CreditCard credit_card; 64 credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 65 autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 66 EXPECT_EQ(ASCIIToUTF16("January"), field.value); 67 } 68 69 TEST(SelectControlHandlerTest, CreditCardMonthNumeric) { 70 const char* const kMonthsNumeric[] = { 71 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 72 }; 73 std::vector<string16> options(arraysize(kMonthsNumeric)); 74 for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i) 75 options[i] = ASCIIToUTF16(kMonthsNumeric[i]); 76 77 webkit_glue::FormField field; 78 field.form_control_type = ASCIIToUTF16("select-one"); 79 field.option_strings = options; 80 81 CreditCard credit_card; 82 credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); 83 autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); 84 EXPECT_EQ(ASCIIToUTF16("1"), field.value); 85 } 86 87 TEST(SelectControlHandlerTest, AddressCountryFull) { 88 const char* const kCountries[] = { 89 "Albania", "Canada" 90 }; 91 std::vector<string16> options(arraysize(kCountries)); 92 for (size_t i = 0; i < arraysize(kCountries); ++i) 93 options[i] = ASCIIToUTF16(kCountries[i]); 94 95 webkit_glue::FormField field; 96 field.form_control_type = ASCIIToUTF16("select-one"); 97 field.option_strings = options; 98 99 AutofillProfile profile; 100 profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); 101 autofill::FillSelectControl(profile, ADDRESS_HOME_COUNTRY, &field); 102 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); 103 } 104 105 TEST(SelectControlHandlerTest, AddressCountryAbbrev) { 106 const char* const kCountries[] = { 107 "AL", "CA" 108 }; 109 std::vector<string16> options(arraysize(kCountries)); 110 for (size_t i = 0; i < arraysize(kCountries); ++i) 111 options[i] = ASCIIToUTF16(kCountries[i]); 112 113 webkit_glue::FormField field; 114 field.form_control_type = ASCIIToUTF16("select-one"); 115 field.option_strings = options; 116 117 AutofillProfile profile; 118 profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("Canada")); 119 autofill::FillSelectControl(profile, ADDRESS_HOME_COUNTRY, &field); 120 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 121 } 122 123 TEST(SelectControlHandlerTest, AddressStateFull) { 124 const char* const kStates[] = { 125 "Alabama", "California" 126 }; 127 std::vector<string16> options(arraysize(kStates)); 128 for (size_t i = 0; i < arraysize(kStates); ++i) 129 options[i] = ASCIIToUTF16(kStates[i]); 130 131 webkit_glue::FormField field; 132 field.form_control_type = ASCIIToUTF16("select-one"); 133 field.option_strings = options; 134 135 AutofillProfile profile; 136 profile.SetInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); 137 autofill::FillSelectControl(profile, ADDRESS_HOME_STATE, &field); 138 EXPECT_EQ(ASCIIToUTF16("California"), field.value); 139 } 140 141 TEST(SelectControlHandlerTest, AddressStateAbbrev) { 142 const char* const kStates[] = { 143 "AL", "CA" 144 }; 145 std::vector<string16> options(arraysize(kStates)); 146 for (size_t i = 0; i < arraysize(kStates); ++i) 147 options[i] = ASCIIToUTF16(kStates[i]); 148 149 webkit_glue::FormField field; 150 field.form_control_type = ASCIIToUTF16("select-one"); 151 field.option_strings = options; 152 153 AutofillProfile profile; 154 profile.SetInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); 155 autofill::FillSelectControl(profile, ADDRESS_HOME_STATE, &field); 156 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 157 } 158