Index: source/test/intltest/numfmtspectest.cpp |
diff --git a/source/test/intltest/numfmtspectest.cpp b/source/test/intltest/numfmtspectest.cpp |
deleted file mode 100644 |
index bf3686eb11d0c63b6f7056a6f3a24b54e9ee9537..0000000000000000000000000000000000000000 |
--- a/source/test/intltest/numfmtspectest.cpp |
+++ /dev/null |
@@ -1,274 +0,0 @@ |
-/* |
-******************************************************************************* |
-* Copyright (C) 2014-2015, International Business Machines Corporation and * |
-* others. All Rights Reserved. * |
-******************************************************************************* |
-* |
-* File numfmtspectest.cpp |
-* |
-******************************************************************************* |
-*/ |
-#include <stdio.h> |
-#include <stdlib.h> |
- |
-#include "intltest.h" |
- |
-#if !UCONFIG_NO_FORMATTING |
- |
-#include "unicode/localpointer.h" |
-#include "unicode/decimfmt.h" |
-#include "unicode/dtfmtsym.h" |
-#include "uassert.h" |
- |
-static const UChar kJPY[] = {0x4A, 0x50, 0x59}; |
- |
-static void fixNonBreakingSpace(UnicodeString &str) { |
- for (int32_t i = 0; i < str.length(); ++i) { |
- if (str[i] == 0xa0) { |
- str.setCharAt(i, 0x20); |
- } |
- } |
-} |
- |
-static NumberFormat *nfWithPattern(const char *pattern) { |
- UnicodeString upattern(pattern, -1, US_INV); |
- upattern = upattern.unescape(); |
- UErrorCode status = U_ZERO_ERROR; |
- DecimalFormat *result = new DecimalFormat( |
- upattern, new DecimalFormatSymbols("fr", status), status); |
- if (U_FAILURE(status)) { |
- return NULL; |
- } |
- |
- return result; |
-} |
- |
-static UnicodeString format(double d, const NumberFormat &fmt) { |
- UnicodeString result; |
- fmt.format(d, result); |
- fixNonBreakingSpace(result); |
- return result; |
-} |
- |
-class NumberFormatSpecificationTest : public IntlTest { |
-public: |
- NumberFormatSpecificationTest() { |
- } |
- void TestBasicPatterns(); |
- void TestNfSetters(); |
- void TestRounding(); |
- void TestSignificantDigits(); |
- void TestScientificNotation(); |
- void TestPercent(); |
- void TestPerMilli(); |
- void TestPadding(); |
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0); |
-private: |
- void assertPatternFr( |
- const char *expected, double x, const char *pattern, UBool possibleDataError=FALSE); |
- |
-}; |
- |
-void NumberFormatSpecificationTest::runIndexedTest( |
- int32_t index, UBool exec, const char *&name, char *) { |
- if (exec) { |
- logln("TestSuite NumberFormatSpecificationTest: "); |
- } |
- TESTCASE_AUTO_BEGIN; |
- TESTCASE_AUTO(TestBasicPatterns); |
- TESTCASE_AUTO(TestNfSetters); |
- TESTCASE_AUTO(TestRounding); |
- TESTCASE_AUTO(TestSignificantDigits); |
- TESTCASE_AUTO(TestScientificNotation); |
- TESTCASE_AUTO(TestPercent); |
- TESTCASE_AUTO(TestPerMilli); |
- TESTCASE_AUTO(TestPadding); |
- TESTCASE_AUTO_END; |
-} |
- |
-void NumberFormatSpecificationTest::TestBasicPatterns() { |
- assertPatternFr("1 234,57", 1234.567, "#,##0.##", TRUE); |
- assertPatternFr("1234,57", 1234.567, "0.##", TRUE); |
- assertPatternFr("1235", 1234.567, "0", TRUE); |
- assertPatternFr("1 234,567", 1234.567, "#,##0.###", TRUE); |
- assertPatternFr("1234,567", 1234.567, "###0.#####", TRUE); |
- assertPatternFr("1234,5670", 1234.567, "###0.0000#", TRUE); |
- assertPatternFr("01234,5670", 1234.567, "00000.0000", TRUE); |
- assertPatternFr("1 234,57 \\u20ac", 1234.567, "#,##0.00 \\u00a4", TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::TestNfSetters() { |
- LocalPointer<NumberFormat> nf(nfWithPattern("#,##0.##")); |
- if (nf == NULL) { |
- dataerrln("Error creating NumberFormat"); |
- return; |
- } |
- nf->setMaximumIntegerDigits(5); |
- nf->setMinimumIntegerDigits(4); |
- assertEquals("", "34 567,89", format(1234567.89, *nf), TRUE); |
- assertEquals("", "0 034,56", format(34.56, *nf), TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::TestRounding() { |
- assertPatternFr("1,0", 1.25, "0.5", TRUE); |
- assertPatternFr("2,0", 1.75, "0.5", TRUE); |
- assertPatternFr("-1,0", -1.25, "0.5", TRUE); |
- assertPatternFr("-02,0", -1.75, "00.5", TRUE); |
- assertPatternFr("0", 2.0, "4", TRUE); |
- assertPatternFr("8", 6.0, "4", TRUE); |
- assertPatternFr("8", 10.0, "4", TRUE); |
- assertPatternFr("99,90", 99.0, "2.70", TRUE); |
- assertPatternFr("273,00", 272.0, "2.73", TRUE); |
- assertPatternFr("1 03,60", 104.0, "#,#3.70", TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::TestSignificantDigits() { |
- assertPatternFr("1230", 1234.0, "@@@", TRUE); |
- assertPatternFr("1 234", 1234.0, "@,@@@", TRUE); |
- assertPatternFr("1 235 000", 1234567.0, "@,@@@", TRUE); |
- assertPatternFr("1 234 567", 1234567.0, "@@@@,@@@", TRUE); |
- assertPatternFr("12 34 567,00", 1234567.0, "@@@@,@@,@@@", TRUE); |
- assertPatternFr("12 34 567,0", 1234567.0, "@@@@,@@,@@#", TRUE); |
- assertPatternFr("12 34 567", 1234567.0, "@@@@,@@,@##", TRUE); |
- assertPatternFr("12 34 567", 1234567.001, "@@@@,@@,@##", TRUE); |
- assertPatternFr("12 34 567", 1234567.001, "@@@@,@@,###", TRUE); |
- assertPatternFr("1 200", 1234.0, "#,#@@", TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::TestScientificNotation() { |
- assertPatternFr("1,23E4", 12345.0, "0.00E0", TRUE); |
- assertPatternFr("123,00E2", 12300.0, "000.00E0", TRUE); |
- assertPatternFr("123,0E2", 12300.0, "000.0#E0", TRUE); |
- assertPatternFr("123,0E2", 12300.1, "000.0#E0", TRUE); |
- assertPatternFr("123,01E2", 12301.0, "000.0#E0", TRUE); |
- assertPatternFr("123,01E+02", 12301.0, "000.0#E+00", TRUE); |
- assertPatternFr("12,3E3", 12345.0, "##0.00E0", TRUE); |
- assertPatternFr("12,300E3", 12300.1, "##0.0000E0", TRUE); |
- assertPatternFr("12,30E3", 12300.1, "##0.000#E0", TRUE); |
- assertPatternFr("12,301E3", 12301.0, "##0.000#E0", TRUE); |
- if (!logKnownIssue("11020")) { |
- assertPatternFr("1,25E4", 12301.2, "0.05E0"); |
- } |
- assertPatternFr("170,0E-3", 0.17, "##0.000#E0", TRUE); |
- |
-} |
- |
-void NumberFormatSpecificationTest::TestPercent() { |
- assertPatternFr("57,3%", 0.573, "0.0%", TRUE); |
- assertPatternFr("%57,3", 0.573, "%0.0", TRUE); |
- assertPatternFr("p%p57,3", 0.573, "p%p0.0", TRUE); |
- assertPatternFr("p%p0,6", 0.573, "p'%'p0.0", TRUE); |
- assertPatternFr("%3,260", 0.0326, "%@@@@", TRUE); |
- assertPatternFr("%1 540", 15.43, "%#,@@@", TRUE); |
- assertPatternFr("%1 656,4", 16.55, "%#,##4.1", TRUE); |
- assertPatternFr("%16,3E3", 162.55, "%##0.00E0", TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::TestPerMilli() { |
- assertPatternFr("573,0\\u2030", 0.573, "0.0\\u2030", TRUE); |
- assertPatternFr("\\u2030573,0", 0.573, "\\u20300.0", TRUE); |
- assertPatternFr("p\\u2030p573,0", 0.573, "p\\u2030p0.0", TRUE); |
- assertPatternFr("p\\u2030p0,6", 0.573, "p'\\u2030'p0.0", TRUE); |
- assertPatternFr("\\u203032,60", 0.0326, "\\u2030@@@@", TRUE); |
- assertPatternFr("\\u203015 400", 15.43, "\\u2030#,@@@", TRUE); |
- assertPatternFr("\\u203016 551,7", 16.55, "\\u2030#,##4.1", TRUE); |
- assertPatternFr("\\u2030163E3", 162.55, "\\u2030##0.00E0", TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::TestPadding() { |
- assertPatternFr("$***1 234", 1234, "$**####,##0", TRUE); |
- assertPatternFr("xxx$1 234", 1234, "*x$####,##0", TRUE); |
- assertPatternFr("1 234xxx$", 1234, "####,##0*x$", TRUE); |
- assertPatternFr("1 234$xxx", 1234, "####,##0$*x", TRUE); |
- assertPatternFr("ne1 234nx", -1234, "####,##0$*x;ne#n", TRUE); |
- assertPatternFr("n1 234*xx", -1234, "####,##0$*x;n#'*'", TRUE); |
- assertPatternFr("yyyy%432,6", 4.33, "*y%4.2######", TRUE); |
- if (!logKnownIssue("11025")) { |
- assertPatternFr("EUR *433,00", 433.0, "\\u00a4\\u00a4 **####0.00"); |
- assertPatternFr("EUR *433,00", 433.0, "\\u00a4\\u00a4 **#######0"); |
- } |
- { |
- UnicodeString upattern("\\u00a4\\u00a4 **#######0", -1, US_INV); |
- upattern = upattern.unescape(); |
- UErrorCode status = U_ZERO_ERROR; |
- UnicodeString result; |
- DecimalFormat fmt( |
- upattern, new DecimalFormatSymbols("fr", status), status); |
- if (U_FAILURE(status)) { |
- dataerrln("Error creating DecimalFormat - %s", u_errorName(status)); |
- } else { |
- fmt.setCurrency(kJPY); |
- fmt.format(433.22, result); |
- assertSuccess("", status); |
- assertEquals("", "JPY ****433", result, TRUE); |
- } |
- } |
- { |
- UnicodeString upattern( |
- "\\u00a4\\u00a4 **#######0;\\u00a4\\u00a4 (#)", -1, US_INV); |
- upattern = upattern.unescape(); |
- UErrorCode status = U_ZERO_ERROR; |
- UnicodeString result; |
- DecimalFormat fmt( |
- upattern, |
- new DecimalFormatSymbols("en_US", status), |
- status); |
- if (U_FAILURE(status)) { |
- dataerrln("Error creating DecimalFormat - %s", u_errorName(status)); |
- } else { |
- fmt.format(-433.22, result); |
- assertSuccess("", status); |
- assertEquals("", "USD (433.22)", result, TRUE); |
- } |
- } |
- const char *paddedSciPattern = "QU**00.#####E0"; |
- assertPatternFr("QU***43,3E-1", 4.33, paddedSciPattern, TRUE); |
- { |
- UErrorCode status = U_ZERO_ERROR; |
- DecimalFormatSymbols *sym = new DecimalFormatSymbols("fr", status); |
- sym->setSymbol(DecimalFormatSymbols::kExponentialSymbol, "EE"); |
- DecimalFormat fmt( |
- paddedSciPattern, |
- sym, |
- status); |
- if (U_FAILURE(status)) { |
- dataerrln("Error creating DecimalFormat - %s", u_errorName(status)); |
- } else { |
- UnicodeString result; |
- fmt.format(4.33, result); |
- assertSuccess("", status); |
- assertEquals("", "QU**43,3EE-1", result, TRUE); |
- } |
- } |
- // padding cannot work as intended with scientific notation. |
- assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE); |
-} |
- |
-void NumberFormatSpecificationTest::assertPatternFr( |
- const char *expected, |
- double x, |
- const char *pattern, |
- UBool possibleDataError) { |
- UnicodeString upattern(pattern, -1, US_INV); |
- UnicodeString uexpected(expected, -1, US_INV); |
- upattern = upattern.unescape(); |
- uexpected = uexpected.unescape(); |
- UErrorCode status = U_ZERO_ERROR; |
- UnicodeString result; |
- DecimalFormat fmt( |
- upattern, new DecimalFormatSymbols("fr_FR", status), status); |
- if (U_FAILURE(status)) { |
- dataerrln("Error creating DecimalFormatSymbols - %s", u_errorName(status)); |
- return; |
- } |
- fmt.format(x, result); |
- fixNonBreakingSpace(result); |
- assertSuccess("", status); |
- assertEquals("", uexpected, result, possibleDataError); |
-} |
- |
-extern IntlTest *createNumberFormatSpecificationTest() { |
- return new NumberFormatSpecificationTest(); |
-} |
- |
-#endif |