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

Side by Side Diff: third_party/WebKit/Source/modules/payments/PaymentsValidatorsTest.cpp

Issue 1753543002: PaymentRequest Mojo bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@interface
Patch Set: haraken@'s + esprehn@'s comments Created 4 years, 8 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
(Empty)
1 // Copyright 2016 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 "modules/payments/PaymentsValidators.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "wtf/text/WTFString.h"
9 #include <ostream> // NOLINT
10
11 namespace blink {
12 namespace {
13
14 struct TestCase {
15 TestCase(const char* input, bool expectedValid)
16 : input(input)
17 , expectedValid(expectedValid)
18 {
19 }
20 ~TestCase() {}
21
22 const char* input;
23 bool expectedValid;
24 };
25
26 std::ostream& operator<<(std::ostream& out, const TestCase& testCase)
27 {
28 out << "'" << testCase.input << "' is expected to be " << (testCase.expected Valid ? "valid" : "invalid");
29 return out;
30 }
31
32 class PaymentsCurrencyValidatorTest : public testing::TestWithParam<TestCase> {
33 };
34
35 TEST_P(PaymentsCurrencyValidatorTest, IsValidCurrencyCodeFormat)
36 {
37 String errorMessage;
38 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidCurrencyCodeF ormat(GetParam().input, &errorMessage)) << errorMessage;
39 EXPECT_EQ(GetParam().expectedValid, errorMessage.isEmpty()) << errorMessage;
40
41 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidCurrencyCodeF ormat(GetParam().input, nullptr));
42 }
43
44 INSTANTIATE_TEST_CASE_P(CurrencyCodes,
45 PaymentsCurrencyValidatorTest,
46 testing::Values(
47 TestCase("USD", true),
48 // Invalid currency code formats
49 TestCase("US1", false),
50 TestCase("US", false),
51 TestCase("USDO", false),
52 TestCase("usd", false),
53 TestCase("", false)));
54
55 class PaymentsAmountValidatorTest : public testing::TestWithParam<TestCase> {
56 };
57
58 TEST_P(PaymentsAmountValidatorTest, IsValidAmountFormat)
59 {
60 String errorMessage;
61 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidAmountFormat( GetParam().input, &errorMessage)) << errorMessage;
62 EXPECT_EQ(GetParam().expectedValid, errorMessage.isEmpty()) << errorMessage;
63
64 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidAmountFormat( GetParam().input, nullptr));
65 }
66
67 INSTANTIATE_TEST_CASE_P(Amounts,
68 PaymentsAmountValidatorTest,
69 testing::Values(
70 TestCase("0", true),
71 TestCase("-0", true),
72 TestCase("1", true),
73 TestCase("10", true),
74 TestCase("-3", true),
75 TestCase("10.99", true),
76 TestCase("-3.00", true),
77 TestCase("01234567890123456789.0123456789", true),
78 TestCase("01234567890123456789012345678.9", true),
79 TestCase("012345678901234567890123456789", true),
80 TestCase("-01234567890123456789.0123456789", true),
81 TestCase("-01234567890123456789012345678.9", true),
82 TestCase("-012345678901234567890123456789", true),
83 // Invalid amount formats
84 TestCase("", false),
85 TestCase("-", false),
86 TestCase("notdigits", false),
87 TestCase("ALSONOTDIGITS", false),
88 TestCase("10.", false),
89 TestCase(".99", false),
90 TestCase("-10.", false),
91 TestCase("-.99", false),
92 TestCase("10-", false),
93 TestCase("1-0", false),
94 TestCase("1.0.0", false),
95 TestCase("1/3", false)));
96
97 class PaymentsRegionValidatorTest : public testing::TestWithParam<TestCase> {
98 };
99
100 TEST_P(PaymentsRegionValidatorTest, IsValidRegionCodeFormat)
101 {
102 String errorMessage;
103 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidRegionCodeFor mat(GetParam().input, &errorMessage)) << errorMessage;
104 EXPECT_EQ(GetParam().expectedValid, errorMessage.isEmpty()) << errorMessage;
105
106 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidRegionCodeFor mat(GetParam().input, nullptr));
107 }
108
109 INSTANTIATE_TEST_CASE_P(RegionCodes,
110 PaymentsRegionValidatorTest,
111 testing::Values(
112 TestCase("US", true),
113 // Invalid region code formats
114 TestCase("U1", false),
115 TestCase("U", false),
116 TestCase("us", false),
117 TestCase("USA", false),
118 TestCase("", false)));
119
120 class PaymentsLanguageValidatorTest : public testing::TestWithParam<TestCase> {
121 };
122
123 TEST_P(PaymentsLanguageValidatorTest, IsValidLanguageCodeFormat)
124 {
125 String errorMessage;
126 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidLanguageCodeF ormat(GetParam().input, &errorMessage)) << errorMessage;
127 EXPECT_EQ(GetParam().expectedValid, errorMessage.isEmpty()) << errorMessage;
128
129 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidLanguageCodeF ormat(GetParam().input, nullptr));
130 }
131
132 INSTANTIATE_TEST_CASE_P(LanguageCodes,
133 PaymentsLanguageValidatorTest,
134 testing::Values(
135 TestCase("", true),
136 TestCase("en", true),
137 TestCase("eng", true),
138 // Invalid language code formats
139 TestCase("e1", false),
140 TestCase("en1", false),
141 TestCase("e", false),
142 TestCase("engl", false),
143 TestCase("EN", false)));
144
145 class PaymentsScriptValidatorTest : public testing::TestWithParam<TestCase> {
146 };
147
148 TEST_P(PaymentsScriptValidatorTest, IsValidScriptCodeFormat)
149 {
150 String errorMessage;
151 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidScriptCodeFor mat(GetParam().input, &errorMessage)) << errorMessage;
152 EXPECT_EQ(GetParam().expectedValid, errorMessage.isEmpty()) << errorMessage;
153
154 EXPECT_EQ(GetParam().expectedValid, PaymentsValidators::isValidScriptCodeFor mat(GetParam().input, nullptr));
155 }
156
157 INSTANTIATE_TEST_CASE_P(ScriptCodes,
158 PaymentsScriptValidatorTest,
159 testing::Values(
160 TestCase("", true),
161 TestCase("Latn", true),
162 // Invalid script code formats
163 TestCase("Lat1", false),
164 TestCase("1lat", false),
165 TestCase("Latin", false),
166 TestCase("Lat", false),
167 TestCase("latn", false),
168 TestCase("LATN", false)));
169
170 } // namespace
171 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698