Implementing SaveToWallet in the Google Wallet client.
-Adds WalletClient::SaveAddress to save new shipping addresses
-Adds WalletClient::SaveInstruemnt to save new payment instruments
-Adds WalletClient::SaveInstrumentAndAddress
-Adds Instrument to represent payment instruments to be saved
-Adds ability to turn an Address into a DictionaryValue
BUG=164284
Review URL: https://chromiumcodereview.appspot.com/11839003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177814 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/autofill/validation_unittest.cc b/chrome/browser/autofill/validation_unittest.cc
new file mode 100644
index 0000000..bb94a0f
--- /dev/null
+++ b/chrome/browser/autofill/validation_unittest.cc
@@ -0,0 +1,51 @@
+// Copyright (c) 2013 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/validation.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+// From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm
+const char* const kValidNumbers[] = {
+ "378282246310005",
+ "3714 4963 5398 431",
+ "3787-3449-3671-000",
+ "5610591081018250",
+ "3056 9309 0259 04",
+ "3852-0000-0232-37",
+ "6011111111111117",
+ "6011 0009 9013 9424",
+ "3530-1113-3330-0000",
+ "3566002020360505",
+ "5555 5555 5555 4444",
+ "5105-1051-0510-5100",
+ "4111111111111111",
+ "4012 8888 8888 1881",
+ "4222-2222-2222-2",
+ "5019717010103742",
+ "6331101999990016",
+};
+const char* const kInvalidNumbers[] = {
+ "4111 1111 112", /* too short */
+ "41111111111111111115", /* too long */
+ "4111-1111-1111-1110", /* wrong Luhn checksum */
+ "3056 9309 0259 04aa", /* non-digit characters */
+};
+
+} // namespace
+
+TEST(AutofillValidation, IsValidCreditCardNumber) {
+ for (size_t i = 0; i < arraysize(kValidNumbers); ++i) {
+ SCOPED_TRACE(kValidNumbers[i]);
+ EXPECT_TRUE(
+ autofill::IsValidCreditCardNumber(ASCIIToUTF16(kValidNumbers[i])));
+ }
+ for (size_t i = 0; i < arraysize(kInvalidNumbers); ++i) {
+ SCOPED_TRACE(kInvalidNumbers[i]);
+ EXPECT_FALSE(
+ autofill::IsValidCreditCardNumber(ASCIIToUTF16(kInvalidNumbers[i])));
+ }
+}