| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 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 package org.chromium.chrome.browser.payments; | 5 package org.chromium.chrome.browser.payments; |
| 6 | 6 |
| 7 import org.junit.Assert; | 7 import org.junit.Assert; |
| 8 import org.junit.Test; | 8 import org.junit.Test; |
| 9 import org.junit.runner.RunWith; | 9 import org.junit.runner.RunWith; |
| 10 import org.junit.runners.Parameterized; | 10 import org.junit.runners.Parameterized; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 private enum ExpectedValidity { | 27 private enum ExpectedValidity { |
| 28 VALID_AMOUNT, | 28 VALID_AMOUNT, |
| 29 INVALID_AMOUNT_CURRENCY_CODE, | 29 INVALID_AMOUNT_CURRENCY_CODE, |
| 30 INVALID_AMOUNT_VALUE, | 30 INVALID_AMOUNT_VALUE, |
| 31 }; | 31 }; |
| 32 | 32 |
| 33 @Parameters | 33 @Parameters |
| 34 public static Collection<Object[]> data() { | 34 public static Collection<Object[]> data() { |
| 35 return Arrays.asList(new Object[][] { | 35 return Arrays.asList(new Object[][] { |
| 36 {"55.00", "USD", "en-US", "$55.00", ExpectedValidity.VALID_AMOUNT}, | 36 {"55.00", "USD", "en-US", "USD", "$55.00", ExpectedValidity.VALID_AM
OUNT}, |
| 37 {"55.00", "USD", "en-CA", "$55.00", ExpectedValidity.VALID_AMOUNT}, | 37 {"55.00", "USD", "en-CA", "USD", "$55.00", ExpectedValidity.VALID_AM
OUNT}, |
| 38 {"55.00", "USD", "fr-CA", "$55,00", ExpectedValidity.VALID_AMOUNT}, | 38 {"55.00", "USD", "fr-CA", "USD", "$55,00", ExpectedValidity.VALID_AM
OUNT}, |
| 39 {"55.00", "USD", "fr-FR", "$55,00", ExpectedValidity.VALID_AMOUNT}, | 39 {"55.00", "USD", "fr-FR", "USD", "$55,00", ExpectedValidity.VALID_AM
OUNT}, |
| 40 | 40 |
| 41 {"55.00", "EUR", "en-US", "55.00", ExpectedValidity.VALID_AMOUNT}, | 41 {"55.00", "EUR", "en-US", "EUR", "55.00", ExpectedValidity.VALID_AMO
UNT}, |
| 42 {"55.00", "EUR", "en-CA", "55.00", ExpectedValidity.VALID_AMOUNT}, | 42 {"55.00", "EUR", "en-CA", "EUR", "55.00", ExpectedValidity.VALID_AMO
UNT}, |
| 43 {"55.00", "EUR", "fr-CA", "55,00", ExpectedValidity.VALID_AMOUNT}, | 43 {"55.00", "EUR", "fr-CA", "EUR", "55,00", ExpectedValidity.VALID_AMO
UNT}, |
| 44 {"55.00", "EUR", "fr-FR", "55,00", ExpectedValidity.VALID_AMOUNT}, | 44 {"55.00", "EUR", "fr-FR", "EUR", "55,00", ExpectedValidity.VALID_AMO
UNT}, |
| 45 | 45 |
| 46 {"55.00", "CAD", "en-US", "55.00", ExpectedValidity.VALID_AMOUNT}, | 46 {"55.00", "CAD", "en-US", "CAD", "55.00", ExpectedValidity.VALID_AMO
UNT}, |
| 47 {"55.00", "CAD", "en-CA", "55.00", ExpectedValidity.VALID_AMOUNT}, | 47 {"55.00", "CAD", "en-CA", "CAD", "55.00", ExpectedValidity.VALID_AMO
UNT}, |
| 48 {"55.00", "CAD", "fr-CA", "55,00", ExpectedValidity.VALID_AMOUNT}, | 48 {"55.00", "CAD", "fr-CA", "CAD", "55,00", ExpectedValidity.VALID_AMO
UNT}, |
| 49 {"55.00", "CAD", "fr-FR", "55,00", ExpectedValidity.VALID_AMOUNT}, | 49 {"55.00", "CAD", "fr-FR", "CAD", "55,00", ExpectedValidity.VALID_AMO
UNT}, |
| 50 | 50 |
| 51 {"55.12", "JPY", "ja-JP", "55.12", ExpectedValidity.VALID_AMOUNT}, | 51 {"55.12", "JPY", "ja-JP", "JPY", "55.12", ExpectedValidity.VALID_AMO
UNT}, |
| 52 {"55.00", "JPY", "ja-JP", "55.00", ExpectedValidity.VALID_AMOUNT}, | 52 {"55.00", "JPY", "ja-JP", "JPY", "55.00", ExpectedValidity.VALID_AMO
UNT}, |
| 53 {"55.0", "JPY", "ja-JP", "55.0", ExpectedValidity.VALID_AMOUNT}, | 53 {"55.0", "JPY", "ja-JP", "JPY", "55.0", ExpectedValidity.VALID_AMOUN
T}, |
| 54 {"55", "JPY", "ja-JP", "55", ExpectedValidity.VALID_AMOUNT}, | 54 {"55", "JPY", "ja-JP", "JPY", "55", ExpectedValidity.VALID_AMOUNT}, |
| 55 | 55 |
| 56 // Unofficial ISO 4217 currency code. | 56 // Unofficial ISO 4217 currency code. |
| 57 {"55.00", "BTX", "en-US", "55.00", ExpectedValidity.VALID_AMOUNT}, | 57 {"55.00", "BTX", "en-US", "BTX", "55.00", ExpectedValidity.VALID_AMO
UNT}, |
| 58 {"-55.00", "BTX", "en-US", "-55.00", ExpectedValidity.VALID_AMOUNT}, | 58 {"-55.00", "BTX", "en-US", "BTX", "-55.00", ExpectedValidity.VALID_A
MOUNT}, |
| 59 | 59 |
| 60 {"55.5", "USD", "en-US", "$55.50", ExpectedValidity.VALID_AMOUNT}, | 60 {"55.5", "USD", "en-US", "USD", "$55.50", ExpectedValidity.VALID_AMO
UNT}, |
| 61 {"55", "USD", "en-US", "$55.00", ExpectedValidity.VALID_AMOUNT}, | 61 {"55", "USD", "en-US", "USD", "$55.00", ExpectedValidity.VALID_AMOUN
T}, |
| 62 {"123", "USD", "en-US", "$123.00", ExpectedValidity.VALID_AMOUNT}, | 62 {"123", "USD", "en-US", "USD", "$123.00", ExpectedValidity.VALID_AMO
UNT}, |
| 63 {"1234", "USD", "en-US", "$1,234.00", ExpectedValidity.VALID_AMOUNT}
, | 63 {"1234", "USD", "en-US", "USD", "$1,234.00", ExpectedValidity.VALID_
AMOUNT}, |
| 64 | 64 |
| 65 {"-123", "USD", "en-US", "-$123.00", ExpectedValidity.VALID_AMOUNT}, | 65 {"-123", "USD", "en-US", "USD", "-$123.00", ExpectedValidity.VALID_A
MOUNT}, |
| 66 {"-1234", "USD", "en-US", "-$1,234.00", ExpectedValidity.VALID_AMOUN
T}, | 66 {"-1234", "USD", "en-US", "USD", "-$1,234.00", ExpectedValidity.VALI
D_AMOUNT}, |
| 67 | 67 |
| 68 {"123456789012345678901234567890.123456789012345678901234567890", "U
SD", "fr-FR", | 68 {"123456789012345678901234567890.123456789012345678901234567890", "U
SD", "fr-FR", "USD", |
| 69 "$123" + SPACE + "456" + SPACE + "789" + SPACE + "012" + SPA
CE + "345" | 69 "$123" + SPACE + "456" + SPACE + "789" + SPACE + "012" + SPA
CE + "345" |
| 70 + SPACE + "678" + SPACE + "901" + SPACE + "234" + SP
ACE + "567" | 70 + SPACE + "678" + SPACE + "901" + SPACE + "234" + SP
ACE + "567" |
| 71 + SPACE + "890,123456789012345678901234567890", | 71 + SPACE + "890,123456789012345678901234567890", |
| 72 ExpectedValidity.VALID_AMOUNT}, | 72 ExpectedValidity.VALID_AMOUNT}, |
| 73 {"123456789012345678901234567890.123456789012345678901234567890", "U
SD", "en-US", | 73 {"123456789012345678901234567890.123456789012345678901234567890", "U
SD", "en-US", "USD", |
| 74 "$123,456,789,012,345,678,901,234,567,890.123456789012345678
901234567890", | 74 "$123,456,789,012,345,678,901,234,567,890.123456789012345678
901234567890", |
| 75 ExpectedValidity.VALID_AMOUNT}, | 75 ExpectedValidity.VALID_AMOUNT}, |
| 76 | 76 |
| 77 // Any string of at most 2048 characters can be valid amount currenc
y codes. | 77 // Any string of at most 2048 characters can be valid amount currenc
y codes. |
| 78 {"55.00", "", "en-US", "55.00", ExpectedValidity.VALID_AMOUNT}, | 78 {"55.00", "", "en-US", "", "55.00", ExpectedValidity.VALID_AMOUNT}, |
| 79 {"55.00", "ABCDEF", "en-US", "55.00", ExpectedValidity.VALID_AMOUNT}
, | 79 {"55.00", "ABCDEF", "en-US", "ABCDEF", "55.00", ExpectedValidity.VAL
ID_AMOUNT}, |
| 80 {"55.00", longStringOfLength(2048), "en-US", "55.00", ExpectedValidi
ty.VALID_AMOUNT}, | 80 // Currency code more than 6 character is formatted to first 5 chara
cters and ellipsis. |
| 81 // "\u2026" is unicode for ellipsis. |
| 82 {"55.00", longStringOfLength(2048), "en-US", "AAAAA\u2026", "55.00", |
| 83 ExpectedValidity.VALID_AMOUNT}, |
| 81 | 84 |
| 82 // Invalid amount currency codes. | 85 // Invalid amount currency codes. |
| 83 {"55.00", longStringOfLength(2049), "en-US", null, | 86 {"55.00", longStringOfLength(2049), "en-US", null, null, |
| 84 ExpectedValidity.INVALID_AMOUNT_CURRENCY_CODE}, | 87 ExpectedValidity.INVALID_AMOUNT_CURRENCY_CODE}, |
| 85 | 88 |
| 86 // Invalid amount values. | 89 // Invalid amount values. |
| 87 {"", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}, | 90 {"", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT_VA
LUE}, |
| 88 {"-", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}, | 91 {"-", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT_V
ALUE}, |
| 89 {"notdigits", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_
VALUE}, | 92 {"notdigits", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_
AMOUNT_VALUE}, |
| 90 {"ALSONOTDIGITS", "USD", "en-US", null, ExpectedValidity.INVALID_AMO
UNT_VALUE}, | 93 {"ALSONOTDIGITS", "USD", "en-US", "USD", null, ExpectedValidity.INVA
LID_AMOUNT_VALUE}, |
| 91 {"10.", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}
, | 94 {"10.", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT
_VALUE}, |
| 92 {".99", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}
, | 95 {".99", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT
_VALUE}, |
| 93 {"10-", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}
, | 96 {"10-", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT
_VALUE}, |
| 94 {"1-0", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}
, | 97 {"1-0", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT
_VALUE}, |
| 95 {"1.0.0", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALU
E}, | 98 {"1.0.0", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOU
NT_VALUE}, |
| 96 {"1/3", "USD", "en-US", null, ExpectedValidity.INVALID_AMOUNT_VALUE}
, | 99 {"1/3", "USD", "en-US", "USD", null, ExpectedValidity.INVALID_AMOUNT
_VALUE}, |
| 97 }); | 100 }); |
| 98 } | 101 } |
| 99 | 102 |
| 100 private final String mAmount; | 103 private final String mAmount; |
| 101 private final String mCurrency; | 104 private final String mCurrency; |
| 102 private final String mLanguageTag; | 105 private final String mLanguageTag; |
| 103 private final String mExpectedFormatting; | 106 private final String mExpectedCurrencyFormatting; |
| 107 private final String mExpectedAmountFormatting; |
| 104 private final ExpectedValidity mExpectedValidity; | 108 private final ExpectedValidity mExpectedValidity; |
| 105 | 109 |
| 106 private static String longStringOfLength(int len) { | 110 private static String longStringOfLength(int len) { |
| 107 StringBuilder currency = new StringBuilder(); | 111 StringBuilder currency = new StringBuilder(); |
| 108 for (int i = 0; i < len; i++) { | 112 for (int i = 0; i < len; i++) { |
| 109 currency.append("A"); | 113 currency.append("A"); |
| 110 } | 114 } |
| 111 return currency.toString(); | 115 return currency.toString(); |
| 112 } | 116 } |
| 113 | 117 |
| 114 public CurrencyStringFormatterTest(String amount, String currency, String la
nguageTag, | 118 public CurrencyStringFormatterTest(String amount, String currency, String la
nguageTag, |
| 115 String expectedFormatting, ExpectedValidity expectedValidity) { | 119 String expectedCurrencyFormatting, String expectedAmountFormatting, |
| 120 ExpectedValidity expectedValidity) { |
| 116 mAmount = amount; | 121 mAmount = amount; |
| 117 mCurrency = currency; | 122 mCurrency = currency; |
| 118 mLanguageTag = languageTag; | 123 mLanguageTag = languageTag; |
| 119 mExpectedFormatting = expectedFormatting; | 124 mExpectedCurrencyFormatting = expectedCurrencyFormatting; |
| 125 mExpectedAmountFormatting = expectedAmountFormatting; |
| 120 mExpectedValidity = expectedValidity; | 126 mExpectedValidity = expectedValidity; |
| 121 } | 127 } |
| 122 | 128 |
| 123 @Test | 129 @Test |
| 124 public void test() { | 130 public void test() { |
| 125 CurrencyStringFormatter formatter = new CurrencyStringFormatter(mCurrenc
y, | 131 CurrencyStringFormatter formatter = new CurrencyStringFormatter(mCurrenc
y, |
| 126 Locale.forLanguageTag(mLanguageTag)); | 132 Locale.forLanguageTag(mLanguageTag)); |
| 127 | 133 |
| 128 if (mExpectedValidity == ExpectedValidity.INVALID_AMOUNT_CURRENCY_CODE)
{ | 134 if (mExpectedValidity == ExpectedValidity.INVALID_AMOUNT_CURRENCY_CODE)
{ |
| 129 Assert.assertFalse("\"" + mCurrency + "\" should be invalid currency
code", | 135 Assert.assertFalse("\"" + mCurrency + "\" should be invalid currency
code", |
| 130 formatter.isValidAmountCurrencyCode(mCurrency)); | 136 formatter.isValidAmountCurrencyCode(mCurrency)); |
| 131 } else { | 137 } else { |
| 132 Assert.assertTrue("\"" + mCurrency + "\" should be valid currency co
de", | 138 Assert.assertTrue("\"" + mCurrency + "\" should be valid currency co
de", |
| 133 formatter.isValidAmountCurrencyCode(mCurrency)); | 139 formatter.isValidAmountCurrencyCode(mCurrency)); |
| 134 } | 140 } |
| 135 | 141 |
| 136 if (mExpectedValidity == ExpectedValidity.INVALID_AMOUNT_VALUE) { | 142 if (mExpectedValidity == ExpectedValidity.INVALID_AMOUNT_VALUE) { |
| 137 Assert.assertFalse("\"" + mAmount + "\" should be invalid amount val
ue", | 143 Assert.assertFalse("\"" + mAmount + "\" should be invalid amount val
ue", |
| 138 formatter.isValidAmountValue(mAmount)); | 144 formatter.isValidAmountValue(mAmount)); |
| 139 } else { | 145 } else { |
| 140 Assert.assertTrue("\"" + mAmount + "\" should be valid amount value"
, | 146 Assert.assertTrue("\"" + mAmount + "\" should be valid amount value"
, |
| 141 formatter.isValidAmountValue(mAmount)); | 147 formatter.isValidAmountValue(mAmount)); |
| 142 } | 148 } |
| 143 | 149 |
| 144 if (mExpectedValidity == ExpectedValidity.VALID_AMOUNT) { | 150 if (mExpectedValidity == ExpectedValidity.VALID_AMOUNT) { |
| 145 Assert.assertEquals("\"" + mCurrency + "\" \"" + mAmount + "\" (\""
+ mLanguageTag | 151 Assert.assertEquals("\"" + mCurrency + "\" \"" + mAmount + "\" (\""
+ mLanguageTag |
| 146 + "\" locale) should be formatted into \"" + mExpect
edFormatting + "\"", | 152 + "\" locale) should be formatted into \"" |
| 147 mExpectedFormatting, formatter.format(mAmount)); | 153 + mExpectedAmountFormatting + "\"", |
| 154 mExpectedAmountFormatting, formatter.format(mAmount)); |
| 155 Assert.assertEquals("\"" + mCurrency + "\"" + " should be formatted
into \"" |
| 156 + mExpectedCurrencyFormatting + "\"", |
| 157 mExpectedCurrencyFormatting, formatter.getFormattedCurrencyC
ode()); |
| 148 } | 158 } |
| 149 } | 159 } |
| 150 } | 160 } |
| OLD | NEW |