| Index: icu46/source/test/intltest/miscdtfm.cpp
|
| ===================================================================
|
| --- icu46/source/test/intltest/miscdtfm.cpp (revision 0)
|
| +++ icu46/source/test/intltest/miscdtfm.cpp (revision 0)
|
| @@ -0,0 +1,381 @@
|
| +/***********************************************************************
|
| + * Copyright (c) 1997-2010, International Business Machines Corporation
|
| + * and others. All Rights Reserved.
|
| + ***********************************************************************/
|
| +
|
| +#include "unicode/utypes.h"
|
| +
|
| +#if !UCONFIG_NO_FORMATTING
|
| +
|
| +#include "miscdtfm.h"
|
| +
|
| +#include "unicode/format.h"
|
| +#include "unicode/decimfmt.h"
|
| +#include "unicode/datefmt.h"
|
| +#include "unicode/smpdtfmt.h"
|
| +#include "unicode/dtfmtsym.h"
|
| +#include "unicode/locid.h"
|
| +#include "unicode/msgfmt.h"
|
| +#include "unicode/numfmt.h"
|
| +#include "unicode/choicfmt.h"
|
| +#include "unicode/gregocal.h"
|
| +
|
| +// *****************************************************************************
|
| +// class DateFormatMiscTests
|
| +// *****************************************************************************
|
| +
|
| +#define CASE(id,test) case id: name = #test; if (exec) { logln(#test "---"); logln((UnicodeString)""); test(); } break;
|
| +
|
| +void
|
| +DateFormatMiscTests::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
|
| +{
|
| + // if (exec) logln((UnicodeString)"TestSuite DateFormatMiscTests");
|
| + switch (index) {
|
| + CASE(0, test4097450)
|
| + CASE(1, test4099975)
|
| + CASE(2, test4117335)
|
| +
|
| + default: name = ""; break;
|
| + }
|
| +}
|
| +
|
| +UBool
|
| +DateFormatMiscTests::failure(UErrorCode status, const char* msg)
|
| +{
|
| + if(U_FAILURE(status)) {
|
| + errcheckln(status, UnicodeString("FAIL: ") + msg + " failed, error " + u_errorName(status));
|
| + return TRUE;
|
| + }
|
| +
|
| + return FALSE;
|
| +}
|
| +
|
| +/*
|
| + * @bug 4097450
|
| + */
|
| +void
|
| +DateFormatMiscTests::test4097450()
|
| +{
|
| + //
|
| + // Date parse requiring 4 digit year.
|
| + //
|
| + UnicodeString dstring [] = {
|
| + UnicodeString("97"),
|
| + UnicodeString("1997"),
|
| + UnicodeString("97"),
|
| + UnicodeString("1997"),
|
| + UnicodeString("01"),
|
| + UnicodeString("2001"),
|
| + UnicodeString("01"),
|
| + UnicodeString("2001"),
|
| + UnicodeString("1"),
|
| + UnicodeString("1"),
|
| + UnicodeString("11"),
|
| + UnicodeString("11"),
|
| + UnicodeString("111"),
|
| + UnicodeString("111")
|
| + };
|
| +
|
| + UnicodeString dformat [] = {
|
| + UnicodeString("yy"),
|
| + UnicodeString("yy"),
|
| + UnicodeString("yyyy"),
|
| + UnicodeString("yyyy"),
|
| + UnicodeString("yy"),
|
| + UnicodeString("yy"),
|
| + UnicodeString("yyyy"),
|
| + UnicodeString("yyyy"),
|
| + UnicodeString("yy"),
|
| + UnicodeString("yyyy"),
|
| + UnicodeString("yy"),
|
| + UnicodeString("yyyy"),
|
| + UnicodeString("yy"),
|
| + UnicodeString("yyyy")
|
| + };
|
| +
|
| +/* UBool dresult [] = {
|
| + TRUE,
|
| + FALSE,
|
| + FALSE,
|
| + TRUE,
|
| + TRUE,
|
| + FALSE,
|
| + FALSE,
|
| + TRUE,
|
| + FALSE,
|
| + FALSE,
|
| + TRUE,
|
| + FALSE,
|
| + FALSE,
|
| + FALSE
|
| + };*/
|
| +
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + SimpleDateFormat *formatter;
|
| + SimpleDateFormat *resultFormatter = new SimpleDateFormat((UnicodeString)"yyyy", status);
|
| + if (U_FAILURE(status)) {
|
| + dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status));
|
| + return;
|
| + }
|
| +
|
| + logln("Format\tSource\tResult");
|
| + logln("-------\t-------\t-------");
|
| + for (int i = 0; i < 14/*dstring.length*/; i++)
|
| + {
|
| + log(dformat[i] + "\t" + dstring[i] + "\t");
|
| + formatter = new SimpleDateFormat(dformat[i], status);
|
| + if(failure(status, "new SimpleDateFormat")) return;
|
| + //try {
|
| + UnicodeString str;
|
| + FieldPosition pos(FieldPosition::DONT_CARE);
|
| + logln(resultFormatter->format(formatter->parse(dstring[i], status), str, pos));
|
| + failure(status, "resultFormatter->format");
|
| + //if ( !dresult[i] ) System.out.print(" <-- error!");
|
| + /*}
|
| + catch (ParseException exception) {
|
| + //if ( dresult[i] ) System.out.print(" <-- error!");
|
| + System.out.print("exception --> " + exception);
|
| + }*/
|
| + delete formatter;
|
| + logln();
|
| + }
|
| +
|
| + delete resultFormatter;
|
| +}
|
| +
|
| +/*
|
| + * @bug 4099975
|
| + */
|
| +void
|
| +DateFormatMiscTests::test4099975()
|
| +{
|
| + /**
|
| + * Test Constructor SimpleDateFormat::SimpleDateFormat (const UnicodeString & pattern,
|
| + * const DateFormatSymbols & formatData, UErrorCode & status )
|
| + * The DateFormatSymbols object is NOT adopted; Modifying the original DateFormatSymbols
|
| + * should not change the SimpleDateFormat's behavior.
|
| + */
|
| + UDate d = Calendar::getNow();
|
| + {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + DateFormatSymbols* symbols = new DateFormatSymbols(Locale::getUS(), status);
|
| + if(failure(status, "new DateFormatSymbols")) return;
|
| + SimpleDateFormat *df = new SimpleDateFormat(UnicodeString("E hh:mm"), *symbols, status);
|
| + if(failure(status, "new SimpleDateFormat")) return;
|
| + UnicodeString format0;
|
| + format0 = df->format(d, format0);
|
| + UnicodeString localizedPattern0;
|
| + localizedPattern0 = df->toLocalizedPattern(localizedPattern0, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + symbols->setLocalPatternChars(UnicodeString("abcdefghijklmonpqr")); // change value of field
|
| + UnicodeString format1;
|
| + format1 = df->format(d, format1);
|
| + if (format0 != format1) {
|
| + errln(UnicodeString("Formats are different. format0: ") + format0
|
| + + UnicodeString("; format1: ") + format1);
|
| + }
|
| + UnicodeString localizedPattern1;
|
| + localizedPattern1 = df->toLocalizedPattern(localizedPattern1, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + if (localizedPattern0 != localizedPattern1) {
|
| + errln(UnicodeString("Pattern has been changed. localizedPattern0: ") + localizedPattern0
|
| + + UnicodeString("; localizedPattern1: ") + localizedPattern1);
|
| + }
|
| + delete symbols;
|
| + delete df;
|
| + }
|
| + /*
|
| + * Test void SimpleDateFormat::setDateFormatSymbols ( const DateFormatSymbols & newFormatSymbols )
|
| + * Modifying the original DateFormatSymbols should not change the SimpleDateFormat's behavior.
|
| + */
|
| + {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + DateFormatSymbols* symbols = new DateFormatSymbols(Locale::getUS(), status);
|
| + if(failure(status, "new DateFormatSymbols")) return;
|
| + SimpleDateFormat *df = new SimpleDateFormat(UnicodeString("E hh:mm"), status);
|
| + if(failure(status, "new SimpleDateFormat")) return;
|
| + df->setDateFormatSymbols(*symbols);
|
| + UnicodeString format0;
|
| + format0 = df->format(d, format0);
|
| + UnicodeString localizedPattern0;
|
| + localizedPattern0 = df->toLocalizedPattern(localizedPattern0, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + symbols->setLocalPatternChars(UnicodeString("abcdefghijklmonpqr")); // change value of field
|
| + UnicodeString format1;
|
| + format1 = df->format(d, format1);
|
| + if (format0 != format1) {
|
| + errln(UnicodeString("Formats are different. format0: ") + format0
|
| + + UnicodeString("; format1: ") + format1);
|
| + }
|
| + UnicodeString localizedPattern1;
|
| + localizedPattern1 = df->toLocalizedPattern(localizedPattern1, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + if (localizedPattern0 != localizedPattern1) {
|
| + errln(UnicodeString("Pattern has been changed. localizedPattern0: ") + localizedPattern0
|
| + + UnicodeString("; localizedPattern1: ") + localizedPattern1);
|
| + }
|
| + delete symbols;
|
| + delete df;
|
| +
|
| + }
|
| + //Test the pointer version of the constructor (and the adoptDateFormatSymbols method)
|
| + {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + DateFormatSymbols* symbols = new DateFormatSymbols(Locale::getUS(), status);
|
| + if(failure(status, "new DateFormatSymbols")) return;
|
| + SimpleDateFormat *df = new SimpleDateFormat(UnicodeString("E hh:mm"), symbols, status);
|
| + if(failure(status, "new SimpleDateFormat")) return;
|
| + UnicodeString format0;
|
| + format0 = df->format(d, format0);
|
| + UnicodeString localizedPattern0;
|
| + localizedPattern0 = df->toLocalizedPattern(localizedPattern0, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + symbols->setLocalPatternChars(UnicodeString("abcdefghijklmonpqr")); // change value of field
|
| + UnicodeString format1;
|
| + format1 = df->format(d, format1);
|
| + if (format0 != format1) {
|
| + errln(UnicodeString("Formats are different. format0: ") + format0
|
| + + UnicodeString("; format1: ") + format1);
|
| + }
|
| + UnicodeString localizedPattern1;
|
| + localizedPattern1 = df->toLocalizedPattern(localizedPattern1, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + if (localizedPattern0 == localizedPattern1) {
|
| + errln(UnicodeString("Pattern should have been changed. localizedPattern0: ") + localizedPattern0
|
| + + UnicodeString("; localizedPattern1: ") + localizedPattern1);
|
| + }
|
| + //delete symbols; the caller is no longer responsible for deleting the symbols
|
| + delete df;
|
| + }
|
| + //
|
| + {
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + DateFormatSymbols* symbols = new DateFormatSymbols(Locale::getUS(), status);
|
| + failure(status, "new DateFormatSymbols");
|
| + SimpleDateFormat *df = new SimpleDateFormat(UnicodeString("E hh:mm"), status);
|
| + if(failure(status, "new SimpleDateFormat")) return;
|
| + df-> adoptDateFormatSymbols(symbols);
|
| + UnicodeString format0;
|
| + format0 = df->format(d, format0);
|
| + UnicodeString localizedPattern0;
|
| + localizedPattern0 = df->toLocalizedPattern(localizedPattern0, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + symbols->setLocalPatternChars(UnicodeString("abcdefghijklmonpqr")); // change value of field
|
| + UnicodeString format1;
|
| + format1 = df->format(d, format1);
|
| + if (format0 != format1) {
|
| + errln(UnicodeString("Formats are different. format0: ") + format0
|
| + + UnicodeString("; format1: ") + format1);
|
| + }
|
| + UnicodeString localizedPattern1;
|
| + localizedPattern1 = df->toLocalizedPattern(localizedPattern1, status);
|
| + failure(status, "df->toLocalizedPattern");
|
| + if (localizedPattern0 == localizedPattern1) {
|
| + errln(UnicodeString("Pattern should have been changed. localizedPattern0: ") + localizedPattern0
|
| + + UnicodeString("; localizedPattern1: ") + localizedPattern1);
|
| + }
|
| + //delete symbols; the caller is no longer responsible for deleting the symbols
|
| + delete df;
|
| + }
|
| +}
|
| +
|
| +/*
|
| + * @test @(#)bug4117335.java 1.1 3/5/98
|
| + *
|
| + * @bug 4117335
|
| + */
|
| +void
|
| +DateFormatMiscTests::test4117335()
|
| +{
|
| + //UnicodeString bc = "\u7d00\u5143\u524d";
|
| + UChar bcC [] = {
|
| + 0x7D00,
|
| + 0x5143,
|
| + 0x524D
|
| + };
|
| + UnicodeString bc(bcC, 3, 3);
|
| +
|
| + //UnicodeString ad = "\u897f\u66a6";
|
| + UChar adC [] = {
|
| + 0x897F,
|
| + 0x66A6
|
| + };
|
| + UnicodeString ad(adC, 2, 2);
|
| +
|
| + //UnicodeString jstLong = "\u65e5\u672c\u6a19\u6e96\u6642";
|
| + UChar jstLongC [] = {
|
| + 0x65e5,
|
| + 0x672c,
|
| + 0x6a19,
|
| + 0x6e96,
|
| + 0x6642
|
| + };
|
| + UChar jdtLongC [] = {0x65E5, 0x672C, 0x590F, 0x6642, 0x9593};
|
| +
|
| + UnicodeString jstLong(jstLongC, 5, 5);
|
| +
|
| + UnicodeString jstShort = "JST";
|
| +
|
| + UnicodeString tzID = "Asia/Tokyo";
|
| +
|
| + UnicodeString jdtLong(jdtLongC, 5, 5);
|
| +
|
| + UnicodeString jdtShort = "JDT";
|
| + UErrorCode status = U_ZERO_ERROR;
|
| + DateFormatSymbols *symbols = new DateFormatSymbols(Locale::getJapan(), status);
|
| + if(U_FAILURE(status)) {
|
| + errcheckln(status, "Failure creating DateFormatSymbols, %s", u_errorName(status));
|
| + delete symbols;
|
| + return;
|
| + }
|
| + failure(status, "new DateFormatSymbols");
|
| + int32_t eraCount = 0;
|
| + const UnicodeString *eras = symbols->getEraNames(eraCount);
|
| +
|
| + logln(UnicodeString("BC = ") + eras[0]);
|
| + if (eras[0] != bc) {
|
| + errln("*** Should have been " + bc);
|
| + //throw new Exception("Error in BC");
|
| + }
|
| +
|
| + logln(UnicodeString("AD = ") + eras[1]);
|
| + if (eras[1] != ad) {
|
| + errln("*** Should have been " + ad);
|
| + //throw new Exception("Error in AD");
|
| + }
|
| +
|
| + int32_t rowCount, colCount;
|
| + const UnicodeString **zones = symbols->getZoneStrings(rowCount, colCount);
|
| + //don't hard code the index .. compute it.
|
| + int32_t index = -1;
|
| + for (int32_t i = 0; i < rowCount; ++i) {
|
| + if (tzID == (zones[i][0])) {
|
| + index = i;
|
| + break;
|
| + }
|
| + }
|
| + logln(UnicodeString("Long zone name = ") + zones[index][1]);
|
| + if (zones[index][1] != jstLong) {
|
| + errln("*** Should have been " + prettify(jstLong)+ " but it is: " + prettify(zones[index][1]));
|
| + //throw new Exception("Error in long TZ name");
|
| + }
|
| + logln(UnicodeString("Short zone name = ") + zones[index][2]);
|
| + if (zones[index][2] != jstShort) {
|
| + errln("*** Should have been " + prettify(jstShort) + " but it is: " + prettify(zones[index][2]));
|
| + //throw new Exception("Error in short TZ name");
|
| + }
|
| + logln(UnicodeString("Long zone name = ") + zones[index][3]);
|
| + if (zones[index][3] != jdtLong) {
|
| + errln("*** Should have been " + prettify(jstLong) + " but it is: " + prettify(zones[index][3]));
|
| + //throw new Exception("Error in long TZ name");
|
| + }
|
| + logln(UnicodeString("SHORT zone name = ") + zones[index][4]);
|
| + if (zones[index][4] != jdtShort) {
|
| + errln("*** Should have been " + prettify(jstShort)+ " but it is: " + prettify(zones[index][4]));
|
| + //throw new Exception("Error in short TZ name");
|
| + }
|
| + delete symbols;
|
| +
|
| +}
|
| +
|
| +#endif /* #if !UCONFIG_NO_FORMATTING */
|
|
|
| Property changes on: icu46/source/test/intltest/miscdtfm.cpp
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|