Index: source/test/intltest/itrbnfrt.cpp |
diff --git a/source/test/intltest/itrbnfrt.cpp b/source/test/intltest/itrbnfrt.cpp |
deleted file mode 100644 |
index 87c227d53824a1ba7a0d91604512848566b1b556..0000000000000000000000000000000000000000 |
--- a/source/test/intltest/itrbnfrt.cpp |
+++ /dev/null |
@@ -1,364 +0,0 @@ |
-/* |
- ******************************************************************************* |
- * Copyright (C) 1996-2009, International Business Machines Corporation and * |
- * others. All Rights Reserved. * |
- ******************************************************************************* |
- */ |
- |
-#include "unicode/utypes.h" |
- |
-#if !UCONFIG_NO_FORMATTING |
- |
-#include "itrbnfrt.h" |
- |
-#include "unicode/fmtable.h" |
-#include <math.h> // fabs |
-#include <stdio.h> |
- |
-// current macro not in icu1.8.1 |
-#define TESTCASE(id,test) \ |
- case id: \ |
- name = #test; \ |
- if (exec) { \ |
- logln(#test "---"); \ |
- logln(); \ |
- test(); \ |
- } \ |
- break |
- |
-void RbnfRoundTripTest::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/) |
-{ |
- if (exec) logln("TestSuite RuleBasedNumberFormatRT"); |
- switch (index) { |
-#if U_HAVE_RBNF |
- TESTCASE(0, TestEnglishSpelloutRT); |
- TESTCASE(1, TestDurationsRT); |
- TESTCASE(2, TestSpanishSpelloutRT); |
- TESTCASE(3, TestFrenchSpelloutRT); |
- TESTCASE(4, TestSwissFrenchSpelloutRT); |
- TESTCASE(5, TestItalianSpelloutRT); |
- TESTCASE(6, TestGermanSpelloutRT); |
- TESTCASE(7, TestSwedishSpelloutRT); |
- TESTCASE(8, TestDutchSpelloutRT); |
- TESTCASE(9, TestJapaneseSpelloutRT); |
- TESTCASE(10, TestRussianSpelloutRT); |
- TESTCASE(11, TestPortugueseSpelloutRT); |
-#else |
- TESTCASE(0, TestRBNFDisabled); |
-#endif |
- default: |
- name = ""; |
- break; |
- } |
-} |
- |
-#if U_HAVE_RBNF |
- |
-/** |
- * Perform an exhaustive round-trip test on the English spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestEnglishSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale::getUS(), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -12345678, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the duration-formatting rules |
- */ |
-void |
-RbnfRoundTripTest::TestDurationsRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_DURATION, Locale::getUS(), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, 0, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Spanish spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestSpanishSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("es", "es"), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -12345678, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the French spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestFrenchSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale::getFrance(), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -12345678, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Swiss French spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestSwissFrenchSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("fr", "CH"), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -12345678, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Italian spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestItalianSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale::getItalian(), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -999999, 999999); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the German spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestGermanSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale::getGermany(), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, 0, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Swedish spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestSwedishSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("sv", "SE"), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, 0, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Dutch spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestDutchSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("nl", "NL"), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -12345678, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Japanese spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestJapaneseSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale::getJapan(), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, 0, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Russian spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestRussianSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("ru", "RU"), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, 0, 12345678); |
- } |
- delete formatter; |
-} |
- |
-/** |
- * Perform an exhaustive round-trip test on the Portuguese spellout rules |
- */ |
-void |
-RbnfRoundTripTest::TestPortugueseSpelloutRT() |
-{ |
- UErrorCode status = U_ZERO_ERROR; |
- RuleBasedNumberFormat* formatter |
- = new RuleBasedNumberFormat(URBNF_SPELLOUT, Locale("pt", "BR"), status); |
- |
- if (U_FAILURE(status)) { |
- errcheckln(status, "failed to construct formatter - %s", u_errorName(status)); |
- } else { |
- doTest(formatter, -12345678, 12345678); |
- } |
- delete formatter; |
-} |
- |
-void |
-RbnfRoundTripTest::doTest(const RuleBasedNumberFormat* formatter, |
- double lowLimit, |
- double highLimit) |
-{ |
- char buf[128]; |
- |
- uint32_t count = 0; |
- double increment = 1; |
- for (double i = lowLimit; i <= highLimit; i += increment) { |
- if (count % 1000 == 0) { |
- sprintf(buf, "%.12g", i); |
- logln(buf); |
- } |
- |
- if (fabs(i) < 5000) |
- increment = 1; |
- else if (fabs(i) < 500000) |
- increment = 2737; |
- else |
- increment = 267437; |
- |
- UnicodeString formatResult; |
- formatter->format(i, formatResult); |
- UErrorCode status = U_ZERO_ERROR; |
- Formattable parseResult; |
- formatter->parse(formatResult, parseResult, status); |
- if (U_FAILURE(status)) { |
- sprintf(buf, "Round-trip status failure: %.12g, status: %d", i, status); |
- errln(buf); |
- return; |
- } else { |
- double rt = (parseResult.getType() == Formattable::kDouble) ? |
- parseResult.getDouble() : |
- (double)parseResult.getLong(); |
- |
- if (rt != i) { |
- sprintf(buf, "Round-trip failed: %.12g -> %.12g", i, rt); |
- errln(buf); |
- return; |
- } |
- } |
- |
- ++count; |
- } |
- |
- if (lowLimit < 0) { |
- double d = 1.234; |
- while (d < 1000) { |
- UnicodeString formatResult; |
- formatter->format(d, formatResult); |
- UErrorCode status = U_ZERO_ERROR; |
- Formattable parseResult; |
- formatter->parse(formatResult, parseResult, status); |
- if (U_FAILURE(status)) { |
- sprintf(buf, "Round-trip status failure: %.12g, status: %d", d, status); |
- errln(buf); |
- return; |
- } else { |
- double rt = (parseResult.getType() == Formattable::kDouble) ? |
- parseResult.getDouble() : |
- (double)parseResult.getLong(); |
- |
- if (rt != d) { |
- UnicodeString msg; |
- sprintf(buf, "Round-trip failed: %.12g -> ", d); |
- msg.append(buf); |
- msg.append(formatResult); |
- sprintf(buf, " -> %.12g", rt); |
- msg.append(buf); |
- errln(msg); |
- return; |
- } |
- } |
- |
- d *= 10; |
- } |
- } |
-} |
- |
-/* U_HAVE_RBNF */ |
-#else |
- |
-void |
-RbnfRoundTripTest::TestRBNFDisabled() { |
- errln("*** RBNF currently disabled on this platform ***\n"); |
-} |
- |
-/* U_HAVE_RBNF */ |
-#endif |
- |
-#endif /* #if !UCONFIG_NO_FORMATTING */ |