| Index: source/test/intltest/g7coll.cpp
|
| diff --git a/source/test/intltest/g7coll.cpp b/source/test/intltest/g7coll.cpp
|
| index e49a6443759f92251f488e62c48c5a38ab0db9cb..f660120663d5c9fc54adae869d83ffacddf4c2d7 100644
|
| --- a/source/test/intltest/g7coll.cpp
|
| +++ b/source/test/intltest/g7coll.cpp
|
| @@ -1,6 +1,6 @@
|
| /********************************************************************
|
| * COPYRIGHT:
|
| - * Copyright (c) 1997-2010, International Business Machines Corporation and
|
| + * Copyright (c) 1997-2014, International Business Machines Corporation and
|
| * others. All Rights Reserved.
|
| ********************************************************************/
|
|
|
| @@ -14,7 +14,7 @@
|
| #include "unicode/sortkey.h"
|
| #include "g7coll.h"
|
| #include "sfwdchit.h"
|
| -
|
| +#include "cmemory.h"
|
|
|
| static const UChar testCases[][G7CollationTest::MAX_TOKEN_LEN] = {
|
| { 0x0062 /*'b'*/, 0x006c /*'l'*/, 0x0061 /*'a'*/, 0x0062 /*'c'*/, 0x006b /*'k'*/,
|
| @@ -91,47 +91,39 @@ void G7CollationTest::TestG7Locales(/* char* par */)
|
| Locale("ja", "JP", "")
|
| };
|
|
|
| -
|
| - for (i = 0; i < 8; i++)
|
| + for (i = 0; i < UPRV_LENGTHOF(locales); i++)
|
| {
|
| - Collator *myCollation= 0;
|
| UnicodeString dispName;
|
| UErrorCode status = U_ZERO_ERROR;
|
| - RuleBasedCollator* tblColl1 = 0;
|
|
|
| - myCollation = Collator::createInstance(locales[i], status);
|
| + const Locale &locale = locales[i];
|
| + LocalPointer<Collator> myCollation(Collator::createInstance(locale, status));
|
| if(U_FAILURE(status)) {
|
| - delete myCollation;
|
| errcheckln(status, "Couldn't instantiate collator. Error: %s", u_errorName(status));
|
| return;
|
| }
|
| myCollation->setStrength(Collator::QUATERNARY);
|
| myCollation->setAttribute(UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, status);
|
| - if (U_FAILURE(status))
|
| - {
|
| - UnicodeString msg;
|
| -
|
| - msg += "Locale ";
|
| - msg += locales[i].getDisplayName(dispName);
|
| - msg += "creation failed.";
|
| -
|
| - errln(msg);
|
| + if (U_FAILURE(status)) {
|
| + errln("Locale %s creation failed - %s", locale.getName(), u_errorName(status));
|
| continue;
|
| }
|
|
|
| -// const UnicodeString& defRules = ((RuleBasedCollator*)myCollation)->getRules();
|
| - status = U_ZERO_ERROR;
|
| - tblColl1 = new RuleBasedCollator(((RuleBasedCollator*)myCollation)->getRules(), status);
|
| - if (U_FAILURE(status))
|
| - {
|
| - UnicodeString msg, name;
|
| -
|
| - msg += "Recreate ";
|
| - msg += locales[i].getDisplayName(name);
|
| - msg += "collation failed.";
|
| -
|
| - errln(msg);
|
| - continue;
|
| + const UnicodeString &rules = ((RuleBasedCollator*)myCollation.getAlias())->getRules();
|
| + if (rules.isEmpty() &&
|
| + (locale == Locale::getCanadaFrench() || locale == Locale::getJapanese())) {
|
| + dataerrln("%s Collator missing rule string", locale.getName());
|
| + if (logKnownIssue("10671", "TestG7Locales does not test ignore-punctuation")) {
|
| + continue;
|
| + }
|
| + } else {
|
| + status = U_ZERO_ERROR;
|
| + RuleBasedCollator *tblColl1 = new RuleBasedCollator(rules, status);
|
| + if (U_FAILURE(status)) {
|
| + errln("Recreate %s collation failed - %s", locale.getName(), u_errorName(status));
|
| + continue;
|
| + }
|
| + myCollation.adoptInstead(tblColl1);
|
| }
|
|
|
| UnicodeString msg;
|
| @@ -146,12 +138,9 @@ void G7CollationTest::TestG7Locales(/* char* par */)
|
| {
|
| for (n = j+1; n < FIXEDTESTSET; n++)
|
| {
|
| - doTest(tblColl1, testCases[results[i][j]], testCases[results[i][n]], Collator::LESS);
|
| + doTest(myCollation.getAlias(), testCases[results[i][j]], testCases[results[i][n]], Collator::LESS);
|
| }
|
| }
|
| -
|
| - delete myCollation;
|
| - delete tblColl1;
|
| }
|
| }
|
|
|
|
|