// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/utf_string_conversions.h" #include "chrome/browser/autofill/autofill_profile.h" #include "chrome/browser/autofill/autofill_type.h" #include "chrome/browser/autofill/credit_card.h" #include "chrome/browser/autofill/select_control_handler.h" #include "testing/gtest/include/gtest/gtest.h" #include "webkit/glue/form_field.h" TEST(SelectControlHandlerTest, CreditCardMonthExact) { const char* const kMonthsNumeric[] = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", }; std::vector<string16> options(arraysize(kMonthsNumeric)); for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i) options[i] = ASCIIToUTF16(kMonthsNumeric[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; CreditCard credit_card; credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); EXPECT_EQ(ASCIIToUTF16("01"), field.value); } TEST(SelectControlHandlerTest, CreditCardMonthAbbreviated) { const char* const kMonthsAbbreviated[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }; std::vector<string16> options(arraysize(kMonthsAbbreviated)); for (size_t i = 0; i < arraysize(kMonthsAbbreviated); ++i) options[i] = ASCIIToUTF16(kMonthsAbbreviated[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; CreditCard credit_card; credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); EXPECT_EQ(ASCIIToUTF16("Jan"), field.value); } TEST(SelectControlHandlerTest, CreditCardMonthFull) { const char* const kMonthsFull[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", }; std::vector<string16> options(arraysize(kMonthsFull)); for (size_t i = 0; i < arraysize(kMonthsFull); ++i) options[i] = ASCIIToUTF16(kMonthsFull[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; CreditCard credit_card; credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); EXPECT_EQ(ASCIIToUTF16("January"), field.value); } TEST(SelectControlHandlerTest, CreditCardMonthNumeric) { const char* const kMonthsNumeric[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", }; std::vector<string16> options(arraysize(kMonthsNumeric)); for (size_t i = 0; i < arraysize(kMonthsNumeric); ++i) options[i] = ASCIIToUTF16(kMonthsNumeric[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; CreditCard credit_card; credit_card.SetInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("01")); autofill::FillSelectControl(credit_card, CREDIT_CARD_EXP_MONTH, &field); EXPECT_EQ(ASCIIToUTF16("1"), field.value); } TEST(SelectControlHandlerTest, AddressCountryFull) { const char* const kCountries[] = { "Albania", "Canada" }; std::vector<string16> options(arraysize(kCountries)); for (size_t i = 0; i < arraysize(kCountries); ++i) options[i] = ASCIIToUTF16(kCountries[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; AutofillProfile profile; profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("CA")); autofill::FillSelectControl(profile, ADDRESS_HOME_COUNTRY, &field); EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); } TEST(SelectControlHandlerTest, AddressCountryAbbrev) { const char* const kCountries[] = { "AL", "CA" }; std::vector<string16> options(arraysize(kCountries)); for (size_t i = 0; i < arraysize(kCountries); ++i) options[i] = ASCIIToUTF16(kCountries[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; AutofillProfile profile; profile.SetInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("Canada")); autofill::FillSelectControl(profile, ADDRESS_HOME_COUNTRY, &field); EXPECT_EQ(ASCIIToUTF16("CA"), field.value); } TEST(SelectControlHandlerTest, AddressStateFull) { const char* const kStates[] = { "Alabama", "California" }; std::vector<string16> options(arraysize(kStates)); for (size_t i = 0; i < arraysize(kStates); ++i) options[i] = ASCIIToUTF16(kStates[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; AutofillProfile profile; profile.SetInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("CA")); autofill::FillSelectControl(profile, ADDRESS_HOME_STATE, &field); EXPECT_EQ(ASCIIToUTF16("California"), field.value); } TEST(SelectControlHandlerTest, AddressStateAbbrev) { const char* const kStates[] = { "AL", "CA" }; std::vector<string16> options(arraysize(kStates)); for (size_t i = 0; i < arraysize(kStates); ++i) options[i] = ASCIIToUTF16(kStates[i]); webkit_glue::FormField field; field.form_control_type = ASCIIToUTF16("select-one"); field.option_strings = options; AutofillProfile profile; profile.SetInfo(ADDRESS_HOME_STATE, ASCIIToUTF16("California")); autofill::FillSelectControl(profile, ADDRESS_HOME_STATE, &field); EXPECT_EQ(ASCIIToUTF16("CA"), field.value); }