ICU-2840 tests shouldn't crash if there is no data

X-SVN-Rev: 12340
This commit is contained in:
Vladimir Weinstein 2003-06-06 04:54:34 +00:00
parent 43e9c46138
commit 4df42a86bb
31 changed files with 684 additions and 142 deletions

View file

@ -36,6 +36,8 @@ CollationDummyTest::CollationDummyTest()
myCollation = new RuleBasedCollator(ruleset, status);
if(U_FAILURE(status)){
errln("ERROR: in creation of rule based collator from ruleset");
delete myCollation;
myCollation = 0;
}
}
@ -191,14 +193,19 @@ void CollationDummyTest::TestJB581(void)
void CollationDummyTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
if (exec) logln("TestSuite CollationDummyTest: ");
switch (index) {
case 0: name = "TestPrimary"; if (exec) TestPrimary(/* par */); break;
case 1: name = "TestSecondary"; if (exec) TestSecondary(/* par */); break;
case 2: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
case 3: name = "TestExtra"; if (exec) TestExtra(/* par */); break;
case 4: name = "TestIdentical"; if (exec) TestIdentical(/* par */); break;
case 5: name = "TestJB581"; if (exec) TestJB581(/* par */); break;
default: name = ""; break;
if(myCollation) {
switch (index) {
case 0: name = "TestPrimary"; if (exec) TestPrimary(/* par */); break;
case 1: name = "TestSecondary"; if (exec) TestSecondary(/* par */); break;
case 2: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
case 3: name = "TestExtra"; if (exec) TestExtra(/* par */); break;
case 4: name = "TestIdentical"; if (exec) TestIdentical(/* par */); break;
case 5: name = "TestJB581"; if (exec) TestJB581(/* par */); break;
default: name = ""; break;
}
} else {
errln("Collator couldn't be instantiated!");
name = "";
}
}

View file

@ -409,6 +409,13 @@ CollationAPITest::TestSafeClone() {
someCollators[0] = Collator::createInstance("en_US", err);
someCollators[1] = Collator::createInstance("ko", err);
someCollators[2] = Collator::createInstance("ja_JP", err);
if(U_FAILURE(err)) {
errln("Couldn't instantiate collators. Error: %s", u_errorName(err));
delete someCollators[0];
delete someCollators[1];
delete someCollators[2];
return;
}
/* change orig & clone & make sure they are independent */
@ -497,12 +504,12 @@ CollationAPITest::TestCollationKey(/* char* par */)
Collator *col = 0;
UErrorCode success=U_ZERO_ERROR;
col = Collator::createInstance(Locale::getEnglish(), success);
col->setStrength(Collator::TERTIARY);
if (U_FAILURE(success))
{
errln("Default collation creation failed.");
return;
}
col->setStrength(Collator::TERTIARY);
CollationKey sortk1, sortk2;
UnicodeString test1("Abcda"), test2("abcda");
@ -1175,6 +1182,10 @@ void CollationAPITest::TestMaxExpansion()
UnicodeString rule("&a < ab < c/aba < d < z < ch");
RuleBasedCollator coll(rule, status);
if(U_FAILURE(status)) {
errln("Collator creation failed with error %s", u_errorName(status));
return;
}
UnicodeString str(ch);
CollationElementIterator *iter =
coll.createCollationElementIterator(str);
@ -1410,6 +1421,11 @@ void CollationAPITest::TestVariableTopSetting() {
UChar vt[256] = { 0 };
Collator *coll = Collator::createInstance(status);
if(U_FAILURE(status)) {
delete coll;
errln("Collator creation failed with error %s", u_errorName(status));
return;
}
uint32_t oldVarTop = coll->getVariableTop(status);
@ -1484,6 +1500,12 @@ void CollationAPITest::TestGetLocale() {
{
Collator *defaultColl = Collator::createInstance(NULL, status);
coll = Collator::createInstance("blahaha", status);
if(U_FAILURE(status)) {
log("Failed to open collator with %s\n", u_errorName(status));
delete coll;
delete defaultColl;
return;
}
if(coll->getLocale(ULOC_REQUESTED_LOCALE, status) != "blahaha") {
log("Nonexisting locale didn't preserve the requested locale\n");
}
@ -1539,6 +1561,11 @@ void CollationAPITest::TestBounds(void) {
UErrorCode status = U_ZERO_ERROR;
Collator *coll = Collator::createInstance(Locale("sh"), status);
if(U_FAILURE(status)) {
delete coll;
errln("Collator creation failed with %s", u_errorName(status));
return;
}
uint8_t sortkey[512], lower[512], upper[512];
UChar buffer[512];
@ -1712,6 +1739,11 @@ void CollationAPITest::TestUClassID()
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *coll
= (RuleBasedCollator *)Collator::createInstance(status);
if(U_FAILURE(status)) {
delete coll;
errln("Collator creation failed with %s", u_errorName(status));
return;
}
id = *((char *)coll->getDynamicClassID());
if (id != 0) {
errln("Dynamic class id for RuleBasedCollator should be 0");

View file

@ -124,6 +124,11 @@ CalendarRegressionTest::test4100311()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = (GregorianCalendar*)Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
failure(status, "Calendar::createInstance(status)");
cal->set(UCAL_YEAR, 1997);
cal->set(UCAL_DAY_OF_YEAR, 1);
@ -142,6 +147,11 @@ CalendarRegressionTest::test4074758()
{ //Set system time to between 12-1 (am or pm) and then run
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
failure(status, "new GregorianCalendar");
for (int32_t h=0; h<25; ++h) {
cal->set(97, UCAL_JANUARY, 1, h, 34);
@ -160,6 +170,11 @@ CalendarRegressionTest::test4028518()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal1 = new GregorianCalendar(status) ;
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal1;
return;
}
failure(status, "new GregorianCalendar");
GregorianCalendar *cal2 = (GregorianCalendar*) cal1->clone() ;
@ -291,6 +306,11 @@ void CalendarRegressionTest::test4051765()
{
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
cal->setLenient(FALSE);
cal->set(UCAL_DAY_OF_WEEK, 0);
//try {
@ -369,6 +389,11 @@ void CalendarRegressionTest::test4059524() {
void CalendarRegressionTest::test4059654() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *gc = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete gc;
return;
}
gc->set(1997, 3, 1, 15, 16, 17); // April 1, 1997
@ -396,6 +421,12 @@ void CalendarRegressionTest::test4061476()
SimpleDateFormat *fmt = new SimpleDateFormat(UnicodeString("ddMMMyy"), Locale::getUK(),status);
Calendar *cal = Calendar::createInstance(TimeZone::createTimeZone("GMT"),
Locale::getUK(),status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
delete fmt;
return;
}
fmt->adoptCalendar(cal);
// try {
UDate date = fmt->parse("29MAY97", status);
@ -420,8 +451,13 @@ void CalendarRegressionTest::test4061476()
void CalendarRegressionTest::test4070502()
{
UErrorCode status = U_ZERO_ERROR;
UDate d = getAssociatedDate(makeDate(1998,0,30), status);
Calendar *cal = new GregorianCalendar(status);
if(status == U_USING_FALLBACK_WARNING) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
UDate d = getAssociatedDate(makeDate(1998,0,30), status);
cal->setTime(d,status);
if (cal->get(UCAL_DAY_OF_WEEK,status) == UCAL_SATURDAY ||
cal->get(UCAL_DAY_OF_WEEK,status) == UCAL_SUNDAY)
@ -472,6 +508,11 @@ void CalendarRegressionTest::dowTest(UBool lenient)
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
cal->set(1997, UCAL_AUGUST, 12); // Wednesday
// cal.getTime(); // Force update
cal->setLenient(lenient);
@ -497,6 +538,11 @@ void CalendarRegressionTest::test4071385()
{
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
cal->setTime(makeDate(1998, UCAL_JUNE, 24),status);
cal->set(UCAL_MONTH, UCAL_NOVEMBER); // change a field
//logln(cal.getTime().toString());
@ -513,6 +559,11 @@ void CalendarRegressionTest::test4073929()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *foo1 = new GregorianCalendar(1997, 8, 27,status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete foo1;
return;
}
foo1->add(UCAL_DATE, + 1, status);
int32_t testyear = foo1->get(UCAL_YEAR, status);
int32_t testmonth = foo1->get(UCAL_MONTH, status);
@ -537,6 +588,11 @@ void CalendarRegressionTest::test4083167()
TimeZone::setDefault(*newZone);
UDate firstDate = Calendar::getNow();
Calendar *cal = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
return;
}
cal->setTime(firstDate,status);
int32_t hr = cal->get(UCAL_HOUR_OF_DAY, status);
int32_t min = cal->get(UCAL_MINUTE, status);
@ -582,6 +638,13 @@ void CalendarRegressionTest::test4086724()
TimeZone::setDefault(*newZone);
date = new SimpleDateFormat(UnicodeString("dd MMM yyy (zzzz) 'is in week' ww"),status);
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
delete newZone;
delete date;
return;
}
cal->set(1997,UCAL_SEPTEMBER,30);
UDate now = cal->getTime(status);
UnicodeString temp;
@ -753,6 +816,11 @@ void CalendarRegressionTest::test41003112()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = (GregorianCalendar*)Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar: %s", u_errorName(status));
delete cal;
return;
}
cal->set(UCAL_YEAR, 1997);
cal->set(UCAL_DAY_OF_YEAR, 1);
//UDate d = cal->getTime(status); // Should be Jan 1
@ -772,6 +840,11 @@ void CalendarRegressionTest::test4103271()
int32_t numYears=40, startYear=1997, numDays=15;
UnicodeString output, testDesc, str, str2;
GregorianCalendar *testCal = (GregorianCalendar*)Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar: %s", u_errorName(status));
delete testCal;
return;
}
testCal->clear();
sdf.adoptCalendar(testCal);
sdf.applyPattern("EEE dd MMM yyyy 'WOY'ww'-'YYYY 'DOY'DDD");
@ -1040,13 +1113,18 @@ void CalendarRegressionTest::test4106136()
void CalendarRegressionTest::test4108764()
{
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
UDate d00 = makeDate(1997, UCAL_MARCH, 15, 12, 00, 00);
UDate d01 = makeDate(1997, UCAL_MARCH, 15, 12, 00, 56);
UDate d10 = makeDate(1997, UCAL_MARCH, 15, 12, 34, 00);
UDate d11 = makeDate(1997, UCAL_MARCH, 15, 12, 34, 56);
UDate epoch = makeDate(1970, UCAL_JANUARY, 1);
Calendar *cal = Calendar::createInstance(status);
cal->setTime(d11,status);
cal->clear( UCAL_MINUTE );
@ -1086,6 +1164,11 @@ void CalendarRegressionTest::test4114578()
UErrorCode status = U_ZERO_ERROR;
int32_t ONE_HOUR = 60*60*1000;
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
cal->adoptTimeZone(TimeZone::createTimeZone("PST"));
UDate onset = makeDate(1998, UCAL_APRIL, 5, 1, 0) + ONE_HOUR;
UDate cease = makeDate(1998, UCAL_OCTOBER, 25, 0, 0) + 2*ONE_HOUR;
@ -1149,6 +1232,11 @@ void CalendarRegressionTest::test4118384()
{
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
if (cal->getMaximum(UCAL_HOUR) != 11 ||
cal->getLeastMaximum(UCAL_HOUR) != 11 ||
cal->getActualMaximum(UCAL_HOUR,status) != 11)
@ -1165,6 +1253,11 @@ void CalendarRegressionTest::test4125881()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = (GregorianCalendar*) Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
DateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"),status);
cal->clear();
for (int32_t y=-20; y<=10; ++y) {
@ -1189,6 +1282,11 @@ void CalendarRegressionTest::test4125881()
void CalendarRegressionTest::test4125892() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = (GregorianCalendar*) Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
DateFormat *fmt = new SimpleDateFormat(UnicodeString("MMMM d, yyyy G"),status);
cal->clear();
cal->set(UCAL_ERA, GregorianCalendar::BC);
@ -1214,6 +1312,11 @@ void CalendarRegressionTest::test4141665()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *cal = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
GregorianCalendar *cal2 = (GregorianCalendar*)cal->clone();
UDate cut = cal->getGregorianChange();
UDate cut2 = cut + 100*24*60*60*1000.0; // 100 days later
@ -1238,6 +1341,11 @@ void CalendarRegressionTest::test4142933()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *calendar = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete calendar;
return;
}
//try {
calendar->roll((UCalendarDateFields)-1, TRUE, status);
if(U_SUCCESS(status))
@ -1267,6 +1375,11 @@ void CalendarRegressionTest::test4145158()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *calendar = new GregorianCalendar(status);
if(status == U_USING_FALLBACK_WARNING || U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete calendar;
return;
}
calendar->adoptTimeZone(TimeZone::createTimeZone("GMT"));
@ -1301,6 +1414,11 @@ void CalendarRegressionTest::test4145983()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *calendar = new GregorianCalendar(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete calendar;
return;
}
calendar->adoptTimeZone(TimeZone::createTimeZone("GMT"));
UDate DATES [] = { LATEST_SUPPORTED_MILLIS, EARLIEST_SUPPORTED_MILLIS };
for (int32_t i=0; i<2; ++i) {
@ -1327,6 +1445,11 @@ void CalendarRegressionTest::test4147269()
{
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *calendar = new GregorianCalendar(status);
if(status == U_USING_FALLBACK_WARNING || U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete calendar;
return;
}
calendar->setLenient(FALSE);
UDate date = makeDate(1996, UCAL_JANUARY, 3); // Arbitrary date
for (int32_t field = 0; field < UCAL_FIELD_COUNT; field++) {
@ -1936,6 +2059,11 @@ void CalendarRegressionTest::TestJ438(void) {
};
int32_t DATA_length = (int32_t)(sizeof(DATA)/sizeof(DATA[0]));
Calendar* pcal = Calendar::createInstance(Locale::getUS(), ec);
if(U_FAILURE(ec)) {
errln("Error creating calendar %s", u_errorName(ec));
delete pcal;
return;
}
Calendar& cal = *pcal;
int32_t i;
SimpleDateFormat fmt(UnicodeString("MMM dd yyyy",""), ec);

View file

@ -164,23 +164,27 @@ void CanonicalIteratorTest::TestBasic() {
set->setValueDeleter(uhash_deleteUnicodeString);
int32_t i = 0;
CanonicalIterator it("", status);
for (i = 0; i < ARRAY_LENGTH(testArray); ++i) {
//logln("Results for: " + name.transliterate(testArray[i]));
UnicodeString testStr = CharsToUnicodeString(testArray[i][0]);
it.setSource(testStr, status);
set->removeAll();
while (TRUE) {
//UnicodeString *result = new UnicodeString(it.next());
UnicodeString result(it.next());
if (result.isBogus()) {
break;
}
set->put(result, new UnicodeString(result), status); // Add result to the table
//logln(++counter + ": " + hex.transliterate(result));
//logln(" = " + name.transliterate(result));
}
expectEqual(i + ": ", testStr, collectionToString(set), CharsToUnicodeString(testArray[i][1]));
if(U_SUCCESS(status)) {
for (i = 0; i < ARRAY_LENGTH(testArray); ++i) {
//logln("Results for: " + name.transliterate(testArray[i]));
UnicodeString testStr = CharsToUnicodeString(testArray[i][0]);
it.setSource(testStr, status);
set->removeAll();
while (TRUE) {
//UnicodeString *result = new UnicodeString(it.next());
UnicodeString result(it.next());
if (result.isBogus()) {
break;
}
set->put(result, new UnicodeString(result), status); // Add result to the table
//logln(++counter + ": " + hex.transliterate(result));
//logln(" = " + name.transliterate(result));
}
expectEqual(i + ": ", testStr, collectionToString(set), CharsToUnicodeString(testArray[i][1]));
}
} else {
errln("Couldn't instantiate canonical iterator. Error: %s", u_errorName(status));
}
delete set;
}
@ -216,7 +220,9 @@ UnicodeString CanonicalIteratorTest::getReadable(const UnicodeString &s) {
#endif
UnicodeString sHex = s;
#if !UCONFIG_NO_TRANSLITERATION
hexTrans->transliterate(sHex);
if(hexTrans) { // maybe there is no data and transliterator cannot be instantiated
hexTrans->transliterate(sHex);
}
#endif
result += sHex;
result += "]";

View file

@ -148,7 +148,8 @@ void IntlTestDateFormatAPI::testAPI(/* char* par */)
status = U_ZERO_ERROR;
result2 = def->parse(text, status);
if(U_FAILURE(status)) {
errln("ERROR: parse() failed");
errln("ERROR: parse() failed, stopping testing");
return;
}
logln(text + " parsed into " + result2);
@ -285,16 +286,20 @@ IntlTestDateFormatAPI::TestNameHiding(void) {
logln("DecimalFormat");
status = U_ZERO_ERROR;
DecimalFormat fmt(status);
// Format API
fmt.format(numObj, str, status);
fmt.format(numObj, str, fpos, status);
// NumberFormat API
fmt.format(2.71828, str);
fmt.format((int32_t)1234567, str);
fmt.format(1.41421, str, fpos);
fmt.format((int32_t)9876543, str, fpos);
fmt.parse(str, obj, ppos);
fmt.parse(str, obj, status);
if(U_SUCCESS(status)) {
// Format API
fmt.format(numObj, str, status);
fmt.format(numObj, str, fpos, status);
// NumberFormat API
fmt.format(2.71828, str);
fmt.format((int32_t)1234567, str);
fmt.format(1.41421, str, fpos);
fmt.format((int32_t)9876543, str, fpos);
fmt.parse(str, obj, ppos);
fmt.parse(str, obj, status);
} else {
errln("FAIL: Couldn't instantiate DecimalFormat, error %s. Quitting test", u_errorName(status));
}
}
// ChoiceFormat calling Format & NumberFormat API

View file

@ -368,6 +368,11 @@ void DateFormatRegressionTest::Test4061287(void)
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *df = new SimpleDateFormat(UnicodeString("dd/MM/yyyy"), status);
if(U_FAILURE(status)) {
errln("Couldn't create SimpleDateFormat, error: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new SimpleDateFormat");
//try {
logln(UnicodeString("") + df->parse("35/01/1971", status));
@ -477,6 +482,12 @@ void DateFormatRegressionTest::Test4071441(void)
// {sfb} Is it OK to cast away const here?
Calendar *calA = (Calendar*) fmtA->getCalendar();
Calendar *calB = (Calendar*) fmtB->getCalendar();
if(!calA || !calB) {
errln("Couldn't get proper calendars, exiting");
delete fmtA;
delete fmtB;
return;
}
UDate epoch = date(0, 0, 0);
UDate xmas = date(61, UCAL_DECEMBER, 25);
@ -559,6 +570,13 @@ void DateFormatRegressionTest::Test4089106(void)
TimeZone::setDefault(*z);
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *f = new SimpleDateFormat(status);
if(U_FAILURE(status)) {
errln("Couldn't create SimpleDateFormat, error %s", u_errorName(status));
delete f;
delete def;
delete z;
return;
}
failure(status, "new SimpleDateFormat");
if (f->getTimeZone()!= *z)
errln("Fail: SimpleTimeZone should use TimeZone.getDefault()");
@ -714,6 +732,11 @@ void DateFormatRegressionTest::Test4103341(void)
TimeZone::adoptDefault(TimeZone::createTimeZone("CST"));
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *simple = new SimpleDateFormat(UnicodeString("MM/dd/yyyy HH:mm"), status);
if(U_FAILURE(status)) {
errln("Couldn't create SimpleDateFormat, error %s", u_errorName(status));
delete simple;
return;
}
failure(status, "new SimpleDateFormat");
TimeZone *temp = TimeZone::createDefault();
if(simple->getTimeZone() != *temp)
@ -734,6 +757,11 @@ void DateFormatRegressionTest::Test4104136(void)
{
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *sdf = new SimpleDateFormat(status);
if(U_FAILURE(status)) {
errln("Couldn't create SimpleDateFormat, error %s", u_errorName(status));
delete sdf;
return;
}
failure(status, "new SimpleDateFormat");
UnicodeString pattern = "'time' hh:mm";
sdf->applyPattern(pattern);
@ -794,6 +822,11 @@ void DateFormatRegressionTest::Test4104522(void)
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *sdf = new SimpleDateFormat(status);
if(U_FAILURE(status)) {
errln("Couldn't create SimpleDateFormat, error %s", u_errorName(status));
delete sdf;
return;
}
failure(status, "new SimpleDateFormat");
UnicodeString pattern = "'time' hh:mm";
sdf->applyPattern(pattern);
@ -832,6 +865,16 @@ void DateFormatRegressionTest::Test4106807(void)
new SimpleDateFormat(UnicodeString("yyyyMMddHHmmss'a''a'"), status),
new SimpleDateFormat(UnicodeString("yyyyMMddHHmmss %"), status)
};
if(U_FAILURE(status)) {
errln("Couldn't create SimpleDateFormat, error %s", u_errorName(status));
delete sdfs[0];
delete sdfs[1];
delete sdfs[2];
delete sdfs[3];
delete sdfs[4];
return;
}
failure(status, "new SimpleDateFormat");
UnicodeString strings [] = {

View file

@ -695,6 +695,11 @@ DateFormatTest::TestBadInput135a()
{
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat* dateParse = new SimpleDateFormat(status);
if(U_FAILURE(status)) {
errln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status));
delete dateParse;
return;
}
const char* s;
UDate date;
const uint32_t PF_LENGTH = (int32_t)(sizeof(parseFormats)/sizeof(parseFormats[0]));
@ -812,6 +817,11 @@ DateFormatTest::TestDateFormatZone061()
date= 859248000000.0;
logln((UnicodeString)"Date 1997/3/25 00:00 GMT: " + date);
formatter = new SimpleDateFormat((UnicodeString)"dd-MMM-yyyyy HH:mm", Locale::getUK(), status);
if(U_FAILURE(status)) {
errln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status));
delete formatter;
return;
}
formatter->adoptTimeZone(TimeZone::createTimeZone("GMT"));
UnicodeString temp; formatter->format(date, temp);
logln((UnicodeString)"Formatted in GMT to: " + temp);

View file

@ -318,11 +318,16 @@ void CollationEnglishTest::TestSecondary(/* char* par */)
void CollationEnglishTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
if (exec) logln("TestSuite CollationEnglishTest: ");
switch (index) {
case 0: name = "TestPrimary"; if (exec) TestPrimary(/* par */); break;
case 1: name = "TestSecondary"; if (exec) TestSecondary(/* par */); break;
case 2: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
default: name = ""; break;
if(myCollation) {
switch (index) {
case 0: name = "TestPrimary"; if (exec) TestPrimary(/* par */); break;
case 1: name = "TestSecondary"; if (exec) TestSecondary(/* par */); break;
case 2: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
default: name = ""; break;
}
} else {
errln("Collator couldn't be instantiated!");
name = "";
}
}

View file

@ -99,6 +99,11 @@ void G7CollationTest::TestG7Locales(/* char* par */)
RuleBasedCollator* tblColl1 = 0;
myCollation = Collator::createInstance(locales[i], status);
if(U_FAILURE(status)) {
delete myCollation;
errln("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))
@ -154,6 +159,11 @@ void G7CollationTest::TestDemo1(/* char* par */)
logln("Demo Test 1 : Create a new table collation with rules \"& Z < p, P\"");
UErrorCode status = U_ZERO_ERROR;
Collator *col = Collator::createInstance("en_US", status);
if(U_FAILURE(status)) {
delete col;
errln("Couldn't instantiate collator. Error: %s", u_errorName(status));
return;
}
const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
UnicodeString newRules(" & Z < p, P");
newRules.insert(0, baseRules);
@ -183,6 +193,11 @@ void G7CollationTest::TestDemo2(/* char* par */)
logln("Demo Test 2 : Create a new table collation with rules \"& C < ch , cH, Ch, CH\"");
UErrorCode status = U_ZERO_ERROR;
Collator *col = Collator::createInstance("en_US", status);
if(U_FAILURE(status)) {
delete col;
errln("Couldn't instantiate collator. Error: %s", u_errorName(status));
return;
}
const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
UnicodeString newRules("& C < ch , cH, Ch, CH");
newRules.insert(0, baseRules);
@ -212,6 +227,11 @@ void G7CollationTest::TestDemo3(/* char* par */)
logln("Demo Test 3 : Create a new table collation with rules \"& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'\"");
UErrorCode status = U_ZERO_ERROR;
Collator *col = Collator::createInstance("en_US", status);
if(U_FAILURE(status)) {
errln("Couldn't instantiate collator. Error: %s", u_errorName(status));
delete col;
return;
}
const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
UnicodeString newRules = "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'";
newRules.insert(0, baseRules);
@ -241,17 +261,17 @@ void G7CollationTest::TestDemo4(/* char* par */)
logln("Demo Test 4 : Create a new table collation with rules \" & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' \"");
UErrorCode status = U_ZERO_ERROR;
Collator *col = Collator::createInstance("en_US", status);
if(U_FAILURE(status)) {
delete col;
errln("Couldn't instantiate collator. Error: %s", u_errorName(status));
return;
}
const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
UnicodeString newRules = " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' ";
newRules.insert(0, baseRules);
RuleBasedCollator *myCollation = new RuleBasedCollator(newRules, status);
if (U_FAILURE(status))
{
errln( "Demo Test 4 Table Collation object creation failed." );
return;
}
int32_t j, n;
for (j = 0; j < TOTALTESTSET; j++)
{

View file

@ -51,7 +51,7 @@ NamePrepTransform* TestIDNA::getInstance(UErrorCode& status){
UParseError parseError;
TestIDNA::prep = NamePrepTransform::createInstance(parseError, status);
if(TestIDNA::prep ==NULL){
status = U_MEMORY_ALLOCATION_ERROR;
//status = U_MEMORY_ALLOCATION_ERROR;
return NULL;
}
}

View file

@ -1,6 +1,6 @@
/********************************************************************
* COPYRIGHT:
* Copyright (c) 1997-2001, International Business Machines Corporation and
* Copyright (c) 1997-2003, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
@ -27,6 +27,13 @@ CollationIteratorTest::CollationIteratorTest()
test2("has the highest probability of detecting", "")
{
en_us = (RuleBasedCollator *)Collator::createInstance(Locale::getUS(), status);
if(U_FAILURE(status)) {
delete en_us;
en_us = 0;
errln("Collator creation failed with %s", u_errorName(status));
return;
}
}
CollationIteratorTest::~CollationIteratorTest()
@ -606,18 +613,23 @@ void CollationIteratorTest::runIndexedTest(int32_t index, UBool exec, const char
logln("Collation Iteration Tests: ");
}
switch (index)
{
case 0: name = "TestPrevious"; if (exec) TestPrevious(/* par */); break;
case 1: name = "TestOffset"; if (exec) TestOffset(/* par */); break;
case 2: name = "TestSetText"; if (exec) TestSetText(/* par */); break;
case 3: name = "TestMaxExpansion"; if (exec) TestMaxExpansion(/* par */); break;
case 4: name = "TestClearBuffers"; if (exec) TestClearBuffers(/* par */); break;
case 5: name = "TestUnicodeChar"; if (exec) TestUnicodeChar(/* par */); break;
case 6: name = "TestAssignment"; if (exec) TestAssignment(/* par */); break;
case 7: name = "TestConstructors"; if (exec) TestConstructors(/* par */); break;
case 8: name = "TestStrengthOrder"; if (exec) TestStrengthOrder(/* par */); break;
default: name = ""; break;
if(en_us) {
switch (index)
{
case 0: name = "TestPrevious"; if (exec) TestPrevious(/* par */); break;
case 1: name = "TestOffset"; if (exec) TestOffset(/* par */); break;
case 2: name = "TestSetText"; if (exec) TestSetText(/* par */); break;
case 3: name = "TestMaxExpansion"; if (exec) TestMaxExpansion(/* par */); break;
case 4: name = "TestClearBuffers"; if (exec) TestClearBuffers(/* par */); break;
case 5: name = "TestUnicodeChar"; if (exec) TestUnicodeChar(/* par */); break;
case 6: name = "TestAssignment"; if (exec) TestAssignment(/* par */); break;
case 7: name = "TestConstructors"; if (exec) TestConstructors(/* par */); break;
case 8: name = "TestStrengthOrder"; if (exec) TestStrengthOrder(/* par */); break;
default: name = ""; break;
}
} else {
errln("Class iterator not instantiated");
name = "";
}
}

View file

@ -180,14 +180,19 @@ void CollationKanaTest::TestChooonKigoo(void)
void CollationKanaTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
if (exec) logln("TestSuite CollationKanaTest: ");
switch (index) {
case 0: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
case 1: name = "TestBase"; if (exec) TestBase(/* par */); break;
case 2: name = "TestSmallLarge"; if (exec) TestSmallLarge(/* par */); break;
case 3: name = "TestTestPlainDakutenHandakuten"; if (exec) TestPlainDakutenHandakuten(/* par */); break;
case 4: name = "TestKatakanaHiragana"; if (exec) TestKatakanaHiragana(/* par */); break;
case 5: name = "TestChooonKigoo"; if (exec) TestChooonKigoo(/* par */); break;
default: name = ""; break;
if(myCollation) {
switch (index) {
case 0: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
case 1: name = "TestBase"; if (exec) TestBase(/* par */); break;
case 2: name = "TestSmallLarge"; if (exec) TestSmallLarge(/* par */); break;
case 3: name = "TestTestPlainDakutenHandakuten"; if (exec) TestPlainDakutenHandakuten(/* par */); break;
case 4: name = "TestKatakanaHiragana"; if (exec) TestKatakanaHiragana(/* par */); break;
case 5: name = "TestChooonKigoo"; if (exec) TestChooonKigoo(/* par */); break;
default: name = ""; break;
}
} else {
errln("Collator couldn't be instantiated!");
name = "";
}
}

View file

@ -33,7 +33,14 @@ LotusCollationKoreanTest::LotusCollationKoreanTest()
{
UErrorCode status = U_ZERO_ERROR;
myCollation = Collator::createInstance("ko_kr", status);
myCollation->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status);
if(U_SUCCESS(status)) {
myCollation->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status);
} else {
errln("Couldn't instantiate the collator with %s", u_errorName(status));
delete myCollation;
myCollation = 0;
}
}
LotusCollationKoreanTest::~LotusCollationKoreanTest()
@ -67,9 +74,14 @@ void LotusCollationKoreanTest::TestTertiary(/* char* par */)
void LotusCollationKoreanTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
if (exec) logln("TestSuite LotusCollationKoreanTest: ");
switch (index) {
case 0: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
default: name = ""; break;
if(myCollation) {
switch (index) {
case 0: name = "TestTertiary"; if (exec) TestTertiary(/* par */); break;
default: name = ""; break;
}
} else {
errln("Class collator not instantiated");
name = "";
}
}

View file

@ -315,6 +315,11 @@ DateFormatMiscTests::test4117335()
UErrorCode status = U_ZERO_ERROR;
DateFormatSymbols *symbols = new DateFormatSymbols(Locale::getJapan(), status);
if(U_FAILURE(status)) {
errln("Failure creating DateFormatSymbols, %s", u_errorName(status));
delete symbols;
return;
}
failure(status, "new DateFormatSymbols");
int32_t eraCount = 0;
const UnicodeString *eras = symbols->getEras(eraCount);

View file

@ -253,11 +253,16 @@ void CollationMonkeyTest::TestRules(/* char* par */){
void CollationMonkeyTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
if (exec) logln("TestSuite CollationMonkeyTest: ");
switch (index) {
case 0: name = "TestCompare"; if (exec) TestCompare(/* par */); break;
case 1: name = "TestCollationKey"; if (exec) TestCollationKey(/* par */); break;
case 2: name = "TestRules"; if (exec) TestRules(/* par */); break;
default: name = ""; break;
if(myCollator) {
switch (index) {
case 0: name = "TestCompare"; if (exec) TestCompare(/* par */); break;
case 1: name = "TestCollationKey"; if (exec) TestCollationKey(/* par */); break;
case 2: name = "TestRules"; if (exec) TestRules(/* par */); break;
default: name = ""; break;
}
} else {
errln("Class collator not instantiated");
name = "";
}
}

View file

@ -160,6 +160,7 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
enum { BUF_SIZE = 1024 };
char lineBuf[BUF_SIZE];
UnicodeString fields[FIELD_COUNT];
UErrorCode status = U_ZERO_ERROR;
int32_t passCount = 0;
int32_t failCount = 0;
UChar32 c;
@ -218,10 +219,14 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
other.remove(c);
}
if (checkConformance(fields, lineBuf, options)) {
if (checkConformance(fields, lineBuf, options, status)) {
++passCount;
} else {
++failCount;
if(status == U_FILE_ACCESS_ERROR) {
errln("Something is wrong with the normalizer, skipping the rest of the test.");
break;
}
}
if ((count % 1000) == 0) {
logln("Line %d", count);
@ -250,10 +255,14 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
fields[0]=fields[1]=fields[2]=fields[3]=fields[4].setTo(c);
sprintf(lineBuf, "not mentioned code point U+%04lx", (long)c);
if (checkConformance(fields, lineBuf, options)) {
if (checkConformance(fields, lineBuf, options, status)) {
++passCount;
} else {
++failCount;
if(status == U_FILE_ACCESS_ERROR) {
errln("Something is wrong with the normalizer, skipping the rest of the test.");
break;
}
}
if ((c % 0x1000) == 0) {
logln("Code point U+%04lx", c);
@ -285,9 +294,10 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
*/
UBool NormalizerConformanceTest::checkConformance(const UnicodeString* field,
const char *line,
int32_t options) {
int32_t options,
UErrorCode &status) {
UBool pass = TRUE, result;
UErrorCode status = U_ZERO_ERROR;
//UErrorCode status = U_ZERO_ERROR;
UnicodeString out, fcd;
int32_t fieldNum;
@ -558,11 +568,12 @@ void NormalizerConformanceTest::TestCase6(void) {
}
void NormalizerConformanceTest::_testOneLine(const char *line) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString fields[FIELD_COUNT];
if (!hexsplit(line, ';', fields, FIELD_COUNT)) {
errln((UnicodeString)"Unable to parse line " + line);
} else {
checkConformance(fields, line, 0);
checkConformance(fields, line, 0, status);
}
}

View file

@ -58,7 +58,8 @@ class NormalizerConformanceTest : public IntlTest {
*/
UBool checkConformance(const UnicodeString* field,
const char *line,
int32_t options);
int32_t options,
UErrorCode &status);
void iterativeNorm(const UnicodeString& str,
UNormalizationMode mode, int32_t options,

View file

@ -67,6 +67,9 @@ NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status
mapping = Transliterator::createFromRules(UnicodeString("NamePrepTransform", ""), rule,
UTRANS_FORWARD, parseError,status);
if(U_FAILURE(status)) {
return;
}
//create the unassigned set
int32_t patternLen =0;

View file

@ -1166,6 +1166,10 @@ void NumberFormatTest::TestRegCurrency(void) {
UErrorCode status = U_ZERO_ERROR;
const UChar* USD = ucurr_forLocale("en_US", &status);
const UChar* YEN = ucurr_forLocale("ja_JP", &status);
if(U_FAILURE(status)) {
errln("Unable to get currency for locale, error %s", u_errorName(status));
return;
}
UCurrRegistryKey enkey = ucurr_register(YEN, "en_US", &status);
UCurrRegistryKey enUSEUROkey = ucurr_register(EUR, "en_US_EURO", &status);

View file

@ -377,6 +377,11 @@ void NumberFormatRegressionTest::Test4086575(void)
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf1 = NumberFormat::createInstance(Locale::getFrance(), status);
if(status == U_USING_FALLBACK_WARNING) {
errln("Something is wrong with French number format - it should not fallback. Exitting");
delete nf1;
return;
}
failure(status, "NumberFormat::createInstance");
// C++ workaround to make sure cast works
@ -452,6 +457,11 @@ void NumberFormatRegressionTest::Test4068693(void)
ParsePosition pos(0);
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
Formattable d;
//Double d = (Double)df.parse("123.55456", pos=new ParsePosition(0));
@ -503,6 +513,11 @@ void NumberFormatRegressionTest::Test4087251 (void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
//try {
df->applyPattern(UnicodeString("#.#.#"), status);
@ -564,6 +579,11 @@ void NumberFormatRegressionTest::Test4090504 (void)
logln(UnicodeString("d = ") + d);
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
UnicodeString sb;
FieldPosition fp(FieldPosition::DONT_CARE);
@ -588,6 +608,11 @@ void NumberFormatRegressionTest::Test4095713 (void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFOrmat");
UnicodeString str("0.1234");
double d1 = 0.1234;
@ -610,6 +635,11 @@ void NumberFormatRegressionTest::Test4092561 (void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
// {sfb} going to cheat here and use sprintf ??
@ -631,6 +661,11 @@ void NumberFormatRegressionTest::Test4092480 (void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *dfFoo = new DecimalFormat(UnicodeString("000"), status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete dfFoo;
return;
}
failure(status, "new DecimalFormat");
//try {
@ -680,6 +715,11 @@ void NumberFormatRegressionTest::Test4087244 (void) {
Locale *de = new Locale("pt","PT_PREEURO");
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createCurrencyInstance(*de, status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete nf;
return;
}
if (nf->getDynamicClassID() != DecimalFormat::getStaticClassID()) {
errln("expected DecimalFormat!");
return;
@ -740,6 +780,11 @@ void NumberFormatRegressionTest::Test4070798 (void)
UErrorCode status = U_ZERO_ERROR;
formatter = NumberFormat::createInstance(Locale("fr_FR_PREEURO"), status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete formatter;
return;
}
failure(status, "NumberFormat::createNumberInstance");
tempString = formatter->format (-5789.9876, tempString);
@ -1036,6 +1081,11 @@ void NumberFormatRegressionTest::Test4074454(void)
//try {
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *fmt = new DecimalFormat("#,#00.00;-#.#", status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete fmt;
return;
}
failure(status, "new DecimalFormat");
logln("Inconsistent negative pattern is fine.");
DecimalFormat *newFmt = new DecimalFormat("#,#00.00 p''ieces;-#,#00.00 p''ieces", status);
@ -1100,6 +1150,11 @@ void NumberFormatRegressionTest::Test4101481(void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *sdf = new DecimalFormat(UnicodeString("#,##0"), status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete sdf;
return;
}
failure(status, "new DecimalFormat");
if (sdf->getMinimumIntegerDigits() != 1)
errln("Minimum integer digits : " + sdf->getMinimumIntegerDigits());
@ -1113,6 +1168,11 @@ void NumberFormatRegressionTest::Test4052223(void)
//try {
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *fmt = new DecimalFormat(UnicodeString("#,#00.00"), status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete fmt;
return;
}
failure(status, "new DecimalFormat");
Formattable num;
fmt->parse(UnicodeString("abc3"), num, status);
@ -1192,6 +1252,11 @@ void NumberFormatRegressionTest::Test4108738(void)
DecimalFormatSymbols *syms = new DecimalFormatSymbols(Locale::getUS(), status);
failure(status, "new DecimalFormatSymbols");
DecimalFormat *df = new DecimalFormat("#,##0.###", syms, status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
UnicodeString text("1.222,111");
Formattable num;
@ -1226,6 +1291,11 @@ void NumberFormatRegressionTest::Test4106658(void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status); // Corrected; see 4147706
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
volatile double d1 = 0.0; // volatile to prevent code optimization
double d2 = -0.0001;
@ -1257,6 +1327,11 @@ void NumberFormatRegressionTest::Test4106662(void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
UnicodeString text("x");
ParsePosition pos1(0), pos2(0);
@ -1286,6 +1361,11 @@ void NumberFormatRegressionTest::Test4114639(void)
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *format = NumberFormat::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete format;
return;
}
failure(status, "NumberFormat::createInstance");
UnicodeString text("time 10:x");
ParsePosition pos(8);
@ -1306,6 +1386,11 @@ void NumberFormatRegressionTest::Test4106664(void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
// {sfb} long in java is 64 bits
/*long*/double n = 1234567890123456.0;
@ -1335,6 +1420,11 @@ void NumberFormatRegressionTest::Test4106667(void)
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete df;
return;
}
failure(status, "new DecimalFormat");
UChar foo [] = { 0x002B };
UnicodeString bar(foo, 1, 1);
@ -1370,6 +1460,11 @@ void NumberFormatRegressionTest::Test4110936(void)
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete nf;
return;
}
failure(status, "NumberFormat::createInstance");
nf->setMaximumIntegerDigits(MAX_INT_DIGITS);
logln("setMaximumIntegerDigits(MAX_INT_DIGITS)");
@ -1485,6 +1580,11 @@ void NumberFormatRegressionTest::Test4125885(void)
UErrorCode status = U_ZERO_ERROR;
double rate = 12.34;
DecimalFormat *formatDec = new DecimalFormat ("000.00", status);
if(U_FAILURE(status)) {
errln("Error creating DecimalFormat: %s", u_errorName(status));
delete formatDec;
return;
}
failure(status, "new DecimalFormat");
UnicodeString temp;
logln("toPattern: " + formatDec->toPattern(temp));

View file

@ -1426,6 +1426,7 @@ void RBBITest::TestExtended() {
}
errln("line %d: Tag expected in test file.", lineNum);
goto end_test;
parseState = PARSE_COMMENT;
savedState = PARSE_DATA;
}
@ -1603,6 +1604,7 @@ void RBBITest::TestExtended() {
errln("Syntax Error in test file at line %d, col %d",
lineNum, column);
goto end_test;
parseState = PARSE_COMMENT;
break;
}
@ -1611,11 +1613,13 @@ void RBBITest::TestExtended() {
if (U_FAILURE(status)) {
errln("ICU Error %s while parsing test file at line %d.",
u_errorName(status), lineNum);
goto end_test;
status = U_ZERO_ERROR;
}
}
end_test:
delete tp.bi;
delete tp.expectedBreaks;
delete tp.srcLine;
@ -2131,7 +2135,12 @@ private:
};
RBBIWordMonkey::RBBIWordMonkey() {
RBBIWordMonkey::RBBIWordMonkey() : fMungedText(0),
fMungedPositions(0),
fOrigPositions(0),
fGCFMatcher(0),
fGCMatcher(0)
{
UErrorCode status = U_ZERO_ERROR;
fSets = new UVector(status);
@ -2149,8 +2158,12 @@ RBBIWordMonkey::RBBIWordMonkey() {
fNumericSet = new UnicodeSet("[\\p{Line_Break=Numeric}]", status);
fFormatSet = new UnicodeSet("[\\p{Format}]", status);
fExtendSet = new UnicodeSet("[\\p{Grapheme_Extend}]", status);
fOtherSet = new UnicodeSet();
if(U_FAILURE(status)) {
deferredStatus = status;
return;
}
fOtherSet->complement();
fOtherSet->removeAll(*fKatakanaSet);
fOtherSet->removeAll(*fALetterSet);

View file

@ -22,6 +22,12 @@ CollationRegressionTest::CollationRegressionTest()
UErrorCode status = U_ZERO_ERROR;
en_us = (RuleBasedCollator *)Collator::createInstance(Locale::getUS(), status);
if(U_FAILURE(status)) {
delete en_us;
en_us = 0;
errln("Collator creation failed with %s", u_errorName(status));
return;
}
}
CollationRegressionTest::~CollationRegressionTest()
@ -1164,40 +1170,45 @@ void CollationRegressionTest::runIndexedTest(int32_t index, UBool exec, const ch
logln("Collation Regression Tests: ");
}
switch (index)
{
case 0: name = "Test4048446"; if (exec) Test4048446(/* par */); break;
case 1: name = "Test4051866"; if (exec) Test4051866(/* par */); break;
case 2: name = "Test4053636"; if (exec) Test4053636(/* par */); break;
case 3: name = "Test4054238"; if (exec) Test4054238(/* par */); break;
case 4: name = "Test4054734"; if (exec) Test4054734(/* par */); break;
case 5: name = "Test4054736"; if (exec) Test4054736(/* par */); break;
case 6: name = "Test4058613"; if (exec) Test4058613(/* par */); break;
case 7: name = "Test4059820"; if (exec) Test4059820(/* par */); break;
case 8: name = "Test4060154"; if (exec) Test4060154(/* par */); break;
case 9: name = "Test4062418"; if (exec) Test4062418(/* par */); break;
case 10: name = "Test4065540"; if (exec) Test4065540(/* par */); break;
case 11: name = "Test4066189"; if (exec) Test4066189(/* par */); break;
case 12: name = "Test4066696"; if (exec) Test4066696(/* par */); break;
case 13: name = "Test4076676"; if (exec) Test4076676(/* par */); break;
case 14: name = "Test4078588"; if (exec) Test4078588(/* par */); break;
case 15: name = "Test4079231"; if (exec) Test4079231(/* par */); break;
case 16: name = "Test4081866"; if (exec) Test4081866(/* par */); break;
case 17: name = "Test4087241"; if (exec) Test4087241(/* par */); break;
case 18: name = "Test4087243"; if (exec) Test4087243(/* par */); break;
case 19: name = "Test4092260"; if (exec) Test4092260(/* par */); break;
case 20: name = "Test4095316"; if (exec) Test4095316(/* par */); break;
case 21: name = "Test4101940"; if (exec) Test4101940(/* par */); break;
case 22: name = "Test4103436"; if (exec) Test4103436(/* par */); break;
case 23: name = "Test4114076"; if (exec) Test4114076(/* par */); break;
case 24: name = "Test4114077"; if (exec) Test4114077(/* par */); break;
case 25: name = "Test4124632"; if (exec) Test4124632(/* par */); break;
case 26: name = "Test4132736"; if (exec) Test4132736(/* par */); break;
case 27: name = "Test4133509"; if (exec) Test4133509(/* par */); break;
case 28: name = "Test4139572"; if (exec) Test4139572(/* par */); break;
case 29: name = "Test4141640"; if (exec) Test4141640(/* par */); break;
case 30: name = "Test4146160"; if (exec) Test4146160(/* par */); break;
default: name = ""; break;
if(en_us) {
switch (index)
{
case 0: name = "Test4048446"; if (exec) Test4048446(/* par */); break;
case 1: name = "Test4051866"; if (exec) Test4051866(/* par */); break;
case 2: name = "Test4053636"; if (exec) Test4053636(/* par */); break;
case 3: name = "Test4054238"; if (exec) Test4054238(/* par */); break;
case 4: name = "Test4054734"; if (exec) Test4054734(/* par */); break;
case 5: name = "Test4054736"; if (exec) Test4054736(/* par */); break;
case 6: name = "Test4058613"; if (exec) Test4058613(/* par */); break;
case 7: name = "Test4059820"; if (exec) Test4059820(/* par */); break;
case 8: name = "Test4060154"; if (exec) Test4060154(/* par */); break;
case 9: name = "Test4062418"; if (exec) Test4062418(/* par */); break;
case 10: name = "Test4065540"; if (exec) Test4065540(/* par */); break;
case 11: name = "Test4066189"; if (exec) Test4066189(/* par */); break;
case 12: name = "Test4066696"; if (exec) Test4066696(/* par */); break;
case 13: name = "Test4076676"; if (exec) Test4076676(/* par */); break;
case 14: name = "Test4078588"; if (exec) Test4078588(/* par */); break;
case 15: name = "Test4079231"; if (exec) Test4079231(/* par */); break;
case 16: name = "Test4081866"; if (exec) Test4081866(/* par */); break;
case 17: name = "Test4087241"; if (exec) Test4087241(/* par */); break;
case 18: name = "Test4087243"; if (exec) Test4087243(/* par */); break;
case 19: name = "Test4092260"; if (exec) Test4092260(/* par */); break;
case 20: name = "Test4095316"; if (exec) Test4095316(/* par */); break;
case 21: name = "Test4101940"; if (exec) Test4101940(/* par */); break;
case 22: name = "Test4103436"; if (exec) Test4103436(/* par */); break;
case 23: name = "Test4114076"; if (exec) Test4114076(/* par */); break;
case 24: name = "Test4114077"; if (exec) Test4114077(/* par */); break;
case 25: name = "Test4124632"; if (exec) Test4124632(/* par */); break;
case 26: name = "Test4132736"; if (exec) Test4132736(/* par */); break;
case 27: name = "Test4133509"; if (exec) Test4133509(/* par */); break;
case 28: name = "Test4139572"; if (exec) Test4139572(/* par */); break;
case 29: name = "Test4141640"; if (exec) Test4141640(/* par */); break;
case 30: name = "Test4146160"; if (exec) Test4146160(/* par */); break;
default: name = ""; break;
}
} else {
errln("Class collator not instantiated");
name = "";
}
}

View file

@ -1188,8 +1188,13 @@ void RegexTest::Extended() {
return;
}
UnicodeString tdd(testDataDirectory);
tdd = RegexMatcher("([/\\\\])out[/\\\\]testdata", tdd, 0, status).
replaceFirst("$1regextst.txt", status);
RegexMatcher m("([/\\\\])out[/\\\\]testdata", tdd, 0, status);
if(U_SUCCESS(status)) {
tdd = m.replaceFirst("$1regextst.txt", status);
} else {
errln("Couldn't set up tests. Error %s", u_errorName(status));
return;
}
int len;
UChar *testData = ReadAndConvertFile((const char *)CharString(tdd), len, status);
@ -1509,8 +1514,13 @@ void RegexTest::PerlTests() {
return;
}
UnicodeString tdd(testDataDirectory);
tdd = RegexMatcher("([/\\\\])out[/\\\\]testdata", tdd, 0, status).
replaceFirst("$1re_tests.txt", status);
RegexMatcher m("([/\\\\])out[/\\\\]testdata", tdd, 0, status);
if(U_SUCCESS(status)) {
tdd = m.replaceFirst("$1re_tests.txt", status);
} else {
errln("Couldn't set up tests. Error %s", u_errorName(status));
return;
}
int len;
UChar *testData = ReadAndConvertFile((const char *)CharString(tdd), len, status);

View file

@ -148,6 +148,10 @@ void IntlTestSimpleDateFormatAPI::testAPI(/*char *par*/)
logln("Testing getters and setters");
const DateFormatSymbols *syms = pat.getDateFormatSymbols();
if(!syms) {
errln("Couldn't obtain DateFormatSymbols. Quitting test!");
return;
}
DateFormatSymbols *newSyms = new DateFormatSymbols(*syms);
def.adoptDateFormatSymbols(newSyms);
pat_fr.setDateFormatSymbols(*newSyms);

View file

@ -38,6 +38,19 @@ StringSearchTest::StringSearchTest() :
m_fr_fr_ = (RuleBasedCollator *)Collator::createInstance("fr_FR", status);
m_de_ = (RuleBasedCollator *)Collator::createInstance("de_DE", status);
m_es_ = (RuleBasedCollator *)Collator::createInstance("es_ES", status);
if(U_FAILURE(status)) {
delete m_en_us_;
delete m_fr_fr_;
delete m_de_;
delete m_es_;
m_en_us_ = 0;
m_fr_fr_ = 0;
m_de_ = 0;
m_es_ = 0;
errln("Collator creation failed with %s", u_errorName(status));
return;
}
UnicodeString rules;
rules.setTo(((RuleBasedCollator *)m_de_)->getRules());

View file

@ -28,6 +28,12 @@ void CollationServiceTest::TestRegister()
Collator* frcol = Collator::createInstance(FR, status);
Collator* uscol = Collator::createInstance(US, status);
if(U_FAILURE(status)) {
errln("Failed to create collators with %s", u_errorName(status));
delete frcol;
delete uscol;
return;
}
{ // try override en_US collator
URegistryKey key = Collator::registerInstance(frcol, US, status);
@ -306,6 +312,14 @@ void CollationServiceTest::TestRegisterFactory(void)
Collator* frcol = Collator::createInstance(Locale::getFrance(), status);
Collator* gecol = Collator::createInstance(Locale::getGermany(), status);
Collator* jpcol = Collator::createInstance(Locale::getJapan(), status);
if(U_FAILURE(status)) {
errln("Failed to create collators with %s", u_errorName(status));
delete frcol;
delete gecol;
delete jpcol;
delete fuFUNames;
return;
}
CollatorInfo** info = new CollatorInfo*[4];
if (!info) {

View file

@ -617,6 +617,8 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
if(status != expectedStatus){
errln( "Did not get the expected error for %s null terminated source failed. Expected: %s Got: %s\n",testName, u_errorName(expectedStatus), u_errorName(status));
uprv_free(tSrc);
return;
}
if(testUnassigned ){
status = U_ZERO_ERROR;

View file

@ -356,6 +356,11 @@ void TransliteratorAPITest::TestTransliterate2(){
status = U_ZERO_ERROR;
logln("\n Try calling transliterate with illegal start and limit values");
t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
if(U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
}
gotResBuf = temp = "try start greater than limit";
t->transliterate(gotResBuf, 10, 5);
if(gotResBuf == temp)
@ -379,6 +384,12 @@ void TransliteratorAPITest::TestTransliterate3(){
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
if(U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
}
if(t == 0)
errln("FAIL : construction");
for(uint32_t i=0; i<sizeof(Data)/sizeof(Data[0]); i=i+3){
@ -453,6 +464,11 @@ void TransliteratorAPITest::TestKeyboardTransliterator1(){
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
if(U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
}
//keyboardAux(t, Data);
UTransPosition index={0, 0, 0, 0};
UnicodeString s;
@ -562,6 +578,11 @@ void TransliteratorAPITest::TestKeyboardTransliterator3(){
UTransPosition index={0, 0, 0, 0};
logln("Testing transliterate(Replaceable, int32_t, UErrorCode)");
Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
if(U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
}
if(t == 0)
errln("FAIL : construction");
for(uint32_t i=0; i<sizeof(Data)/sizeof(Data[0]); i=i+4){
@ -740,6 +761,11 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
Transliterator *t=Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
if(U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete t;
return;
}
if(t == 0)
errln("FAIL : construction");
const UnicodeFilter *u=t->getFilter();

View file

@ -2743,6 +2743,11 @@ void TransliteratorTest::TestGurmukhiDevanagari(){
UnicodeSetIterator vIter(vowel);
UnicodeSetIterator nvIter(non_vowel);
Transliterator* trans = Transliterator::createInstance("Devanagari-Gurmukhi",UTRANS_FORWARD, parseError, status);
if(U_FAILURE(status)) {
errln("Error creating transliterator %s", u_errorName(status));
delete trans;
return;
}
UnicodeString src (" \\u0902");
UnicodeString expected(" \\u0A02");
src = src.unescape();
@ -3824,7 +3829,12 @@ void TransliteratorTest::TestAllCodepoints(){
if(code == USCRIPT_INVALID_CODE){
errln("uscript_getScript for codepoint \\U%08X failed.\n", i);
}
uprv_strcpy(id,uscript_getName(code));
const char* myId = uscript_getName(code);
if(!myId) {
errln("Valid script code returned NULL name. Check your data!");
return;
}
uprv_strcpy(id,myId);
uprv_strcpy(abbr,uscript_getShortName(code));
uprv_strcpy(newId,"[:");

View file

@ -481,21 +481,23 @@ IntlTestCollator::doTest(Collator* col, const UChar *source, const UChar *target
void
IntlTestCollator::doTest(Collator* col, const UnicodeString &source, const UnicodeString &target, Collator::EComparisonResult result)
{
doTestVariant(col, source, target, result);
if(result == Collator::LESS) {
doTestVariant(col, target, source, Collator::GREATER);
} else if (result == Collator::GREATER) {
doTestVariant(col, target, source, Collator::LESS);
}
if(col) {
doTestVariant(col, source, target, result);
if(result == Collator::LESS) {
doTestVariant(col, target, source, Collator::GREATER);
} else if (result == Collator::GREATER) {
doTestVariant(col, target, source, Collator::LESS);
}
UErrorCode status = U_ZERO_ERROR;
CollationElementIterator* c = ((RuleBasedCollator *)col)->createCollationElementIterator( source );
logln("Testing iterating source: "+source);
backAndForth(*c);
c->setText(target, status);
logln("Testing iterating target: "+target);
backAndForth(*c);
delete c;
UErrorCode status = U_ZERO_ERROR;
CollationElementIterator* c = ((RuleBasedCollator *)col)->createCollationElementIterator( source );
logln("Testing iterating source: "+source);
backAndForth(*c);
c->setText(target, status);
logln("Testing iterating target: "+target);
backAndForth(*c);
delete c;
}
}

View file

@ -137,10 +137,18 @@ void TimeZoneRegressionTest:: Test4073215()
errln("Fail: DST not active");
GregorianCalendar cal(1997, UCAL_JANUARY, 31, status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
return;
}
failure(status, "new GregorianCalendar");
cal.adoptTimeZone(z);
SimpleDateFormat sdf((UnicodeString)"E d MMM yyyy G HH:mm", status);
if(U_FAILURE(status)) {
errln("Error creating date format %s", u_errorName(status));
return;
}
sdf.setCalendar(cal);
failure(status, "new SimpleDateFormat");
@ -289,6 +297,11 @@ void TimeZoneRegressionTest:: Test4096952() {
void TimeZoneRegressionTest:: Test4109314() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *testCal = (GregorianCalendar*)Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete testCal;
return;
}
failure(status, "Calendar::createInstance");
TimeZone *PST = TimeZone::createTimeZone("PST");
/*Object[] testData = {
@ -426,6 +439,11 @@ void TimeZoneRegressionTest:: Test4126678()
{
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete cal;
return;
}
failure(status, "Calendar::createInstance");
TimeZone *tz = TimeZone::createTimeZone("PST");
cal->adoptTimeZone(tz);
@ -797,6 +815,11 @@ TimeZoneRegressionTest::Test4162593()
{
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *fmt = new SimpleDateFormat("z", Locale::getUS(), status);
if(U_FAILURE(status)) {
errln("Error creating calendar %s", u_errorName(status));
delete fmt;
return;
}
const int32_t ONE_HOUR = 60*60*1000;
SimpleTimeZone *asuncion = new SimpleTimeZone(-4*ONE_HOUR, "America/Asuncion" /*PY%sT*/,