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