Index: components/autofill/core/browser/credit_card_unittest.cc |
diff --git a/components/autofill/core/browser/credit_card_unittest.cc b/components/autofill/core/browser/credit_card_unittest.cc |
index 2f282578a1514932b6c4e6a568542192d98d774b..52a23ba8605d70e17b63cc15c7563f732af691fe 100644 |
--- a/components/autofill/core/browser/credit_card_unittest.cc |
+++ b/components/autofill/core/browser/credit_card_unittest.cc |
@@ -167,6 +167,79 @@ TEST(CreditCardTest, AssignmentOperator) { |
EXPECT_TRUE(a == b); |
} |
+TEST(CreditCardTest, SetExpirationYearFromString) { |
+ static const struct { |
+ std::string expiration_year; |
+ int expected_year; |
+ } kTestCases[] = { |
+ // Valid values. |
+ {"2040", 2040}, |
+ {"45", 2045}, |
+ {"045", 2045}, |
+ {"9", 2009}, |
+ |
+ // Unrecognized year values. |
+ {"052045", 0}, |
+ {"123", 0}, |
+ {"y2045", 0}, |
+ }; |
+ |
+ for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
+ CreditCard card(base::GenerateGUID(), "some origin"); |
+ card.SetExpirationYearFromString( |
+ ASCIIToUTF16(kTestCases[i].expiration_year)); |
+ |
+ EXPECT_EQ(kTestCases[i].expected_year, card.expiration_year()) |
+ << kTestCases[i].expiration_year << " " << kTestCases[i].expected_year; |
+ } |
+} |
+ |
+TEST(CreditCardTest, SetExpirationDateFromString) { |
+ static const struct { |
+ std::string expiration_date; |
+ int expected_month; |
+ int expected_year; |
+ } kTestCases[] = {{"10", 0, 0}, // Too small. |
+ {"1020451", 0, 0}, // Too long. |
+ |
+ // No separators. |
+ {"105", 0, 0}, // Too ambiguous. |
+ {"0545", 5, 2045}, |
+ {"52045", 0, 0}, // Too ambiguous. |
+ {"052045", 5, 2045}, |
+ |
+ // "/" separator. |
+ {"05/45", 5, 2045}, |
+ {"5/2045", 5, 2045}, |
+ {"05/2045", 5, 2045}, |
+ |
+ // "-" separator. |
+ {"05-45", 5, 2045}, |
+ {"5-2045", 5, 2045}, |
+ {"05-2045", 5, 2045}, |
+ |
+ // "|" separator. |
+ {"05|45", 5, 2045}, |
+ {"5|2045", 5, 2045}, |
+ {"05|2045", 5, 2045}, |
+ |
+ // Invalid values. |
+ {"13/2016", 0, 2016}, |
+ {"16/13", 0, 2013}, |
+ {"May-2015", 0, 0}, |
+ {"05-/2045", 0, 0}, |
+ {"05_2045", 0, 0}}; |
+ |
+ for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
+ CreditCard card(base::GenerateGUID(), "some origin"); |
+ card.SetExpirationDateFromString( |
+ ASCIIToUTF16(kTestCases[i].expiration_date)); |
+ |
+ EXPECT_EQ(kTestCases[i].expected_month, card.expiration_month()); |
+ EXPECT_EQ(kTestCases[i].expected_year, card.expiration_year()); |
+ } |
+} |
+ |
TEST(CreditCardTest, Copy) { |
CreditCard a(base::GenerateGUID(), "https://www.example.com"); |
test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); |
@@ -465,7 +538,7 @@ TEST(CreditCardTest, IsValid) { |
// Invalid because card number is not complete |
card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); |
- card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("9999")); |
+ card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2999")); |
card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("41111")); |
EXPECT_FALSE(card.IsValid()); |
@@ -727,7 +800,7 @@ TEST(CreditCardTest, LastFourDigits) { |
TEST(CreditCardTest, CanBuildFromCardNumberAndExpirationDate) { |
base::string16 card_number = base::ASCIIToUTF16("test"); |
int month = 1; |
- int year = 3000; |
+ int year = 2999; |
CreditCard card(card_number, month, year); |
EXPECT_EQ(card_number, card.number()); |
EXPECT_EQ(month, card.expiration_month()); |