11145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org/******************************************************************** 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * COPYRIGHT: 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org * Copyright (c) 1997-2014, International Business Machines Corporation and 49e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org * others. All Rights Reserved. 59e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org ********************************************************************/ 69e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/******************************************************************************** 79e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* 89e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* File CDTRGTST.C 99e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* 109e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* Madhu Katragadda Ported for C API 119e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* Modification History: 129e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* Date Name Description 139e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org* 07/15/99 helena Ported to HPUX 10/11 CC. 149e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org********************************************************************************* 159e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org*/ 169e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/* REGRESSION TEST FOR DATE FORMAT */ 17a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org 18ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org#include "unicode/utypes.h" 19ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 20ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org#if !UCONFIG_NO_FORMATTING 21ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 22a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org#include "unicode/uloc.h" 23a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org#include "unicode/udat.h" 24a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org#include "unicode/ucal.h" 259e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "unicode/unum.h" 26a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org#include "unicode/ustring.h" 279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "cintltst.h" 289e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "cdtrgtst.h" 299e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#include "cmemory.h" 309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 319e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid addDateForRgrTest(TestNode** root); 32a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org 33ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.orgvoid addDateForRgrTest(TestNode** root) 34ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org{ 35ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org addTest(root, &Test4029195, "tsformat/cdtrgtst/Test4029195"); 36ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org addTest(root, &Test4056591, "tsformat/cdtrgtst/Test4056591"); 37a86d416fb652b1936026eee315eccd4f17ca1002machenbach@chromium.org addTest(root, &Test4059917, "tsformat/cdtrgtst/Test4059917"); 389e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org addTest(root, &Test4060212, "tsformat/cdtrgtst/Test4060212"); 399e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org addTest(root, &Test4061287, "tsformat/cdtrgtst/Test4061287"); 409e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org addTest(root, &Test4073003, "tsformat/cdtrgtst/Test4073003"); 419e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org addTest(root, &Test4162071, "tsformat/cdtrgtst/Test4162071"); 429e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org addTest(root, &Test714, "tsformat/cdtrgtst/Test714"); 439e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org addTest(root, &Test_GEec, "tsformat/cdtrgtst/Test_GEec"); /* tests for format chars GEec, jitterbugs 5726 6072 6585 */ 449e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 459e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 469e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/** 479e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org * @bug 4029195 489e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org */ 499e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test4029195() 509e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org{ 51c03a1924dcc113678c0ebe58aa7d3c855a657719yangguo@chromium.org int32_t resultlength, resultlengthneeded; 529e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar *fmdt, *todayS, *rt; 539e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar *pat=NULL; 549e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar *temp; 559e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDate today, d1; 569e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDateFormat *df; 579e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org int32_t parsepos; 584a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org UErrorCode status = U_ZERO_ERROR; 594a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org 604a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org log_verbose("Testing date format and parse function in regression test\n"); 619e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org today = ucal_getNow(); 629e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 639e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org df = udat_open(UDAT_DEFAULT,UDAT_DEFAULT ,"en_US", NULL, 0, NULL, 0, &status); 649e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)) 659e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { 669e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_data_err("FAIL: error in creating the dateformat using default date and time style : %s (Are you missing data?)\n", myErrorName(status)); 67c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com return; 68c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com } 69c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com resultlength=0; 70a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org resultlengthneeded=udat_toPattern(df, TRUE, NULL, resultlength, &status); 71a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org if(status==U_BUFFER_OVERFLOW_ERROR) 72a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org { 739e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org status=U_ZERO_ERROR; 749e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org resultlength=resultlengthneeded + 1; 759e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org pat=(UChar*)malloc(sizeof(UChar) * resultlength); 769e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org udat_toPattern(df, TRUE, pat, resultlength, &status); 779e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 789e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 79c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com log_verbose("pattern: %s\n", austrdup(pat)); 80c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 81c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 82af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org fmdt = myFormatit(df, today); 83af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org if(fmdt) { 84af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org log_verbose("today: %s\n", austrdup(fmdt)); 85af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org } else { 863847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com log_data_err("ERROR: couldn't format, exitting test"); 87af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org return; 88af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org } 89af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 90af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org temp=(UChar*)malloc(sizeof(UChar) * 10); 91af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org u_uastrcpy(temp, "M yyyy dd"); 925c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org udat_applyPattern(df, TRUE, temp, u_strlen(temp)); 935c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 945c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org todayS =myFormatit(df, today); 955c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org log_verbose("After the pattern is applied\n today: %s\n", austrdup(todayS) ); 96af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org parsepos=0; 97af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org d1=udat_parse(df, todayS, u_strlen(todayS), &parsepos, &status); 985c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org if(U_FAILURE(status)) 999e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { 1009e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("FAIL: Error in parsing using udat_parse(.....): %s\n", myErrorName(status)); 1019e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 1029e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1039e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org rt =myFormatit(df, d1); 1049e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_verbose("today: %s\n", austrdup(rt) ); 105e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org 1069e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_verbose("round trip: %s\n", austrdup(rt) ); 1079e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1089e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(u_strcmp(rt, todayS)!=0) { 1099e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("Fail: Want %s Got %s\n", austrdup(todayS), austrdup(rt) ); 1109e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 1119e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org else 112ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com log_verbose("Pass: parse and format working fine\n"); 113ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com udat_close(df); 114ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com free(temp); 1159e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(pat != NULL) { 1169e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org free(pat); 1179e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 1189e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 1199e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1209e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1219e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/** 1229e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org * @bug 4056591 1239e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org * Verify the function of the [s|g]et2DigitYearStart() API. 1249e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org */ 1259e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test4056591() 1269e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org{ 1279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org int i; 1289e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UCalendar *cal; 1299e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDateFormat *def; 1309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDate start,exp,got; 1314efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org UChar s[10]; 132ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com UChar *gotdate, *expdate; 1334efbdb18fa3063085682c44cc77cf5254cb3d75dsvenpanne@chromium.org UChar pat[10]; 1349e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDate d[4]; 1359e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UErrorCode status = U_ZERO_ERROR; 1369e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org const char* strings[] = { 1377304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org "091225", 1387304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org "091224", 1397304bcac06a6a63b9f3dcebac2eeceada87ca146vegorov@chromium.org "611226", 14034e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org "991227" 14134e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org }; 14234e60787ea1e76f3ee49e859f71f036170c21f0elrn@chromium.org 143d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org log_verbose("Testing s[get] 2 digit year start regressively\n"); 144d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org cal=ucal_open(NULL, 0, "en_US", UCAL_GREGORIAN, &status); 145d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org if(U_FAILURE(status)){ 146d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org log_data_err("error in ucal_open caldef : %s - (Are you missing data?)\n", myErrorName(status)); 147d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org return; 148d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org } 1494ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org ucal_setDateTime(cal, 1809, UCAL_DECEMBER, 25, 17, 40, 30, &status); 1504ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org d[0]=ucal_getMillis(cal, &status); 1514ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org if(U_FAILURE(status)){ 1524ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org log_err("Error: failure in get millis: %s\n", myErrorName(status)); 1534ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org } 1544ef23eea527ce7f45bdc5edd52bd4d1a989e2359machenbach@chromium.org ucal_setDateTime(cal, 1909, UCAL_DECEMBER, 24, 17, 40, 30, &status); 1557c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org d[1]=ucal_getMillis(cal, &status); 1567c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org ucal_setDateTime(cal, 1861, UCAL_DECEMBER, 26, 17, 40, 30, &status); 1577c2628c3f0353f0558760c3ca442f934263ea766kmillikin@chromium.org d[2]=ucal_getMillis(cal, &status); 158ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org ucal_setDateTime(cal, 1999, UCAL_DECEMBER, 27, 17, 40, 30, &status); 159ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org d[3]=ucal_getMillis(cal, &status); 160ba72ec861b69b67139c93fc6dd56f4a73c9b3135jkummerow@chromium.org 161ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.org 162ea91cc579ade536e3a08498a8157921dd4f533d1ager@chromium.org u_uastrcpy(pat, "yyMMdd"); 1639e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org def = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL, NULL, 0, pat, u_strlen(pat), &status); 1649e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)) 1659e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { 1669e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_data_err("FAIL: error in creating the dateformat using u_openPattern(): %s - (Are you missing data?)\n", myErrorName(status)); 16731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org return; 16831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org } 16931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org start = 1800; 17041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org udat_set2DigitYearStart(def, start, &status); 17141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org if(U_FAILURE(status)) 17241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org log_err("ERROR: in setTwoDigitStartDate: %s\n", myErrorName(status)); 17341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org if( (udat_get2DigitYearStart(def, &status) != start)) 174b752d4061aaeb7d6a6ec368607871789d54b0207dslomov@chromium.org log_err("ERROR: get2DigitYearStart broken\n"); 1759e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 176f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org 177f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org for(i = 0; i < 4; ++i) { 178b228be01a466e0ba4d8389148671d196b2081f76mstarzinger@chromium.org u_uastrcpy(s, strings[i]); 179e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org exp = d[i]; 180e27d617298263725e8a48c2aa14029759b952623mstarzinger@chromium.org got = udat_parse(def, s, u_strlen(s), 0, &status); 181b228be01a466e0ba4d8389148671d196b2081f76mstarzinger@chromium.org gotdate=myFormatit(def, got); 1821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org expdate=myFormatit(def, exp); 1831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (gotdate == NULL || expdate == NULL) { 1859e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("myFormatit failed!\n"); 1869e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 1879e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org else if(u_strcmp(gotdate, expdate) !=0){ 1889e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("set2DigitYearStart broken for %s \n got: %s, expected: %s\n", austrdup(s), 1899e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org austrdup(gotdate), austrdup(expdate) ); 1909e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 1919e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 1929e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1939e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org udat_close(def); 1949e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org ucal_close(cal); 1959e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 1969e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1979e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 1989e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/** 1999e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org * SimpleDateFormat does not properly parse date strings without delimiters 2009e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org * @bug 4059917 2019e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org */ 2029e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test4059917() 2039e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org{ 2049e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDateFormat* def; 205c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UChar *myDate; 206c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UErrorCode status = U_ZERO_ERROR; 207c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UChar pattern[11]; 208c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UChar tzID[4]; 209c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 210af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org log_verbose("Testing apply pattern and to pattern regressively\n"); 211af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org u_uastrcpy(tzID, "PST"); 212af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org u_uastrcpy(pattern, "yyyy/MM/dd"); 213af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org log_verbose("%s\n", austrdup(pattern) ); 2149e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org def = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,tzID,-1,pattern, u_strlen(pattern),&status); 215af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org if(U_FAILURE(status)) 2169e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { 217af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org log_data_err("FAIL: error in creating the dateformat using openPattern: %s - (Are you missing data?)\n", myErrorName(status)); 2189e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org return; 2193847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com } 2205c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org myDate=(UChar*)malloc(sizeof(UChar) * 11); 2215c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org u_uastrcpy(myDate, "1970/01/12"); 2225c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 2235c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org aux917( def, myDate ); 2245c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org udat_close(def); 2253847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com 2269e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org u_uastrcpy(pattern, "yyyyMMdd"); 2279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org def = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,tzID,-1,pattern, u_strlen(pattern),&status); 2289e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)) 22906ab2ec756e44eeaf7500b9794f9d2abc79dc8cfverwaest@chromium.org { 2309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("FAIL: error in creating the dateformat using openPattern: %s\n", myErrorName(status)); 231750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.org return; 2329e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 2339e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org u_uastrcpy(myDate, "19700112"); 2349e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org aux917( def, myDate ); 2359e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org udat_close(def); 23657ff881caeb2e15b46ac9e4dfc00e378f7c5f929ulan@chromium.org free(myDate); 2379e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 2389e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 2399e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid aux917( UDateFormat *fmt, UChar* str) 240fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org{ 241fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org int32_t resultlength, resultlengthneeded; 242fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org UErrorCode status = U_ZERO_ERROR; 2439e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar* formatted=NULL; 2449e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar *pat=NULL; 2459e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDate d1=1000000000.0; 2469e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 2479e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org resultlength=0; 248c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org resultlengthneeded=udat_toPattern(fmt, TRUE, NULL, resultlength, &status); 249c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org if(status==U_BUFFER_OVERFLOW_ERROR) 250c612e0211bdb8821cbd7886e15b0273ed82d2e9edanno@chromium.org { 25199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org status=U_ZERO_ERROR; 2527a6fc815d62905d0c52705b96225b1bd23e00a43jkummerow@chromium.org resultlength=resultlengthneeded + 1; 2539e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org pat=(UChar*)malloc(sizeof(UChar) * (resultlength)); 2549e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org udat_toPattern(fmt, TRUE, pat, resultlength, &status); 2559e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 2569e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)){ 2579e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("failure in retrieving the pattern: %s\n", myErrorName(status)); 2589e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 2599e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_verbose("pattern: %s\n", austrdup(pat) ); 2609e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 2619e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org status = U_ZERO_ERROR; 2629e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org formatted = myFormatit(fmt, d1); 2635c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org if( u_strcmp(formatted,str)!=0) { 2645c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org log_err("Fail: Want %s Got: %s\n", austrdup(str), austrdup(formatted) ); 2655c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org } 2665c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org free(pat); 2675c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org} 2685c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 2695c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org/** 2705c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org * @bug 4060212 2715c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org */ 2725c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.orgvoid Test4060212() 2735c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org{ 2745c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org int32_t pos; 2755c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UCalendar *cal; 2765c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UDateFormat *formatter, *fmt; 2775c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UErrorCode status = U_ZERO_ERROR; 2785c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UDate myDate; 2795c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UChar *myString; 2805c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UChar dateString[30], pattern[20], tzID[4]; 2819e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org u_uastrcpy(dateString, "1995-040.05:01:29 -8"); 282c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com u_uastrcpy(pattern, "yyyy-DDD.hh:mm:ss z"); 283c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 284c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com log_verbose( "dateString= %s Using yyyy-DDD.hh:mm:ss\n", austrdup(dateString) ); 285830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org status = U_ZERO_ERROR; 286830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org u_uastrcpy(tzID, "PST"); 287830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org 2889e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org formatter = udat_open(UDAT_PATTERN,UDAT_PATTERN,"en_US",tzID,-1,pattern, u_strlen(pattern), &status); 2899e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org pos=0; 2909e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org myDate = udat_parse(formatter, dateString, u_strlen(dateString), &pos, &status); 2919e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 2929e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 2939e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org fmt = udat_open(UDAT_FULL,UDAT_LONG ,NULL, tzID, -1, NULL, 0, &status); 2949e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)) 2959e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { 2969e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_data_err("FAIL: error in creating the dateformat using default date and time style: %s - (Are you missing data?)\n", 2979e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org myErrorName(status) ); 298830d30c478be03b0ac560f4002833ab141e41effsvenpanne@chromium.org return; 2999fa09679c31dd1fc79a07ed24431b6951227240aricow@chromium.org } 3009fa09679c31dd1fc79a07ed24431b6951227240aricow@chromium.org myString = myFormatit(fmt, myDate); 301212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org (void)myString; /* Suppress set but not used warning. */ 302212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status); 303212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org if(U_FAILURE(status)){ 304212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org log_err("FAIL: error in ucal_open caldef : %s\n", myErrorName(status)); 305212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org } 306212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org ucal_setMillis(cal, myDate, &status); 307212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org if ((ucal_get(cal, UCAL_DAY_OF_YEAR, &status) != 40)){ 308212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org log_err("Fail: Got %d Expected 40\n", ucal_get(cal, UCAL_DAY_OF_YEAR, &status)); 309212d964d8f853ddb1fdf3a64037f3af294d55cf3jkummerow@chromium.org } 3109fa09679c31dd1fc79a07ed24431b6951227240aricow@chromium.org 3119fa09679c31dd1fc79a07ed24431b6951227240aricow@chromium.org udat_close(formatter); 3129fa09679c31dd1fc79a07ed24431b6951227240aricow@chromium.org ucal_close(cal); 3139fa09679c31dd1fc79a07ed24431b6951227240aricow@chromium.org udat_close(fmt); 3145c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 3155c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org} 3165c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 3175c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org/** 3185c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org * @bug 4061287 3195c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org */ 3209e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test4061287() 3215c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org{ 3225c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UBool ok; 3235c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org int32_t pos; 3245c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UDateFormat *df; 3255c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UErrorCode status = U_ZERO_ERROR; 3263847bd5ff857259e945a01d75fdb383e2351d166erik.corry@gmail.com UDate myDate; 3275c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org UChar pattern[21], dateString[11]; 328af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 329af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org u_uastrcpy(dateString, "35/13/1971"); 330af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org u_uastrcpy(pattern, "dd/mm/yyyy"); 331af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org status = U_ZERO_ERROR; 332af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org log_verbose("Testing parsing by changing the attribute lenient\n"); 333af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org df = udat_open(UDAT_PATTERN,UDAT_PATTERN,NULL,NULL,0,pattern, u_strlen(pattern),&status); 334af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org if(U_FAILURE(status)){ 335af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org log_data_err("ERROR: failure in open pattern of test4061287: %s - (Are you missing data?)\n", myErrorName(status)); 336af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org return; 337af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org } 338af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org 339af4fba3c6d2a18866505de3e6798757dd1448c6dmachenbach@chromium.org pos=0; 3405c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 3415c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org udat_setLenient(df, FALSE); 3425c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org ok=udat_isLenient(df); 3435c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org if(ok==TRUE) 3445c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org log_err("setLenient nor working\n"); 3455c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org ok = FALSE; 3465c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org myDate = udat_parse(df, dateString, u_strlen(dateString), &pos, &status); 3475c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org (void)myDate; /* Suppress set but not used warning. */ 3485c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org if(U_FAILURE(status)) 3495c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org ok = TRUE; 3505c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org if(ok!=TRUE) 3515c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org log_err("Fail: Lenient not working: does lenient parsing in spite of setting Leninent as FALSE "); 3525c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 3535c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org udat_close(df); 3545c88bc39690cc94affe78cf5777eb8180c4af8a4machenbach@chromium.org 3559e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 3569e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 3579e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 358486536df718553960f9700559e80e5b10b0d5994dslomov@chromium.org 3597b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org/* The java.text.DateFormat.parse(String) method expects for the 36083130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org US locale a string formatted according to mm/dd/yy and parses it 3617b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org correctly. 36283130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org 3637b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org When given a string mm/dd/yyyy it only parses up to the first 3647b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org two y's, typically resulting in a date in the year 1919. 36583130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org 36683130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org Please extend the parsing method(s) to handle strings with 36783130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org four-digit year values (probably also applicable to various 36883130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org other locales. */ 36983130cfc204d3ffed6832a7ef149b19328a58b33svenpanne@chromium.org/** 3707b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org * @bug 4073003 3717b26015ac58e54e88f4214e248f772ad4f055477whesse@chromium.org */ 3729e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test4073003() 3739e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org{ 3749e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org int32_t pos,i; 3759e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDate d,dd; 37699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org UChar *datestr; 37799aa490225c81012235659d9a183226b286178c8yangguo@chromium.org UChar temp[15]; 37899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org UErrorCode status = U_ZERO_ERROR; 37999aa490225c81012235659d9a183226b286178c8yangguo@chromium.org UDateFormat *fmt; 380f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org UChar *result, *result2; 38199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org const char* tests [] = { 382f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org "12/25/61", 38399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org "12/25/1961", 384f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org "4/3/1999", 385f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org "4/3/99" 386f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org }; 387f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org 388f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org fmt= udat_open(UDAT_SHORT,UDAT_SHORT ,NULL, NULL, 0, NULL, 0, &status); 389f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org if(U_FAILURE(status)) 390f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org { 391f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org log_data_err("FAIL: error in creating the dateformat using short date and time style: %s (Are you missing data?)\n", 392f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org myErrorName(status)); 393f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org return; 394f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org } 395f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org u_uastrcpy(temp, "m/D/yy"); 396f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org udat_applyPattern(fmt, FALSE, temp, u_strlen(temp)); 397f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org 398f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org for(i= 0; i < 4; i+=2) { 399f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org status=U_ZERO_ERROR; 400f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org datestr=(UChar*)malloc(sizeof(UChar) * (strlen(tests[i])+1)); 401f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org u_uastrcpy(datestr, tests[i]); 402f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org 403f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org pos=0; 404f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org d = udat_parse(fmt, datestr, u_strlen(datestr), &pos, &status); 405f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org if(U_FAILURE(status)){ 406f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org log_err("ERROR : in test 4073003: %s\n", myErrorName(status)); 407f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org } 408f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org 409f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org free(datestr); 410f5a24546072ecdbbd6372c85c42157e01e913561titzer@chromium.org datestr=(UChar*)malloc(sizeof(UChar) * (strlen(tests[i+1])+1)); 41199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org u_uastrcpy(datestr, tests[i+1]); 41299aa490225c81012235659d9a183226b286178c8yangguo@chromium.org 41399aa490225c81012235659d9a183226b286178c8yangguo@chromium.org pos=0; 41499aa490225c81012235659d9a183226b286178c8yangguo@chromium.org status=U_ZERO_ERROR; 41599aa490225c81012235659d9a183226b286178c8yangguo@chromium.org dd = udat_parse(fmt, datestr, u_strlen(datestr), &pos, &status); 41699aa490225c81012235659d9a183226b286178c8yangguo@chromium.org if(U_FAILURE(status)){ 4179e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("ERROR : in test 4073003: %s\n", myErrorName(status)); 4189e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 419c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com free(datestr); 420c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 421c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com result =myFormatit(fmt, d); 422c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com result2 =myFormatit(fmt, dd); 423c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com if(!result || !result2) { 424c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com log_data_err("Fail: could not format - exitting test\n"); 425c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com return; 4269e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if (u_strcmp(result, result2)!=0){ 42899aa490225c81012235659d9a183226b286178c8yangguo@chromium.org log_err("Fail: %s != %s\n", austrdup(result), austrdup(result2) ); 4299e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org else{ 4319e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_verbose("Ok: %s == %s\n", austrdup(result), austrdup(result2) ); 4329e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4339e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 434ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com } 435ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com udat_close(fmt); 436d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org} 437ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com 438ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com/** 43981cac2ba397bd57f2967c8b4b677bef08a869991danno@chromium.org * @bug 4162071 44081cac2ba397bd57f2967c8b4b677bef08a869991danno@chromium.org **/ 441ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.comvoid Test4162071() 442ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com{ 443ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com int32_t pos; 444ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com UDate x; 445ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com UErrorCode status = U_ZERO_ERROR; 446ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com UDateFormat *df; 447ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com UChar datestr[30]; 448ed49e965b5cafa35395084dbfb79f4e07930f10ferik.corry@gmail.com UChar format[50]; 4499e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org u_uastrcpy(datestr, "Thu, 30-Jul-1999 11:51:14 GMT"); 4509e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org u_uastrcpy(format, "EEE', 'dd-MMM-yyyy HH:mm:ss z"); /* RFC 822/1123 */ 451594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org status = U_ZERO_ERROR; 452594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org /* Can't hardcode the result to assume the default locale is "en_US". */ 453594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org df = udat_open(UDAT_PATTERN,UDAT_PATTERN,"en_US",NULL,0,format, u_strlen(format),&status); 4549e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)){ 455594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org log_data_err("ERROR: couldn't create date format: %s\n", myErrorName(status)); 456594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org return; 4579e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4589e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org pos=0; 4599e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org x = udat_parse(df, datestr, u_strlen(datestr), &pos, &status); 4604a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org (void)x; /* Suppress set but not used warning. */ 4614a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org if(U_FAILURE(status)){ 4624a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org log_data_err("ERROR : parse format %s fails : %s\n", austrdup(format), myErrorName(status)); 463f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org } 464f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org else{ 4650cc095007a3ccded63f6577751c6a04300eb7ae9machenbach@chromium.org log_verbose("Parse format \"%s \" ok.\n", austrdup(format) ); 466f705b5034dc5bc422ac1019b591469a7d0534772mstarzinger@chromium.org } 4674a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org /*log_verbose("date= %s\n", austrdup(myFormatit(df, x)) );*/ 4684a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org udat_close(df); 4694a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org} 4709e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 4719e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test714(void) 4729e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org{ 4739e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UDate d=978103543000.0; 4749e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar temp[20]; 475c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UErrorCode status = U_ZERO_ERROR; 476c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UDateFormat *fmt; 477c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UChar *result; 4789e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org const char* expect = "7:25:43 AM"; 4799e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 4809e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org ctest_setTimeZone(NULL, &status); 4819e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 4829e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org fmt= udat_open(UDAT_MEDIUM,UDAT_NONE ,"en_US_CA", NULL, -1, NULL, 0, &status); 4839e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(U_FAILURE(status)) 4849e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { 4859e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_data_err("FAIL: error in creating the dateformat using medium time style and NO date style: %s (Are you missing data?)\n", 4869e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org myErrorName(status)); 4879e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org return; 4889e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4899e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org result =myFormatit(fmt, d); 4909e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if(!result) { 4919e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_data_err("Fail: could not format - exitting test\n"); 4929e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org return; 4939e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4949e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org u_uastrcpy(temp, expect); 4959e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org if (u_strcmp(result, temp)!=0){ 4969e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org log_err("Fail: %s != %s\n", austrdup(result), expect); 4979e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org } 4988a58f6420f995bb19fff9babb261458d49d90cb1machenbach@chromium.org else{ 4998a58f6420f995bb19fff9babb261458d49d90cb1machenbach@chromium.org log_verbose("Ok: %s == %s\n", austrdup(result), expect ); 5008a58f6420f995bb19fff9babb261458d49d90cb1machenbach@chromium.org } 5018a58f6420f995bb19fff9babb261458d49d90cb1machenbach@chromium.org 5028a58f6420f995bb19fff9babb261458d49d90cb1machenbach@chromium.org udat_close(fmt); 50333e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org 50433e09c8efd078308de3c77a88301566f65c07befverwaest@chromium.org ctest_resetTimeZone(); 5054e308cf00936c6e7bead43e5141a04e37b49b9b5jkummerow@chromium.org} 5064e308cf00936c6e7bead43e5141a04e37b49b9b5jkummerow@chromium.org 50789e18f5599cb4cd462cb1ed324addd7388fb4d60rossberg@chromium.orgenum { DATE_TEXT_MAX_CHARS = 64 }; 5089e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar zonePST[] = { 0x50,0x53,0x54,0 }; /* "PST" */ 50999aa490225c81012235659d9a183226b286178c8yangguo@chromium.orgstatic const UDate july022008 = 1215000001979.0; /* 02 July 2008 5:00:01.979 AM PDT (near ICU 4.0 release date :-) */ 51099aa490225c81012235659d9a183226b286178c8yangguo@chromium.orgstatic const double dayMillisec = 8.64e+07; 51199aa490225c81012235659d9a183226b286178c8yangguo@chromium.org 51299aa490225c81012235659d9a183226b286178c8yangguo@chromium.orgstatic const UChar dMyGGGPattern[] = { 0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0x20,0x47,0x47,0x47,0 }; /* "dd MMM yyyy GGG" */ 5139e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar dMyGGGGGPattern[] = { 0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0x20,0x47,0x47,0x47,0x47,0x47,0 }; /* "dd MMM yyyy GGGGG" */ 5149e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar dMyGGGText[] = { 0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0x20,0x41,0x44,0 }; /* "02 Jul 2008 AD" */ 5159e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar dMyGGGGGText[] = { 0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0x20,0x41,0 }; /* "02 Jul 2008 A" */ 5169e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar edMyPattern[] = { 0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "e dd MMM yyyy" */ 5177028c05c1c71b9d5c5fe1bca01f2461d17a2dda7mmassi@chromium.orgstatic const UChar eedMyPattern[] = { 0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "ee dd MMM yyyy" */ 5187028c05c1c71b9d5c5fe1bca01f2461d17a2dda7mmassi@chromium.orgstatic const UChar cdMyPattern[] = { 0x63,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "c dd MMM yyyy" */ 519750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.orgstatic const UChar ccdMyPattern[] = { 0x63,0x63,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "cc dd MMM yyyy" */ 520750145ab1b720c97adf2b548cc8fbd28c8b8e06dulan@chromium.orgstatic const UChar edMyText[] = { 0x34,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "4 02 Jul 2008" */ 5219e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eedMyText[] = { 0x30,0x34,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "04 02 Jul 2008" */ 5229e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eeedMyPattern[] = { 0x65,0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "eee dd MMM yyyy" */ 5239e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar EEEdMyPattern[] = { 0x45,0x45,0x45,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "EEE dd MMM yyyy" */ 5249e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar EEdMyPattern[] = { 0x45,0x45,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "EE dd MMM yyyy" */ 5259e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eeedMyText[] = { 0x57,0x65,0x64,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "Wed 02 Jul 2008" */ 5269e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eeeedMyPattern[] = { 0x65,0x65,0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "eeee dd MMM yyyy" */ 5279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eeeedMyText[] = { 0x57,0x65,0x64,0x6E,0x65,0x73,0x64,0x61,0x79,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "Wednesday 02 Jul 2008" */ 5289e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eeeeedMyPattern[] = { 0x65,0x65,0x65,0x65,0x65,0x20,0x64,0x64,0x20,0x4D,0x4D,0x4D,0x20,0x79,0x79,0x79,0x79,0 }; /* "eeeee dd MMM yyyy" */ 5299e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar eeeeedMyText[] = { 0x57,0x20,0x30,0x32,0x20,0x4A,0x75,0x6C,0x20,0x32,0x30,0x30,0x38,0 }; /* "W 02 Jul 2008" */ 5309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar ewYPattern[] = { 0x65,0x20,0x77,0x77,0x20,0x59,0x59,0x59,0x59,0 }; /* "e ww YYYY" */ 531e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar cwYPattern[] = { 0x63,0x20,0x77,0x77,0x20,0x59,0x59,0x59,0x59,0 }; /* "c ww YYYY" */ 532e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar ewYText[] = { 0x34,0x20,0x32,0x37,0x20,0x32,0x30,0x30,0x38,0 }; /* "4 27 2008" */ 533e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar HHmmssPattern[] = { 0x48,0x48,0x3A,0x6D,0x6D,0x3A,0x73,0x73,0 }; /* "HH:mm:ss" */ 534e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar HHmmssText[] = { 0x30,0x35,0x3A,0x30,0x30,0x3A,0x30,0x31,0 }; /* "05:00:01" */ 535e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar ssSPattern[] = { 0x73,0x73,0x2E,0x53,0 }; /* "ss.S" */ 536e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar ssSText[] = { 0x30,0x31,0x2E,0x39,0 }; /* "01.9" */ 537e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgstatic const UChar ssSSPattern[] = { 0x73,0x73,0x2E,0x53,0x53,0 }; /* "ss.SS" */ 5389e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgstatic const UChar ssSSText[] = { 0x30,0x31,0x2E,0x39,0x37,0 }; /* "01.97" */ 5399e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 5409e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgtypedef struct { 541f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org const UChar * pattern; 542f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org const UChar * text; 543ea52b5f5c87edc97dc0632eec996ca2af071317culan@chromium.org const char * label; 5441456e708d277e725ca42a03463af16fe471c9210jkummerow@chromium.org} DatePatternAndText; 545f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.orgstatic const DatePatternAndText datePatternsAndText[] = { 546f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org { dMyGGGPattern, dMyGGGText, "dd MMM yyyy GGG" }, 547f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org { dMyGGGGGPattern, dMyGGGGGText, "dd MMM yyyy GGGGG" }, 548ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org { edMyPattern, edMyText, "e dd MMM yyyy" }, 549ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org { eedMyPattern, eedMyText, "ee dd MMM yyyy" }, 550ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org { cdMyPattern, edMyText, "c dd MMM yyyy" }, 551ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org { ccdMyPattern, edMyText, "cc dd MMM yyyy" }, 552ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org { eeedMyPattern, eeedMyText, "eee dd MMM yyyy" }, 553ab30bb83bf3dae0053739c57b1db9ad13c1f9e3ayangguo@chromium.org { EEEdMyPattern, eeedMyText, "EEE dd MMM yyyy" }, 5549e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { EEdMyPattern, eeedMyText, "EE dd MMM yyyy" }, 5559e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { eeeedMyPattern, eeeedMyText, "eeee dd MMM yyyy" }, 5569e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { eeeeedMyPattern, eeeeedMyText, "eeeee dd MMM yyyy" }, 5579e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { ewYPattern, ewYText, "e ww YYYY" }, 5589e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { cwYPattern, ewYText, "c ww YYYY" }, 5599e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { HHmmssPattern, HHmmssText, "* HH:mm:ss" }, /* '*' at start means don't check value from parse (won't be july022008) */ 5609e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { ssSPattern, ssSText, "* ss.S" }, 5619e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { ssSSPattern, ssSSText, "* ss.SS" }, 5629e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org { NULL, NULL, NULL } 5639e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org}; 5649e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgvoid Test_GEec(void) 565c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com{ 566c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UErrorCode status = U_ZERO_ERROR; 567c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UDateFormat * dtfmt = udat_open(UDAT_LONG, UDAT_LONG, "en", zonePST, -1, NULL, 0, &status); 568c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com if ( U_SUCCESS(status) ) { 5691145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org const DatePatternAndText *patTextPtr; 5701145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org for (patTextPtr = datePatternsAndText; patTextPtr->pattern != NULL; ++patTextPtr) { 5711145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org UChar dmyGnText[DATE_TEXT_MAX_CHARS]; 5721145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org char byteText[3*DATE_TEXT_MAX_CHARS]; 5731145ef852a4e230e1f642eecd8de155f2b26bc53jkummerow@chromium.org int32_t dmyGnTextLen; 574c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com UDate dateResult; 575c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com 576c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com udat_applyPattern(dtfmt, FALSE, patTextPtr->pattern, -1); 577c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com dmyGnTextLen = udat_format(dtfmt, july022008, dmyGnText, DATE_TEXT_MAX_CHARS, NULL, &status); 578c3b670ff19220959730d7886892bc4beb95d2ebaerik.corry@gmail.com (void)dmyGnTextLen; /* Suppress set but not used warning. */ 579a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org if ( U_FAILURE(status) ) { 580a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org log_err("FAIL: udat_format with %s: %s\n", patTextPtr->label, myErrorName(status) ); 581a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org status = U_ZERO_ERROR; 582a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org } else if ( u_strcmp(dmyGnText, patTextPtr->text) != 0 ) { 583bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org log_err("FAIL: udat_format with %s: wrong UChar[] result %s\n", patTextPtr->label, u_austrcpy(byteText,dmyGnText) ); 584a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org } 585bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org 586bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org dateResult = udat_parse(dtfmt, patTextPtr->text, -1, NULL, &status); /* no time, dateResult != july022008 by some hours */ 587bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org if ( U_FAILURE(status) ) { 588a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org log_err("FAIL: udat_parse with %s: %s\n", patTextPtr->label, myErrorName(status) ); 589bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org status = U_ZERO_ERROR; 590bcc36723a2ace28fa3b0d7dd0d1de926d313fff9machenbach@chromium.org } else if ( patTextPtr->label[0] != '*' && july022008 - dateResult > dayMillisec ) { 591a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org log_err("FAIL: udat_parse with %s: wrong UDate result\n", patTextPtr->label ); 592a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org } 593a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org } 594a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org udat_close(dtfmt); 595a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org } else { 596a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org log_data_err("FAIL: udat_open fails: %s (Are you missing data?)\n", myErrorName(status)); 597a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org } 598a2e1a40f85577979749d4c0d6de30e992d996659mstarzinger@chromium.org} 5999e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6009e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/*INTERNAL FUNCTION USED */ 6019e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6029e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.orgUChar* myFormatit(UDateFormat* datdef, UDate d1) 6039e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org{ 6049e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org UChar *result1=NULL; 60531b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org int32_t resultlength, resultlengthneeded; 60631b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org UErrorCode status = U_ZERO_ERROR; 60731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org 60831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org resultlength=0; 60931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org resultlengthneeded=udat_format(datdef, d1, NULL, resultlength, NULL, &status); 61031b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org if(status==U_BUFFER_OVERFLOW_ERROR) 61131b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org { 61231b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org status=U_ZERO_ERROR; 61331b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org resultlength=resultlengthneeded+1; 61431b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org /*result1=(UChar*)malloc(sizeof(UChar) * resultlength);*/ /*this leaks*/ 61531b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org result1=(UChar*)ctst_malloc(sizeof(UChar) * resultlength); /*this won't*/ 61631b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org udat_format(datdef, d1, result1, resultlength, NULL, &status); 61731b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org } 61831b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org if(U_FAILURE(status)) 61931b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org { 62031b1277ec3b8cd17acb01c66d85a456159072157kmillikin@chromium.org log_err("FAIL: Error in formatting using udat_format(.....): %s\n", myErrorName(status)); 6219e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org return 0; 6224a9f6553038df6b893b3d3ccae351723f4cbbae7yangguo@chromium.org } 6239e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6249e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6259e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org return result1; 6269e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6279e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org} 6289e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6299e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 6309e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org 6319e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org/*eof*/ 6329e3e0b618a14a05efd7d66f20bac4423dd3a1a2ffschneider@chromium.org