16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/******************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2012, International Business Machines Corporation and 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved. 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/ 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "sdtfmtts.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/smpdtfmt.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/dtfmtsym.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// This is an API test, not a unit test. It doesn't test very many cases, and doesn't 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// try to test the full functionality. It just calls each function in the class and 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// verifies that it works on a basic level. 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid IntlTestSimpleDateFormatAPI::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (exec) logln("TestSuite SimpleDateFormatAPI"); 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org switch (index) { 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org case 0: name = "SimpleDateFormat API test"; 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (exec) { 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("SimpleDateFormat API test---"); logln(""); 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale saveLocale; 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale::setDefault(Locale::getEnglish(), status); 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not set default locale, test may not give correct results"); 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org testAPI(/*par*/); 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale::setDefault(saveLocale, status); 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org break; 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org default: name = ""; break; 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test various generic API methods of SimpleDateFormat for API coverage. 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid IntlTestSimpleDateFormatAPI::testAPI(/*char *par*/) 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test constructors 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing SimpleDateFormat constructors"); 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat def(status); 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dataerrln("ERROR: Could not create SimpleDateFormat (default) - exitting"); 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString pattern("yyyy.MM.dd G 'at' hh:mm:ss z", ""); 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString override("y=hebr;d=thai;s=arab", ""); /* use invariant converter */ 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString override_bogus("y=hebr;d=thai;s=bogus", ""); 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat pat(pattern, status); 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not create SimpleDateFormat (pattern) - %s", u_errorName(status)); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat pat_fr(pattern, Locale::getFrench(), status); 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not create SimpleDateFormat (pattern French)"); 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateFormatSymbols *symbols = new DateFormatSymbols(Locale::getFrench(), status); 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not create DateFormatSymbols (French)"); 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat cust1(pattern, symbols, status); 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org dataerrln("ERROR: Could not create SimpleDateFormat (pattern, symbols*) - exitting"); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat cust2(pattern, *symbols, status); 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not create SimpleDateFormat (pattern, symbols)"); 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln(UnicodeString("Override with: ") + override); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat ovr1(pattern, override, status); 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not create SimpleDateFormat (pattern, override) - %s", u_errorName(status)); 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat ovr2(pattern, override, Locale::getGerman(), status); 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Could not create SimpleDateFormat (pattern, override, locale) - %s", u_errorName(status)); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln(UnicodeString("Override with: ") + override_bogus); 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat ovr3(pattern, override_bogus, Locale::getGerman(), status); 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_SUCCESS(status)) { 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Should not have been able to create SimpleDateFormat (pattern, override, locale) with a bogus override"); 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat copy(pat); 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test clone(), assignment, and equality 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing clone(), assignment and equality operators"); 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if( ! (copy == pat) || copy != pat) { 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Copy constructor (or ==) failed"); 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org copy = cust1; 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(copy != cust1) { 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Assignment (or !=) failed"); 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Format *clone = def.clone(); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if( ! (*clone == def) ) { 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Clone() (or ==) failed"); 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete clone; 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test various format() methods 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing various format() methods"); 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate d = 837039928046.0; 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Formattable fD(d, Formattable::kIsDate); 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString res1, res2; 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FieldPosition pos1(0), pos2(0); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org res1 = def.format(d, res1, pos1); 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln( (UnicodeString) "" + d + " formatted to " + res1); 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org res2 = cust1.format(fD, res2, pos2, status); 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: format(Formattable [Date]) failed"); 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln((UnicodeString) "" + fD.getDate() + " formatted to " + res2); 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test parse() 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing parse()"); 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString text("02/03/76 2:50 AM, CST"); 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate result1, result2; 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ParsePosition pos(0); 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org result1 = def.parse(text, pos); 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln(text + " parsed into " + result1); 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org result2 = def.parse(text, status); 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: parse() failed"); 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln(text + " parsed into " + result2); 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test getters and setters 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing getters and setters"); 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const DateFormatSymbols *syms = pat.getDateFormatSymbols(); 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(!syms) { 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("Couldn't obtain DateFormatSymbols. Quitting test!"); 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return; 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(syms->getDynamicClassID() != DateFormatSymbols::getStaticClassID()) { 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: format->getDateFormatSymbols()->getDynamicClassID() != DateFormatSymbols::getStaticClassID()"); 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateFormatSymbols *newSyms = new DateFormatSymbols(*syms); 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org def.adoptDateFormatSymbols(newSyms); 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org pat_fr.setDateFormatSymbols(*newSyms); 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if( *(pat.getDateFormatSymbols()) != *(def.getDateFormatSymbols())) { 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: adopt or set DateFormatSymbols() failed"); 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate startDate = pat.get2DigitYearStart(status); 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: getTwoDigitStartDate() failed"); 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org pat_fr.set2DigitYearStart(startDate, status); 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: setTwoDigitStartDate() failed"); 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test DateFormatSymbols constructor 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org newSyms =new DateFormatSymbols("gregorian", status); 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: new DateFormatSymbols() failed"); 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org def.adoptDateFormatSymbols(newSyms); 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test applyPattern() 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing applyPattern()"); 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString p1("yyyy.MM.dd G 'at' hh:mm:ss z"); 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Applying pattern " + p1); 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org pat.applyPattern(p1); 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString s2; 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org s2 = pat.toPattern(s2); 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Extracted pattern is " + s2); 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(s2 != p1) { 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: toPattern() result did not match pattern applied"); 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Applying pattern " + p1); 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org pat.applyLocalizedPattern(p1, status); 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: applyPattern() failed with %s", u_errorName(status)); 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString s3; 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org s3 = pat.toLocalizedPattern(s3, status); 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: toLocalizedPattern() failed"); 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Extracted pattern is " + s3); 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(s3 != p1) { 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: toLocalizedPattern() result did not match pattern applied"); 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test getStaticClassID() 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org logln("Testing getStaticClassID()"); 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org status = U_ZERO_ERROR; 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateFormat *test = new SimpleDateFormat(status); 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Couldn't create a SimpleDateFormat"); 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(test->getDynamicClassID() != SimpleDateFormat::getStaticClassID()) { 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: getDynamicClassID() didn't return the expected value"); 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete test; 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// ======= Test Ticket 5684 (Parsing with 'e' and 'Y') 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SimpleDateFormat object(UNICODE_STRING_SIMPLE("YYYY'W'wwe"), status); 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if(U_FAILURE(status)) { 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Couldn't create a SimpleDateFormat"); 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org object.setLenient(false); 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ParsePosition pp(0); 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDate udDate = object.parse("2007W014", pp); 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if ((double)udDate == 0.0) { 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org errln("ERROR: Parsing failed using 'Y' and 'e'"); 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 275