Index: third_party/WebKit/Source/modules/payments/PaymentsValidatorsTest.cpp |
diff --git a/third_party/WebKit/Source/modules/payments/PaymentsValidatorsTest.cpp b/third_party/WebKit/Source/modules/payments/PaymentsValidatorsTest.cpp |
index e2d904bd83430a1b235c17ba84de5235ff5e09a6..6b68029fd3a94c9f4d0d06de59bb32a410bde8bd 100644 |
--- a/third_party/WebKit/Source/modules/payments/PaymentsValidatorsTest.cpp |
+++ b/third_party/WebKit/Source/modules/payments/PaymentsValidatorsTest.cpp |
@@ -11,23 +11,18 @@ |
namespace blink { |
namespace { |
-struct TestCase { |
- TestCase(const char* input, bool expectedValid) |
- : input(input), expectedValid(expectedValid) {} |
- ~TestCase() {} |
+struct CurrencyCodeTestCase { |
+ CurrencyCodeTestCase(const char* code, const char* system, bool expectedValid) |
+ : code(code), system(system), expectedValid(expectedValid) {} |
+ ~CurrencyCodeTestCase() {} |
- const char* input; |
+ const char* code; |
+ const char* system; |
bool expectedValid; |
}; |
-std::ostream& operator<<(std::ostream& out, const TestCase& testCase) { |
- out << "'" << testCase.input << "' is expected to be " |
- << (testCase.expectedValid ? "valid" : "invalid"); |
- return out; |
-} |
- |
-class PaymentsCurrencyValidatorTest : public testing::TestWithParam<TestCase> { |
-}; |
+class PaymentsCurrencyValidatorTest |
+ : public testing::TestWithParam<CurrencyCodeTestCase> {}; |
const char* longString2048() { |
static char longString[2049]; |
@@ -48,30 +43,61 @@ const char* longString2049() { |
TEST_P(PaymentsCurrencyValidatorTest, IsValidCurrencyCodeFormat) { |
String errorMessage; |
EXPECT_EQ(GetParam().expectedValid, |
- PaymentsValidators::isValidCurrencyCodeFormat(GetParam().input, |
- &errorMessage)) |
+ PaymentsValidators::isValidCurrencyCodeFormat( |
+ GetParam().code, GetParam().system, &errorMessage)) |
<< errorMessage; |
EXPECT_EQ(GetParam().expectedValid, errorMessage.isEmpty()) << errorMessage; |
- EXPECT_EQ( |
- GetParam().expectedValid, |
- PaymentsValidators::isValidCurrencyCodeFormat(GetParam().input, nullptr)); |
+ EXPECT_EQ(GetParam().expectedValid, |
+ PaymentsValidators::isValidCurrencyCodeFormat( |
+ GetParam().code, GetParam().system, nullptr)); |
} |
INSTANTIATE_TEST_CASE_P( |
CurrencyCodes, |
PaymentsCurrencyValidatorTest, |
testing::Values( |
- // Any string of at most 2048 characters can be a valid currency code |
- TestCase("USD", true), |
- TestCase("US1", true), |
- TestCase("US", true), |
- TestCase("USDO", true), |
- TestCase("usd", true), |
- TestCase("ANYSTRING", true), |
- TestCase("", true), |
- TestCase(longString2048(), true), |
- TestCase(longString2049(), false))); |
+ // The most common identifiers are three-letter alphabetic codes as |
+ // defined by [ISO4217] (for example, "USD" for US Dollars). |
+ // |system| is a URL that indicates the currency system that the |
+ // currency identifier belongs to. By default, |
+ // the value is urn:iso:std:iso:4217 indicating that currency is defined |
+ // by [[ISO4217]], however any string of at most 2048 |
+ // characters is considered valid in other currencySystem. Returns false |
+ // if currency |code| is too long (greater than 2048). |
+ CurrencyCodeTestCase("USD", "urn:iso:std:iso:4217", true), |
+ CurrencyCodeTestCase("US1", "http://www.example.com", true), |
+ CurrencyCodeTestCase("US1", "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase("US", "http://www.example.com", true), |
+ CurrencyCodeTestCase("US", "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase("USDO", "http://www.example.com", true), |
+ CurrencyCodeTestCase("USDO", "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase("usd", "http://www.example.com", true), |
+ CurrencyCodeTestCase("usd", "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase("ANYSTRING", "http://www.example.com", true), |
+ CurrencyCodeTestCase("ANYSTRING", "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase("", "http://www.example.com", true), |
+ CurrencyCodeTestCase("", "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase(longString2048(), "http://www.example.com", true), |
+ CurrencyCodeTestCase(longString2048(), "urn:iso:std:iso:4217", false), |
+ CurrencyCodeTestCase(longString2049(), |
+ "http://www.example.com", |
+ false))); |
+ |
+struct TestCase { |
+ TestCase(const char* input, bool expectedValid) |
+ : input(input), expectedValid(expectedValid) {} |
+ ~TestCase() {} |
+ |
+ const char* input; |
+ bool expectedValid; |
+}; |
+ |
+std::ostream& operator<<(std::ostream& out, const TestCase& testCase) { |
+ out << "'" << testCase.input << "' is expected to be " |
+ << (testCase.expectedValid ? "valid" : "invalid"); |
+ return out; |
+} |
class PaymentsAmountValidatorTest : public testing::TestWithParam<TestCase> {}; |