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

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

Powered by Google App Engine
This is Rietveld 408576698