Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(716)

Side by Side Diff: components/autofill/core/browser/credit_card_unittest.cc

Issue 2136453003: [Autofill] Improve support for various credit card expiration dates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final nits Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/guid.h" 7 #include "base/guid.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 // Result of assignment should be logically equal to the original profile. 160 // Result of assignment should be logically equal to the original profile.
161 CreditCard b(base::GenerateGUID(), "some other origin"); 161 CreditCard b(base::GenerateGUID(), "some other origin");
162 b = a; 162 b = a;
163 EXPECT_TRUE(a == b); 163 EXPECT_TRUE(a == b);
164 164
165 // Assignment to self should not change the profile value. 165 // Assignment to self should not change the profile value.
166 a = a; 166 a = a;
167 EXPECT_TRUE(a == b); 167 EXPECT_TRUE(a == b);
168 } 168 }
169 169
170 TEST(CreditCardTest, SetExpirationYearFromString) {
171 static const struct {
172 std::string expiration_year;
173 int expected_year;
174 } kTestCases[] = {
175 // Valid values.
176 {"2040", 2040},
177 {"45", 2045},
178 {"045", 2045},
179 {"9", 2009},
180
181 // Unrecognized year values.
182 {"052045", 0},
183 {"123", 0},
184 {"y2045", 0},
185 };
186
187 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
188 CreditCard card(base::GenerateGUID(), "some origin");
189 card.SetExpirationYearFromString(
190 ASCIIToUTF16(kTestCases[i].expiration_year));
191
192 EXPECT_EQ(kTestCases[i].expected_year, card.expiration_year())
193 << kTestCases[i].expiration_year << " " << kTestCases[i].expected_year;
194 }
195 }
196
197 TEST(CreditCardTest, SetExpirationDateFromString) {
198 static const struct {
199 std::string expiration_date;
200 int expected_month;
201 int expected_year;
202 } kTestCases[] = {{"10", 0, 0}, // Too small.
203 {"1020451", 0, 0}, // Too long.
204
205 // No separators.
206 {"105", 0, 0}, // Too ambiguous.
207 {"0545", 5, 2045},
208 {"52045", 0, 0}, // Too ambiguous.
209 {"052045", 5, 2045},
210
211 // "/" separator.
212 {"05/45", 5, 2045},
213 {"5/2045", 5, 2045},
214 {"05/2045", 5, 2045},
215
216 // "-" separator.
217 {"05-45", 5, 2045},
218 {"5-2045", 5, 2045},
219 {"05-2045", 5, 2045},
220
221 // "|" separator.
222 {"05|45", 5, 2045},
223 {"5|2045", 5, 2045},
224 {"05|2045", 5, 2045},
225
226 // Invalid values.
227 {"13/2016", 0, 2016},
228 {"16/13", 0, 2013},
229 {"May-2015", 0, 0},
230 {"05-/2045", 0, 0},
231 {"05_2045", 0, 0}};
232
233 for (size_t i = 0; i < arraysize(kTestCases); ++i) {
234 CreditCard card(base::GenerateGUID(), "some origin");
235 card.SetExpirationDateFromString(
236 ASCIIToUTF16(kTestCases[i].expiration_date));
237
238 EXPECT_EQ(kTestCases[i].expected_month, card.expiration_month());
239 EXPECT_EQ(kTestCases[i].expected_year, card.expiration_year());
240 }
241 }
242
170 TEST(CreditCardTest, Copy) { 243 TEST(CreditCardTest, Copy) {
171 CreditCard a(base::GenerateGUID(), "https://www.example.com"); 244 CreditCard a(base::GenerateGUID(), "https://www.example.com");
172 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010"); 245 test::SetCreditCardInfo(&a, "John Dillinger", "123456789012", "01", "2010");
173 246
174 // Clone should be logically equal to the original. 247 // Clone should be logically equal to the original.
175 CreditCard b(a); 248 CreditCard b(a);
176 EXPECT_TRUE(a == b); 249 EXPECT_TRUE(a == b);
177 } 250 }
178 251
179 TEST(CreditCardTest, IsLocalDuplicateOfServerCard) { 252 TEST(CreditCardTest, IsLocalDuplicateOfServerCard) {
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 now.LocalExplode(&now_exploded); 531 now.LocalExplode(&now_exploded);
459 card.SetRawInfo(CREDIT_CARD_EXP_MONTH, 532 card.SetRawInfo(CREDIT_CARD_EXP_MONTH,
460 base::IntToString16(now_exploded.month)); 533 base::IntToString16(now_exploded.month));
461 card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, 534 card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR,
462 base::IntToString16(now_exploded.year - 1)); 535 base::IntToString16(now_exploded.year - 1));
463 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111")); 536 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
464 EXPECT_FALSE(card.IsValid()); 537 EXPECT_FALSE(card.IsValid());
465 538
466 // Invalid because card number is not complete 539 // Invalid because card number is not complete
467 card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); 540 card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12"));
468 card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("9999")); 541 card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2999"));
469 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("41111")); 542 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("41111"));
470 EXPECT_FALSE(card.IsValid()); 543 EXPECT_FALSE(card.IsValid());
471 544
472 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) { 545 for (size_t i = 0; i < arraysize(kValidNumbers); ++i) {
473 SCOPED_TRACE(kValidNumbers[i]); 546 SCOPED_TRACE(kValidNumbers[i]);
474 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kValidNumbers[i])); 547 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16(kValidNumbers[i]));
475 EXPECT_TRUE(card.IsValid()); 548 EXPECT_TRUE(card.IsValid());
476 } 549 }
477 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) { 550 for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) {
478 SCOPED_TRACE(kInvalidNumbers[i]); 551 SCOPED_TRACE(kInvalidNumbers[i]);
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("3489")); 793 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("3489"));
721 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits()); 794 ASSERT_EQ(base::ASCIIToUTF16("3489"), card.LastFourDigits());
722 795
723 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("489")); 796 card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("489"));
724 ASSERT_EQ(base::ASCIIToUTF16("489"), card.LastFourDigits()); 797 ASSERT_EQ(base::ASCIIToUTF16("489"), card.LastFourDigits());
725 } 798 }
726 799
727 TEST(CreditCardTest, CanBuildFromCardNumberAndExpirationDate) { 800 TEST(CreditCardTest, CanBuildFromCardNumberAndExpirationDate) {
728 base::string16 card_number = base::ASCIIToUTF16("test"); 801 base::string16 card_number = base::ASCIIToUTF16("test");
729 int month = 1; 802 int month = 1;
730 int year = 3000; 803 int year = 2999;
731 CreditCard card(card_number, month, year); 804 CreditCard card(card_number, month, year);
732 EXPECT_EQ(card_number, card.number()); 805 EXPECT_EQ(card_number, card.number());
733 EXPECT_EQ(month, card.expiration_month()); 806 EXPECT_EQ(month, card.expiration_month());
734 EXPECT_EQ(year, card.expiration_year()); 807 EXPECT_EQ(year, card.expiration_year());
735 } 808 }
736 809
737 // Verifies that a credit card should be updated. 810 // Verifies that a credit card should be updated.
738 TEST(CreditCardTest, ShouldUpdateExpiration) { 811 TEST(CreditCardTest, ShouldUpdateExpiration) {
739 base::Time now = base::Time::Now(); 812 base::Time now = base::Time::Now();
740 813
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 card.set_record_type(kTestCases[i].record_type); 899 card.set_record_type(kTestCases[i].record_type);
827 if (card.record_type() != CreditCard::LOCAL_CARD) 900 if (card.record_type() != CreditCard::LOCAL_CARD)
828 card.SetServerStatus(kTestCases[i].server_status); 901 card.SetServerStatus(kTestCases[i].server_status);
829 902
830 EXPECT_EQ(kTestCases[i].should_update_expiration, 903 EXPECT_EQ(kTestCases[i].should_update_expiration,
831 card.ShouldUpdateExpiration(now)); 904 card.ShouldUpdateExpiration(now));
832 } 905 }
833 } 906 }
834 907
835 } // namespace autofill 908 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/credit_card.cc ('k') | components/autofill/core/browser/personal_data_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698