mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-15 09:45:26 +00:00
ICU-10458 Add more data driven tests for parsing currency.
X-SVN-Rev: 37508
This commit is contained in:
parent
9672f10d99
commit
68597cddb7
4 changed files with 350 additions and 0 deletions
|
@ -721,6 +721,13 @@ parseNoExponent parse output breaks
|
|||
1 5e2 5 J
|
||||
1 5.3E2 5.3 JK
|
||||
|
||||
test parse currency fail
|
||||
set pattern 0
|
||||
set locale en
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
// See ticket 11735
|
||||
53.45 fail USD J
|
||||
|
||||
test parse strange prefix
|
||||
set locale en
|
||||
|
@ -782,4 +789,297 @@ NaN 0.0 other
|
|||
5.1 0.0 one
|
||||
5.09 0.0 one
|
||||
|
||||
test parse currency ISO
|
||||
set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
$53.45 53.45 USD
|
||||
53.45 USD 53.45 USD
|
||||
USD 53.45 53.45 USD J
|
||||
53.45USD fail USD
|
||||
USD53.45 53.45 USD
|
||||
(7.92) USD -7.92 USD
|
||||
(7.92) EUR -7.92 EUR
|
||||
(7.926) USD -7.926 USD
|
||||
(7.926 USD) fail USD
|
||||
(USD 7.926) fail USD
|
||||
USD (7.926) fail USD
|
||||
USD (7.92) fail USD
|
||||
(7.92)USD fail USD
|
||||
USD(7.92) fail USD
|
||||
(8) USD -8 USD
|
||||
-8 USD fail USD
|
||||
67 USD 67 USD
|
||||
53.45$ fail USD
|
||||
US Dollars 53.45 53.45 USD J
|
||||
53.45 US Dollars 53.45 USD
|
||||
US Dollar 53.45 53.45 USD J
|
||||
53.45 US Dollar 53.45 USD
|
||||
US Dollars53.45 53.45 USD
|
||||
53.45US Dollars fail USD
|
||||
US Dollar53.45 53.45 USD
|
||||
US Dollat53.45 fail USD
|
||||
53.45US Dollar fail USD
|
||||
US Dollars (53.45) fail USD
|
||||
(53.45) US Dollars -53.45 USD
|
||||
US Dollar (53.45) fail USD
|
||||
(53.45) US Dollar -53.45 USD
|
||||
US Dollars(53.45) fail USD
|
||||
(53.45)US Dollars fail USD
|
||||
US Dollar(53.45) fail USD
|
||||
US Dollat(53.45) fail USD
|
||||
(53.45)US Dollar fail USD
|
||||
|
||||
|
||||
test parse currency ISO negative
|
||||
set pattern 0.00 \u00a4\u00a4;-# \u00a4\u00a4
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
$53.45 53.45 USD
|
||||
53.45 USD 53.45 USD
|
||||
USD 53.45 53.45 USD J
|
||||
53.45USD fail USD
|
||||
USD53.45 53.45 USD
|
||||
-7.92 USD -7.92 USD
|
||||
-7.92 EUR -7.92 EUR
|
||||
-7.926 USD -7.926 USD
|
||||
USD -7.926 fail USD
|
||||
-7.92USD fail USD
|
||||
USD-7.92 fail USD
|
||||
-8 USD -8 USD
|
||||
67 USD 67 USD
|
||||
53.45$ fail USD
|
||||
US Dollars 53.45 53.45 USD J
|
||||
53.45 US Dollars 53.45 USD
|
||||
US Dollar 53.45 53.45 USD J
|
||||
53.45 US Dollar 53.45 USD
|
||||
US Dollars53.45 53.45 USD
|
||||
53.45US Dollars fail USD
|
||||
US Dollar53.45 53.45 USD
|
||||
US Dollat53.45 fail USD
|
||||
53.45US Dollar fail USD
|
||||
|
||||
|
||||
test parse currency long
|
||||
set pattern 0.00 \u00a4\u00a4\u00a4;(#) \u00a4\u00a4\u00a4
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
$53.45 53.45 USD
|
||||
53.45 USD 53.45 USD
|
||||
USD 53.45 53.45 USD J
|
||||
// See ticket 11735
|
||||
53.45USD fail USD J
|
||||
USD53.45 53.45 USD
|
||||
(7.92) USD -7.92 USD
|
||||
(7.926) USD -7.926 USD
|
||||
(7.926 USD) fail USD
|
||||
(USD 7.926) fail USD
|
||||
USD (7.926) fail USD
|
||||
USD (7.92) fail USD
|
||||
(7.92)USD fail USD
|
||||
USD(7.92) fail USD
|
||||
(8) USD -8 USD
|
||||
// See ticket 11735
|
||||
-8 USD fail USD J
|
||||
67 USD 67 USD
|
||||
// See ticket 11735
|
||||
53.45$ fail USD J
|
||||
US Dollars 53.45 53.45 USD J
|
||||
53.45 US Dollars 53.45 USD
|
||||
US Dollar 53.45 53.45 USD J
|
||||
53.45 US Dollar 53.45 USD
|
||||
US Dollars53.45 53.45 USD
|
||||
// See ticket 11735
|
||||
53.45US Dollars fail USD J
|
||||
US Dollar53.45 53.45 USD
|
||||
US Dollat53.45 fail USD
|
||||
// See ticket 11735
|
||||
53.45US Dollar fail USD J
|
||||
|
||||
|
||||
test parse currency short
|
||||
set pattern 0.00 \u00a4;(#) \u00a4
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
$53.45 53.45 USD
|
||||
53.45 USD 53.45 USD
|
||||
USD 53.45 53.45 USD J
|
||||
53.45USD fail USD
|
||||
USD53.45 53.45 USD
|
||||
(7.92) USD -7.92 USD
|
||||
(7.926) USD -7.926 USD
|
||||
(7.926 USD) fail USD
|
||||
(USD 7.926) fail USD
|
||||
USD (7.926) fail USD
|
||||
USD (7.92) fail USD
|
||||
(7.92)USD fail USD
|
||||
USD(7.92) fail USD
|
||||
(8) USD -8 USD
|
||||
-8 USD fail USD
|
||||
67 USD 67 USD
|
||||
53.45$ fail USD
|
||||
US Dollars 53.45 53.45 USD J
|
||||
53.45 US Dollars 53.45 USD
|
||||
US Dollar 53.45 53.45 USD J
|
||||
53.45 US Dollar 53.45 USD
|
||||
US Dollars53.45 53.45 USD
|
||||
53.45US Dollars fail USD
|
||||
US Dollar53.45 53.45 USD
|
||||
US Dollat53.45 fail USD
|
||||
53.45US Dollar fail USD
|
||||
|
||||
|
||||
test parse currency short prefix
|
||||
set pattern \u00a40.00;(\u00a4#)
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
$53.45 53.45 USD
|
||||
53.45 USD fail USD
|
||||
USD 53.45 53.45 USD J
|
||||
53.45USD fail USD
|
||||
USD53.45 53.45 USD
|
||||
(7.92) USD fail USD
|
||||
(7.926) USD fail USD
|
||||
(7.926 USD) fail USD
|
||||
(USD 7.926) -7.926 USD J
|
||||
USD (7.926) fail USD
|
||||
USD (7.92) fail USD
|
||||
(7.92)USD fail USD
|
||||
USD(7.92) fail USD
|
||||
(8) USD fail USD
|
||||
-8 USD fail USD
|
||||
67 USD fail USD
|
||||
53.45$ fail USD
|
||||
US Dollars 53.45 53.45 USD J
|
||||
53.45 US Dollars 53.45 USD
|
||||
US Dollar 53.45 53.45 USD J
|
||||
53.45 US Dollar 53.45 USD
|
||||
US Dollars53.45 53.45 USD
|
||||
53.45US Dollars fail USD
|
||||
US Dollar53.45 53.45 USD
|
||||
53.45US Dollar fail USD
|
||||
|
||||
test format foreign currency
|
||||
set locale fa_IR
|
||||
begin
|
||||
pattern format output breaks
|
||||
\u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 # 1235 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 K
|
||||
\u00a4\u00a4 0.00;\u00a4\u00a4 -# 1235 IRR \u06F1\u06F2\u06F3\u06F5 K
|
||||
\u00a4 0.00;\u00a4 -# 1235 \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 K
|
||||
|
||||
test parse foreign currency symbol
|
||||
set pattern \u00a4 0.00;\u00a4 -#
|
||||
set locale fa_IR
|
||||
begin
|
||||
parse output outputCurrency
|
||||
\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
IRR 1235 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 1235 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR
|
||||
|
||||
test parse foreign currency ISO
|
||||
set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 -#
|
||||
set locale fa_IR
|
||||
begin
|
||||
parse output outputCurrency
|
||||
\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
IRR 1235 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 1235 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR
|
||||
|
||||
test parse foreign currency full
|
||||
set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 -#
|
||||
set locale fa_IR
|
||||
begin
|
||||
parse output outputCurrency
|
||||
\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
|
||||
IRR 1235 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 1235 1235 IRR
|
||||
\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR
|
||||
|
||||
test parse currency with foreign symbols symbol english
|
||||
set pattern \u00a4 0.00;\u00a4 (#)
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency
|
||||
EUR 7.82 7.82 EUR
|
||||
\u20ac 7.82 7.82 EUR
|
||||
Euro 7.82 7.82 EUR
|
||||
Euros 7.82 7.82 EUR
|
||||
|
||||
test parse currency with foreign symbols ISO english
|
||||
set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 (#)
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency
|
||||
EUR 7.82 7.82 EUR
|
||||
\u20ac 7.82 7.82 EUR
|
||||
Euro 7.82 7.82 EUR
|
||||
Euros 7.82 7.82 EUR
|
||||
|
||||
test parse currency with foreign symbols full english
|
||||
set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 (#)
|
||||
set locale en_US
|
||||
begin
|
||||
parse output outputCurrency
|
||||
EUR 7.82 7.82 EUR
|
||||
\u20ac 7.82 7.82 EUR
|
||||
Euro 7.82 7.82 EUR
|
||||
Euros 7.82 7.82 EUR
|
||||
|
||||
test parse currency ISO strict
|
||||
set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
|
||||
set locale en_US
|
||||
set lenient 0
|
||||
begin
|
||||
parse output outputCurrency breaks
|
||||
$53.45 53.45 USD
|
||||
53.45 USD 53.45 USD
|
||||
USD 53.45 fail USD
|
||||
53.45USD fail USD
|
||||
USD53.45 53.45 USD
|
||||
(7.92) USD -7.92 USD
|
||||
(7.92) EUR -7.92 EUR
|
||||
(7.926) USD -7.926 USD
|
||||
(7.926 USD) fail USD
|
||||
(USD 7.926) fail USD
|
||||
USD (7.926) fail USD
|
||||
USD (7.92) fail USD
|
||||
(7.92)USD fail USD
|
||||
USD(7.92) fail USD
|
||||
(8) USD -8 USD
|
||||
-8 USD fail USD
|
||||
67 USD 67 USD
|
||||
53.45$ fail USD
|
||||
US Dollars 53.45 fail USD
|
||||
53.45 US Dollars 53.45 USD
|
||||
US Dollar 53.45 fail USD
|
||||
53.45 US Dollar 53.45 USD
|
||||
US Dollars53.45 53.45 USD
|
||||
53.45US Dollars fail USD
|
||||
US Dollar53.45 53.45 USD
|
||||
US Dollat53.45 fail USD
|
||||
53.45US Dollar fail USD
|
||||
US Dollars (53.45) fail USD
|
||||
(53.45) US Dollars -53.45 USD
|
||||
US Dollar (53.45) fail USD
|
||||
(53.45) US Dollar -53.45 USD
|
||||
US Dollars(53.45) fail USD
|
||||
(53.45)US Dollars fail USD
|
||||
US Dollar(53.45) fail USD
|
||||
US Dollat(53.45) fail USD
|
||||
(53.45)US Dollar fail USD
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -66,6 +66,16 @@ public class DataDrivenNumberFormatTestSuite extends TestFmwk {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs a single parse currency test. On success, returns null.
|
||||
* On failure, returns the error. This implementation just returns null.
|
||||
* Subclasses should override.
|
||||
* @param tuple contains the parameters of the format test.
|
||||
*/
|
||||
public String parseCurrency(NumberFormatTestTuple tuple) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs a single select test. On success, returns null.
|
||||
* On failure, returns the error. This implementation just returns null.
|
||||
|
@ -304,6 +314,11 @@ public class DataDrivenNumberFormatTestSuite extends TestFmwk {
|
|||
if (errorMessage != null) {
|
||||
result.append(errorMessage);
|
||||
}
|
||||
} else if (tuple.parse != null && tuple.output != null && tuple.outputCurrency != null) {
|
||||
String errorMessage = codeUnderTest.parseCurrency(tuple);
|
||||
if (errorMessage != null) {
|
||||
result.append(errorMessage);
|
||||
}
|
||||
} else if (tuple.parse != null && tuple.output != null) {
|
||||
String errorMessage = codeUnderTest.parse(tuple);
|
||||
if (errorMessage != null) {
|
||||
|
|
|
@ -114,6 +114,33 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parseCurrency(NumberFormatTestTuple tuple) {
|
||||
DecimalFormat fmt = newDecimalFormat(tuple);
|
||||
ParsePosition ppos = new ParsePosition(0);
|
||||
CurrencyAmount currAmt = fmt.parseCurrency(tuple.parse, ppos);
|
||||
if (ppos.getIndex() == 0) {
|
||||
if (!tuple.output.equals("fail")) {
|
||||
return "Parse error expected.";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if (tuple.output.equals("fail")) {
|
||||
return "Parse succeeded: "+currAmt+", but was expected to fail.";
|
||||
}
|
||||
Number expected = toNumber(tuple.output);
|
||||
Number actual = currAmt.getNumber();
|
||||
// number types cannot be compared, this is the best we can do.
|
||||
if (expected.doubleValue() != (actual.doubleValue())) {
|
||||
return "Expected: " + expected + ", got: " + actual;
|
||||
}
|
||||
|
||||
if (!tuple.outputCurrency.equals(currAmt.getCurrency().toString())) {
|
||||
return "Expected currency: " + tuple.outputCurrency + ", got: " + currAmt.getCurrency();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tuple
|
||||
|
@ -292,6 +319,8 @@ public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param tuple
|
||||
|
|
|
@ -116,6 +116,7 @@ public class NumberFormatTestTuple {
|
|||
public Integer parseIntegerOnly = null;
|
||||
public Integer decimalPatternMatchRequired = null;
|
||||
public Integer parseNoExponent = null;
|
||||
public String outputCurrency = null;
|
||||
|
||||
|
||||
|
||||
|
@ -219,6 +220,7 @@ public class NumberFormatTestTuple {
|
|||
"parseIntegerOnly",
|
||||
"decimalPatternMatchRequired",
|
||||
"parseNoExponent",
|
||||
"outputCurrency"
|
||||
};
|
||||
|
||||
static {
|
||||
|
@ -413,6 +415,10 @@ public class NumberFormatTestTuple {
|
|||
parseNoExponent = Integer.valueOf(value);
|
||||
}
|
||||
|
||||
public void setOutputCurrency(String value) {
|
||||
outputCurrency = value;
|
||||
}
|
||||
|
||||
// end field setters.
|
||||
|
||||
// start of field clearers
|
||||
|
|
Loading…
Add table
Reference in a new issue