summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.6/test/intltest/sdtfmtts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/test/intltest/sdtfmtts.cpp')
-rw-r--r--Build/source/libs/icu/icu-4.6/test/intltest/sdtfmtts.cpp274
1 files changed, 274 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/test/intltest/sdtfmtts.cpp b/Build/source/libs/icu/icu-4.6/test/intltest/sdtfmtts.cpp
new file mode 100644
index 00000000000..b63a71feddd
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/test/intltest/sdtfmtts.cpp
@@ -0,0 +1,274 @@
+
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (c) 1997-2010, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "sdtfmtts.h"
+
+#include "unicode/smpdtfmt.h"
+#include "unicode/dtfmtsym.h"
+
+// This is an API test, not a unit test. It doesn't test very many cases, and doesn't
+// try to test the full functionality. It just calls each function in the class and
+// verifies that it works on a basic level.
+
+void IntlTestSimpleDateFormatAPI::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
+{
+ if (exec) logln("TestSuite SimpleDateFormatAPI");
+ switch (index) {
+ case 0: name = "SimpleDateFormat API test";
+ if (exec) {
+ logln("SimpleDateFormat API test---"); logln("");
+ UErrorCode status = U_ZERO_ERROR;
+ Locale saveLocale;
+ Locale::setDefault(Locale::getEnglish(), status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not set default locale, test may not give correct results");
+ }
+ testAPI(/*par*/);
+ Locale::setDefault(saveLocale, status);
+ }
+ break;
+
+ default: name = ""; break;
+ }
+}
+
+/**
+ * Test various generic API methods of SimpleDateFormat for API coverage.
+ */
+void IntlTestSimpleDateFormatAPI::testAPI(/*char *par*/)
+{
+ UErrorCode status = U_ZERO_ERROR;
+
+// ======= Test constructors
+
+ logln("Testing SimpleDateFormat constructors");
+
+ SimpleDateFormat def(status);
+ if(U_FAILURE(status)) {
+ dataerrln("ERROR: Could not create SimpleDateFormat (default) - exitting");
+ return;
+ }
+
+ status = U_ZERO_ERROR;
+ const UnicodeString pattern("yyyy.MM.dd G 'at' hh:mm:ss z", "");
+ const UnicodeString override("y=hebr;d=thai;s=arab", ""); /* use invariant converter */
+ const UnicodeString override_bogus("y=hebr;d=thai;s=bogus", "");
+
+ SimpleDateFormat pat(pattern, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not create SimpleDateFormat (pattern) - %s", u_errorName(status));
+ }
+
+ status = U_ZERO_ERROR;
+ SimpleDateFormat pat_fr(pattern, Locale::getFrench(), status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not create SimpleDateFormat (pattern French)");
+ }
+
+ status = U_ZERO_ERROR;
+ DateFormatSymbols *symbols = new DateFormatSymbols(Locale::getFrench(), status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not create DateFormatSymbols (French)");
+ }
+
+ status = U_ZERO_ERROR;
+ SimpleDateFormat cust1(pattern, symbols, status);
+ if(U_FAILURE(status)) {
+ dataerrln("ERROR: Could not create SimpleDateFormat (pattern, symbols*) - exitting");
+ return;
+ }
+
+ status = U_ZERO_ERROR;
+ SimpleDateFormat cust2(pattern, *symbols, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not create SimpleDateFormat (pattern, symbols)");
+ }
+
+ status = U_ZERO_ERROR;
+ logln(UnicodeString("Override with: ") + override);
+ SimpleDateFormat ovr1(pattern, override, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not create SimpleDateFormat (pattern, override) - %s", u_errorName(status));
+ }
+
+ status = U_ZERO_ERROR;
+ SimpleDateFormat ovr2(pattern, override, Locale::getGerman(), status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Could not create SimpleDateFormat (pattern, override, locale) - %s", u_errorName(status));
+ }
+
+ status = U_ZERO_ERROR;
+ logln(UnicodeString("Override with: ") + override_bogus);
+ SimpleDateFormat ovr3(pattern, override_bogus, Locale::getGerman(), status);
+ if(U_SUCCESS(status)) {
+ errln("ERROR: Should not have been able to create SimpleDateFormat (pattern, override, locale) with a bogus override");
+ }
+
+
+ SimpleDateFormat copy(pat);
+
+// ======= Test clone(), assignment, and equality
+
+ logln("Testing clone(), assignment and equality operators");
+
+ if( ! (copy == pat) || copy != pat) {
+ errln("ERROR: Copy constructor (or ==) failed");
+ }
+
+ copy = cust1;
+ if(copy != cust1) {
+ errln("ERROR: Assignment (or !=) failed");
+ }
+
+ Format *clone = def.clone();
+ if( ! (*clone == def) ) {
+ errln("ERROR: Clone() (or ==) failed");
+ }
+ delete clone;
+
+// ======= Test various format() methods
+
+ logln("Testing various format() methods");
+
+ UDate d = 837039928046.0;
+ Formattable fD(d, Formattable::kIsDate);
+
+ UnicodeString res1, res2;
+ FieldPosition pos1(0), pos2(0);
+
+ res1 = def.format(d, res1, pos1);
+ logln( (UnicodeString) "" + d + " formatted to " + res1);
+
+ status = U_ZERO_ERROR;
+ res2 = cust1.format(fD, res2, pos2, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: format(Formattable [Date]) failed");
+ }
+ logln((UnicodeString) "" + fD.getDate() + " formatted to " + res2);
+
+// ======= Test parse()
+
+ logln("Testing parse()");
+
+ UnicodeString text("02/03/76 2:50 AM, CST");
+ UDate result1, result2;
+ ParsePosition pos(0);
+ result1 = def.parse(text, pos);
+ logln(text + " parsed into " + result1);
+
+ status = U_ZERO_ERROR;
+ result2 = def.parse(text, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: parse() failed");
+ }
+ logln(text + " parsed into " + result2);
+
+// ======= Test getters and setters
+
+ logln("Testing getters and setters");
+
+ const DateFormatSymbols *syms = pat.getDateFormatSymbols();
+ if(!syms) {
+ errln("Couldn't obtain DateFormatSymbols. Quitting test!");
+ return;
+ }
+ if(syms->getDynamicClassID() != DateFormatSymbols::getStaticClassID()) {
+ errln("ERROR: format->getDateFormatSymbols()->getDynamicClassID() != DateFormatSymbols::getStaticClassID()");
+ }
+ DateFormatSymbols *newSyms = new DateFormatSymbols(*syms);
+ def.adoptDateFormatSymbols(newSyms);
+ pat_fr.setDateFormatSymbols(*newSyms);
+ if( *(pat.getDateFormatSymbols()) != *(def.getDateFormatSymbols())) {
+ errln("ERROR: adopt or set DateFormatSymbols() failed");
+ }
+
+ status = U_ZERO_ERROR;
+ UDate startDate = pat.get2DigitYearStart(status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: getTwoDigitStartDate() failed");
+ }
+
+ status = U_ZERO_ERROR;
+ pat_fr.set2DigitYearStart(startDate, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: setTwoDigitStartDate() failed");
+ }
+
+// ======= Test DateFormatSymbols constructor
+ newSyms =new DateFormatSymbols("gregorian", status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: new DateFormatSymbols() failed");
+ }
+ def.adoptDateFormatSymbols(newSyms);
+
+// ======= Test applyPattern()
+
+ logln("Testing applyPattern()");
+
+ UnicodeString p1("yyyy.MM.dd G 'at' hh:mm:ss z");
+ logln("Applying pattern " + p1);
+ status = U_ZERO_ERROR;
+ pat.applyPattern(p1);
+
+ UnicodeString s2;
+ s2 = pat.toPattern(s2);
+ logln("Extracted pattern is " + s2);
+ if(s2 != p1) {
+ errln("ERROR: toPattern() result did not match pattern applied");
+ }
+
+ logln("Applying pattern " + p1);
+ status = U_ZERO_ERROR;
+ pat.applyLocalizedPattern(p1, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: applyPattern() failed with " + (int32_t) status);
+ }
+ UnicodeString s3;
+ status = U_ZERO_ERROR;
+ s3 = pat.toLocalizedPattern(s3, status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: toLocalizedPattern() failed");
+ }
+ logln("Extracted pattern is " + s3);
+ if(s3 != p1) {
+ errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+ }
+
+// ======= Test getStaticClassID()
+
+ logln("Testing getStaticClassID()");
+
+ status = U_ZERO_ERROR;
+ DateFormat *test = new SimpleDateFormat(status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Couldn't create a SimpleDateFormat");
+ }
+
+ if(test->getDynamicClassID() != SimpleDateFormat::getStaticClassID()) {
+ errln("ERROR: getDynamicClassID() didn't return the expected value");
+ }
+
+ delete test;
+
+// ======= Test Ticket 5684 (Parsing with 'e' and 'Y')
+ SimpleDateFormat object(UNICODE_STRING_SIMPLE("YYYY'W'wwe"), status);
+ if(U_FAILURE(status)) {
+ errln("ERROR: Couldn't create a SimpleDateFormat");
+ }
+ object.setLenient(false);
+ ParsePosition pp(0);
+ UDate udDate = object.parse("2007W014", pp);
+ if ((double)udDate == 0.0) {
+ errln("ERROR: Parsing failed using 'Y' and 'e'");
+ }
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */