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 |