Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: icu46/source/test/intltest/miscdtfm.cpp

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « icu46/source/test/intltest/miscdtfm.h ('k') | icu46/source/test/intltest/mnkytst.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « icu46/source/test/intltest/miscdtfm.h ('k') | icu46/source/test/intltest/mnkytst.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698