| Index: source/test/intltest/itrbnfp.cpp
|
| diff --git a/source/test/intltest/itrbnfp.cpp b/source/test/intltest/itrbnfp.cpp
|
| deleted file mode 100644
|
| index d84f4b43f062b0db788845edfafeecf86ca55036..0000000000000000000000000000000000000000
|
| --- a/source/test/intltest/itrbnfp.cpp
|
| +++ /dev/null
|
| @@ -1,183 +0,0 @@
|
| -/*
|
| - *******************************************************************************
|
| - * Copyright (C) 2004-2009, International Business Machines Corporation and *
|
| - * others. All Rights Reserved. *
|
| - *******************************************************************************
|
| - */
|
| -
|
| -#include "unicode/utypes.h"
|
| -
|
| -#if !UCONFIG_NO_FORMATTING
|
| -
|
| -#include "itrbnfp.h"
|
| -
|
| -#include "unicode/umachine.h"
|
| -
|
| -#include "unicode/tblcoll.h"
|
| -#include "unicode/coleitr.h"
|
| -#include "unicode/ures.h"
|
| -#include "unicode/ustring.h"
|
| -#include "unicode/decimfmt.h"
|
| -
|
| -#include <string.h>
|
| -
|
| -// current macro not in icu1.8.1
|
| -#define TESTCASE(id,test) \
|
| - case id: \
|
| - name = #test; \
|
| - if (exec) { \
|
| - logln(#test "---"); \
|
| - logln(); \
|
| - test(); \
|
| - } \
|
| - break
|
| -
|
| -void IntlTestRBNFParse::runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par*/)
|
| -{
|
| - if (exec) logln("TestSuite RuleBasedNumberFormatParse");
|
| - switch (index) {
|
| -#if U_HAVE_RBNF
|
| - TESTCASE(0, TestParse);
|
| -#else
|
| - TESTCASE(0, TestRBNFParseDisabled);
|
| -#endif
|
| - default:
|
| - name = "";
|
| - break;
|
| - }
|
| -}
|
| -
|
| -#if U_HAVE_RBNF
|
| -
|
| -void
|
| -IntlTestRBNFParse::TestParse() {
|
| - // Try various rule parsing errors. Shouldn't crash.
|
| -
|
| - logln("RBNF Parse test starting");
|
| -
|
| - // these rules make no sense but behave rationally
|
| - const char* okrules[] = {
|
| - "",
|
| - "random text",
|
| - "%foo:bar",
|
| - "%foo: bar",
|
| - "0:",
|
| - "0::",
|
| - ";",
|
| - ";;",
|
| - "%%foo:;",
|
| - ":",
|
| - "::",
|
| - ":1",
|
| - ":;",
|
| - ":;:;",
|
| - "-",
|
| - "-1",
|
| - "-:",
|
| - ".",
|
| - ".1",
|
| - "[",
|
| - "]",
|
| - "[]",
|
| - "[foo]",
|
| - "[[]",
|
| - "[]]",
|
| - "[[]]",
|
| - "[][]",
|
| - "<",
|
| - "<<",
|
| - "<<<",
|
| - "10:;9:;",
|
| - ">",
|
| - ">>",
|
| - ">>>",
|
| - "=",
|
| - "==",
|
| - "===",
|
| - "=foo=",
|
| -
|
| - NULL,
|
| - };
|
| -
|
| - // these rules would throw exceptions when formatting, if we could throw exceptions
|
| - const char* exceptrules[] = {
|
| - "10:", // formatting any value with a one's digit will fail
|
| - "11: << x", // formating a multiple of 10 causes rollback rule to fail
|
| - "%%foo: 0 foo; 10: =%%bar=; %%bar: 0: bar; 10: =%%foo=;",
|
| -
|
| - NULL,
|
| - };
|
| -
|
| - // none of these rules should crash the formatter
|
| - const char** allrules[] = {
|
| - okrules,
|
| - exceptrules,
|
| - NULL,
|
| - };
|
| -
|
| - for (int j = 0; allrules[j]; ++j) {
|
| - const char** rules = allrules[j];
|
| - for (int i = 0; rules[i]; ++i) {
|
| - const char* rule = rules[i];
|
| - logln("rule[%d] \"%s\"", i, rule);
|
| - UErrorCode status = U_ZERO_ERROR;
|
| - UParseError perr;
|
| - RuleBasedNumberFormat* formatter = new RuleBasedNumberFormat(rule, Locale::getUS(), perr, status);
|
| -
|
| - if (U_SUCCESS(status)) {
|
| - // format some values
|
| -
|
| - testfmt(formatter, 20, status);
|
| - testfmt(formatter, 1.23, status);
|
| - testfmt(formatter, -123, status);
|
| - testfmt(formatter, .123, status);
|
| - testfmt(formatter, 123, status);
|
| -
|
| - } else if (status == U_PARSE_ERROR) {
|
| - logln("perror line: %x offset: %x context: %s|%s", perr.line, perr.offset, perr.preContext, perr.postContext);
|
| - }
|
| -
|
| - delete formatter;
|
| - }
|
| - }
|
| -}
|
| -
|
| -void
|
| -IntlTestRBNFParse::testfmt(RuleBasedNumberFormat* formatter, double val, UErrorCode& status) {
|
| - UnicodeString us;
|
| - formatter->format((const Formattable)val, us, status);
|
| - if (U_SUCCESS(status)) {
|
| - us.insert(0, (UChar)'"');
|
| - us.append((UChar)'"');
|
| - logln(us);
|
| - } else {
|
| - logln("error: could not format %g, returned status: %d", val, status);
|
| - }
|
| -}
|
| -
|
| -void
|
| -IntlTestRBNFParse::testfmt(RuleBasedNumberFormat* formatter, int val, UErrorCode& status) {
|
| - UnicodeString us;
|
| - formatter->format((const Formattable)(int32_t)val, us, status);
|
| - if (U_SUCCESS(status)) {
|
| - us.insert(0, (UChar)'"');
|
| - us.append((UChar)'"');
|
| - logln(us);
|
| - } else {
|
| - logln("error: could not format %d, returned status: %d", val, status);
|
| - }
|
| -}
|
| -
|
| -
|
| -/* U_HAVE_RBNF */
|
| -#else
|
| -
|
| -void
|
| -IntlTestRBNF::TestRBNFParseDisabled() {
|
| - errln("*** RBNF currently disabled on this platform ***\n");
|
| -}
|
| -
|
| -/* U_HAVE_RBNF */
|
| -#endif
|
| -
|
| -#endif /* #if !UCONFIG_NO_FORMATTING */
|
|
|