/** * Test various generic API methods of PluralFormat for Basic usage. */ void PluralFormatTest::pluralFormatBasicTest(/*char *par*/) { UErrorCode status[8]; PluralFormat* plFmt[8]; Locale locale = Locale::getDefault(); UnicodeString otherPattern = UnicodeString("other{#}"); UnicodeString message=UnicodeString("ERROR: PluralFormat basic test"); // ========= Test constructors logln(" Testing PluralFormat constructors ..."); status[0] = U_ZERO_ERROR; PluralRules* plRules = PluralRules::createDefaultRules(status[0]); status[0] = U_ZERO_ERROR; NumberFormat *numFmt = NumberFormat::createInstance(status[0]); if (U_FAILURE(status[0])) { dataerrln("ERROR: Could not create NumberFormat instance with default locale "); } for (int32_t i=0; i< 8; ++i) { status[i] = U_ZERO_ERROR; } plFmt[0] = new PluralFormat(status[0]); plFmt[1] = new PluralFormat(*plRules, status[1]); plFmt[2] = new PluralFormat(locale, status[2]); plFmt[3] = new PluralFormat(locale, *plRules, status[3]); plFmt[4] = new PluralFormat(otherPattern, status[4]); plFmt[5] = new PluralFormat(*plRules, otherPattern, status[5]); plFmt[6] = new PluralFormat(locale, otherPattern, status[6]); plFmt[7] = new PluralFormat(locale, *plRules, otherPattern, status[7]); for (int32_t i=0; i< 8; ++i) { if (U_SUCCESS(status[i])) { numberFormatTest(plFmt[i], numFmt, 1, 12, NULL, NULL, FALSE, &message); numberFormatTest(plFmt[i], numFmt, 100, 112, NULL, NULL, FALSE, &message); } else { dataerrln("ERROR: PluralFormat constructor failed!"); } delete plFmt[i]; } // ======= Test clone, assignment operator && == operator. plFmt[0]= new PluralFormat(status[0]); plFmt[0]->setNumberFormat(numFmt,status[0]); UnicodeString us = UnicodeString(""); plFmt[0]->toPattern(us); plFmt[1]= new PluralFormat(locale, status[1]); if ( U_SUCCESS(status[0]) && U_SUCCESS(status[1]) ) { *plFmt[1] = *plFmt[0]; if (plFmt[1]!=NULL) { if ( *plFmt[1] != *plFmt[0] ) { errln("ERROR: clone plural format test failed!"); } } } else { dataerrln("ERROR: PluralFormat constructor failed! - [0]%s [1]%s", u_errorName(status[0]), u_errorName(status[1])); } delete plFmt[0]; status[0] = U_ZERO_ERROR; plFmt[0]= new PluralFormat(locale, status[0]); if ( U_SUCCESS(status[0]) ) { *plFmt[1] = *plFmt[0]; if (plFmt[1]!=NULL) { if ( *plFmt[1] != *plFmt[0] ) { errln("ERROR: assignment operator test failed!"); } } } else { dataerrln("ERROR: PluralFormat constructor failed! - %s", u_errorName(status[1])); } if ( U_SUCCESS(status[1]) ) { plFmt[2] = (PluralFormat*) plFmt[1]->clone(); if (plFmt[1]!=NULL) { if ( *plFmt[1] != *plFmt[2] ) { errln("ERROR: clone function test failed!"); } } delete plFmt[1]; delete plFmt[2]; } else { dataerrln("ERROR: PluralFormat clone failed! - %s", u_errorName(status[1])); } delete plFmt[0]; delete numFmt; delete plRules; // Tests parseObject UErrorCode stat = U_ZERO_ERROR; PluralFormat *pf = new PluralFormat(stat); Formattable *f = new Formattable(); ParsePosition *pp = new ParsePosition(); pf->parseObject((UnicodeString)"",*f,*pp); if(U_FAILURE(stat)) { dataerrln("ERROR: PluralFormat::parseObject: %s", u_errorName(stat)); } delete pf; delete f; delete pp; }