1c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
2c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/********************************************************************
3c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * COPYRIGHT:
41b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * Copyright (c) 1997-2015, International Business Machines Corporation and
5c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * others. All Rights Reserved.
6c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru ********************************************************************/
7c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/utypes.h"
9c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
10c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
11c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
12c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
13b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//TODO: define it in compiler flag
14c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru//#define DTIFMTTS_DEBUG 1
15c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
16c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
17c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
18b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include <iostream>
19c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
20c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
21c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
22c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "cstring.h"
23c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "dtifmtts.h"
24c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/gregocal.h"
25c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/dtintrv.h"
26c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/dtitvinf.h"
27c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/dtitvfmt.h"
288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "unicode/localpointer.h"
29b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/timezone.h"
30c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
31c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
32c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
33c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
34c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru//#define PRINTMESG(msg) { std::cout << "(" << __FILE__ << ":" << __LINE__ << ") " << msg << "\n"; }
35c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define PRINTMESG(msg) { std::cout << msg; }
36c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
37c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
38c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define ARRAY_SIZE(array) (sizeof array / sizeof array[0])
39c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
40c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include <stdio.h>
41c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
42c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
43c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) {
44c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if (exec) logln("TestSuite DateIntervalFormat");
45c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    switch (index) {
46c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        TESTCASE(0, testAPI);
47c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        TESTCASE(1, testFormat);
48c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        TESTCASE(2, testFormatUserDII);
498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        TESTCASE(3, testSetIntervalPatternNoSideEffect);
5059d709d503bab6e2b61931737e662dd293b40578ccornelius        TESTCASE(4, testYearFormats);
5159d709d503bab6e2b61931737e662dd293b40578ccornelius        TESTCASE(5, testStress);
521b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        TESTCASE(6, testTicket11583_2);
53c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        default: name = ""; break;
54c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
55c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
56c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
57c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/**
58c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Test various generic API methods of DateIntervalFormat for API coverage.
59c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */
60c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::testAPI() {
61c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
62c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /* ====== Test create interval instance with default locale and skeleton
63c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru     */
64c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
65c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat create instance with default locale and skeleton");
66c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
67c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, status);
68c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if(U_FAILURE(status)) {
69c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + default locale) - exitting");
70c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
71c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    } else {
72c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvfmt;
73c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
74c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
75c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
76c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /* ====== Test create interval instance with given locale and skeleton
77c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru     */
78c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
79c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat create instance with given locale and skeleton");
80c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
81c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, Locale::getJapanese(), status);
82c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if(U_FAILURE(status)) {
83c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + locale) - exitting");
84c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
85c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    } else {
86c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvfmt;
87c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
88c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
89c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
90c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /* ====== Test create interval instance with dateIntervalInfo and skeleton
91c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru     */
92c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
93c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat create instance with dateIntervalInfo  and skeleton");
94c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
95c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalInfo* dtitvinf = new DateIntervalInfo(Locale::getSimplifiedChinese(), status);
96c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
97c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt = DateIntervalFormat::createInstance("EEEdMMMyhms", *dtitvinf, status);
98c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete dtitvinf;
99c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
100c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if(U_FAILURE(status)) {
101c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + DateIntervalInfo + default locale) - exitting");
102c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
103c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    } else {
104c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvfmt;
105c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
106c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
107c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
108c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /* ====== Test create interval instance with dateIntervalInfo and skeleton
109c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru     */
110c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
111c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat create instance with dateIntervalInfo  and skeleton");
112c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
113c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvinf = new DateIntervalInfo(Locale::getSimplifiedChinese(), status);
114c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
115c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt = DateIntervalFormat::createInstance("EEEdMMMyhms", Locale::getSimplifiedChinese(), *dtitvinf, status);
116c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete dtitvinf;
117c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if(U_FAILURE(status)) {
118c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + DateIntervalInfo + locale) - exitting");
119c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
120c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
121c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // not deleted, test clone
122c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
123c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
124c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // ====== Test clone()
125c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
126c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat clone");
127c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
128c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalFormat* another = (DateIntervalFormat*)dtitvfmt->clone();
129c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*another) != (*dtitvfmt) ) {
130c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: clone failed");
131c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
132c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
13327f654740f2a26ad62a5c155af9199af9e69b889claireho
134c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // ====== Test getDateIntervalInfo, setDateIntervalInfo, adoptDateIntervalInfo
135c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
136c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat getDateIntervalInfo");
137c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const DateIntervalInfo* inf = another->getDateIntervalInfo();
138c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->setDateIntervalInfo(*inf, status);
139c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const DateIntervalInfo* anotherInf = dtitvfmt->getDateIntervalInfo();
140c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*inf) != (*anotherInf) || U_FAILURE(status) ) {
141c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: getDateIntervalInfo/setDateIntervalInfo failed");
142c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
143c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    {
1458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        // We make sure that setDateIntervalInfo does not corrupt the cache. See ticket 9919.
1468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        status = U_ZERO_ERROR;
1478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        logln("Testing DateIntervalFormat setDateIntervalInfo");
1488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        const Locale &enLocale = Locale::getEnglish();
1498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yMd", enLocale, status));
1508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        UnicodeString expected;
1558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        LocalPointer<Calendar> fromTime(Calendar::createInstance(enLocale, status));
1568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        LocalPointer<Calendar> toTime(Calendar::createInstance(enLocale, status));
1578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        FieldPosition pos = 0;
1628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        fromTime->set(2013, 3, 26);
1638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        toTime->set(2013, 3, 28);
1648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        dif->format(*fromTime, *toTime, expected, pos, status);
1658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1691b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        LocalPointer<DateIntervalInfo> dii(new DateIntervalInfo(Locale::getEnglish(), status), status);
1708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        dii->setIntervalPattern(ctou("yMd"), UCAL_DATE, ctou("M/d/y \\u2013 d"), status);
1758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        dif->setDateIntervalInfo(*dii, status);
1768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        dif.adoptInstead(DateIntervalFormat::createInstance("yMd", enLocale, status));
1818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        UnicodeString actual;
1868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        pos = 0;
1878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        dif->format(*fromTime, *toTime, actual, pos, status);
1888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (U_FAILURE(status)) {
1898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("Failure encountered: %s", u_errorName(status));
1908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            return;
1918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        if (expected != actual) {
1938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            errln("DateIntervalFormat.setIntervalInfo should have no side effects.");
1948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
1968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
197c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /*
198c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
199c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalInfo* nonConstInf = inf->clone();
200c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->adoptDateIntervalInfo(nonConstInf, status);
201c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    anotherInf = dtitvfmt->getDateIntervalInfo();
202c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*inf) != (*anotherInf) || U_FAILURE(status) ) {
203c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: adoptDateIntervalInfo failed");
204c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
205c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    */
206c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
207c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // ====== Test getDateFormat, setDateFormat, adoptDateFormat
208c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
209c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
210c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat getDateFormat");
211c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /*
212b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    const DateFormat* fmt = another->getDateFormat();
213c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->setDateFormat(*fmt, status);
214c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const DateFormat* anotherFmt = dtitvfmt->getDateFormat();
215c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*fmt) != (*anotherFmt) || U_FAILURE(status) ) {
216c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: getDateFormat/setDateFormat failed");
217c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
218c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
219c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
220c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateFormat* nonConstFmt = (DateFormat*)fmt->clone();
221c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->adoptDateFormat(nonConstFmt, status);
222c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    anotherFmt = dtitvfmt->getDateFormat();
223c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*fmt) != (*anotherFmt) || U_FAILURE(status) ) {
224c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: adoptDateFormat failed");
225c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
226b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    delete fmt;
227c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    */
228c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
229c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
230c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // ======= Test getStaticClassID()
231c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
232c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing getStaticClassID()");
233c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
234c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
235c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if(dtitvfmt->getDynamicClassID() != DateIntervalFormat::getStaticClassID()) {
236c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        errln("ERROR: getDynamicClassID() didn't return the expected value");
237c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
238c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
239c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete another;
240c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
241c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // ====== test constructor/copy constructor and assignment
242c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    /* they are protected, no test
243c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    logln("Testing DateIntervalFormat constructor and assigment operator");
244c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
245c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
246c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateFormat* constFmt = (constFmt*)dtitvfmt->getDateFormat()->clone();
247c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    inf = dtitvfmt->getDateIntervalInfo()->clone();
248c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
249c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
250c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalFormat* dtifmt = new DateIntervalFormat(fmt, inf, status);
251c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if(U_FAILURE(status)) {
252c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitting");
253c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
254c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
255c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
256c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalFormat* dtifmt2 = new(dtifmt);
257c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*dtifmt) != (*dtifmt2) ) {
258c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitting");
259c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
260c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
261c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
262c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateIntervalFormat dtifmt3 = (*dtifmt);
263c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( (*dtifmt) != dtifmt3 ) {
264c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitting");
265c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
266c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
267c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
268c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete dtifmt2;
269c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete dtifmt3;
270c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete dtifmt;
271c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    */
272c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
273c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
274c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    //===== test format and parse ==================
275c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    Formattable formattable;
276c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    formattable.setInt64(10);
277c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UnicodeString res;
278c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    FieldPosition pos = 0;
279c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
280c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->format(formattable, res, pos, status);
281c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( status != U_ILLEGAL_ARGUMENT_ERROR ) {
282c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: format non-date-interval object should set U_ILLEGAL_ARGUMENT_ERROR - exitting");
283c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
284c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
285c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
286c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    DateInterval* dtitv = new DateInterval(3600*24*365, 3600*24*366);
287c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    formattable.adoptObject(dtitv);
288c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    res.remove();
289c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    pos = 0;
290c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
291c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->format(formattable, res, pos, status);
292c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( U_FAILURE(status) ) {
293c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: format date interval failed - exitting");
294c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
295c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
296c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
297c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const DateFormat* dfmt = dtitvfmt->getDateFormat();
298c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    Calendar* fromCal = dfmt->getCalendar()->clone();
299c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    Calendar* toCal = dfmt->getCalendar()->clone();
300c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    res.remove();
301c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    pos = 0;
302c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
303c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    dtitvfmt->format(*fromCal, *toCal, res, pos, status);
304c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( U_FAILURE(status) ) {
305c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: format date interval failed - exitting");
306c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
307c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
308c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete fromCal;
309c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete toCal;
310c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
311c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
312c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    Formattable fmttable;
313c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    status = U_ZERO_ERROR;
314b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    // TODO: why do I need cast?
315c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    ((Format*)dtitvfmt)->parseObject(res, fmttable, status);
316c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if ( status != U_INVALID_FORMAT_ERROR ) {
317c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dataerrln("ERROR: parse should set U_INVALID_FORMAT_ERROR - exitting");
318c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        return;
319c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
320c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
321c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete dtitvfmt;
322c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
323b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    //====== test setting time zone
324b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    logln("Testing DateIntervalFormat set & format with different time zones, get time zone");
325b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    status = U_ZERO_ERROR;
326b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    dtitvfmt = DateIntervalFormat::createInstance("MMMdHHmm", Locale::getEnglish(), status);
327b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    if ( U_SUCCESS(status) ) {
328b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        UDate date1 = 1299090600000.0; // 2011-Mar-02 1030 in US/Pacific, 2011-Mar-03 0330 in Asia/Tokyo
329b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        UDate date2 = 1299115800000.0; // 2011-Mar-02 1730 in US/Pacific, 2011-Mar-03 1030 in Asia/Tokyo
330b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
331b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        DateInterval * dtitv12 = new DateInterval(date1, date2);
332b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        TimeZone * tzCalif = TimeZone::createTimeZone("US/Pacific");
333b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        TimeZone * tzTokyo = TimeZone::createTimeZone("Asia/Tokyo");
33459d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString fmtCalif = UnicodeString(ctou("Mar 2, 10:30 \\u2013 17:30"));
33559d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString fmtTokyo = UnicodeString(ctou("Mar 3, 03:30 \\u2013 10:30"));
336b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
337b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        dtitvfmt->adoptTimeZone(tzCalif);
338b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        res.remove();
339b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        pos = 0;
340b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        status = U_ZERO_ERROR;
341b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        dtitvfmt->format(dtitv12, res, pos, status);
342b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        if ( U_SUCCESS(status) ) {
343b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            if ( res.compare(fmtCalif) != 0 ) {
344b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho                errln("ERROR: DateIntervalFormat::format for tzCalif, expect " + fmtCalif + ", get " + res);
345b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            }
346b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        } else {
347b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            errln("ERROR: DateIntervalFormat::format for tzCalif, status %s", u_errorName(status));
348b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        }
349b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
350b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        dtitvfmt->setTimeZone(*tzTokyo);
351b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        res.remove();
352b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        pos = 0;
353b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        status = U_ZERO_ERROR;
354b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        dtitvfmt->format(dtitv12, res, pos, status);
355b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        if ( U_SUCCESS(status) ) {
356b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            if ( res.compare(fmtTokyo) != 0 ) {
357b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho                errln("ERROR: DateIntervalFormat::format for fmtTokyo, expect " + fmtTokyo + ", get " + res);
358b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            }
359b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        } else {
360b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            errln("ERROR: DateIntervalFormat::format for tzTokyo, status %s", u_errorName(status));
361b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        }
362b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
363b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        if ( dtitvfmt->getTimeZone() != *tzTokyo ) {
364b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho            errln("ERROR: DateIntervalFormat::getTimeZone returns mismatch.");
365b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        }
366b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
367b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        delete tzTokyo; // tzCalif was owned by dtitvfmt which should have deleted it
368b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        delete dtitv12;
369b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        delete dtitvfmt;
370b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    } else {
371b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        errln("ERROR: DateIntervalFormat::createInstance(\"MdHH\", Locale::getEnglish(), ...), status %s", u_errorName(status));
372b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    }
373c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    //====== test format  in testFormat()
374c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
37550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    //====== test DateInterval class (better coverage)
37650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    DateInterval dtitv1(3600*24*365, 3600*24*366);
37750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    DateInterval dtitv2(dtitv1);
37850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
37950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (!(dtitv1 == dtitv2)) {
38050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        errln("ERROR: Copy constructor failed for DateInterval.");
38150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    }
38250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
38350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    DateInterval dtitv3(3600*365, 3600*366);
38450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    dtitv3 = dtitv1;
38550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (!(dtitv3 == dtitv1)) {
38650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        errln("ERROR: Equal operator failed for DateInterval.");
38750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    }
38850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
38950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    DateInterval *dtitv4 = dtitv1.clone();
39050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (*dtitv4 != dtitv1) {
39150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        errln("ERROR: Equal operator failed for DateInterval.");
39250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    }
39350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    delete dtitv4;
394c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
395c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
396c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
397c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/**
398c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Test format
399c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */
400c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::testFormat() {
401c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // first item is date pattern
402c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // followed by a group of locale/from_data/to_data/skeleton/interval_data
403c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const char* DATA[] = {
404c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "yyyy MM dd HH:mm:ss",
405b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        // test root
4068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "root", "2007 11 10 10:10:10", "2007 12 10 10:10:10", "yM", "2007-11 \\u2013 2007-12",
407b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
408b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        // test 'H' and 'h', using availableFormat in fallback
409b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "Hms", "10:10:10 \\u2013 15:10:10",
410b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "hms", "10:10:10 AM \\u2013 3:10:10 PM",
411b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
412c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMM", "October 2007 \\u2013 October 2008",
413c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Oct 2007 \\u2013 Oct 2008",
414c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        // test skeleton with both date and time
41554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMyhm", "Nov 10, 2007, 10:10 AM \\u2013 Nov 20, 2007, 10:10 AM",
416c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
41759d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "dMMMyhm", "Nov 10, 2007, 10:10 \\u2013 11:10 AM",
418c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
419c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "hms", "10:10:10 AM \\u2013 11:10:10 AM",
42050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "Hms", "10:10:10 \\u2013 11:10:10",
42150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 11 10 20:10:10", "2007 11 10 21:10:10", "Hms", "20:10:10 \\u2013 21:10:10",
422c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
423c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008",
424c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
425c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMy", "October 10, 2007 \\u2013 October 10, 2008",
426c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
427c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMM", "October 10, 2007 \\u2013 October 10, 2008",
428c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
429c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMMy", "October 2007 \\u2013 October 2008",
430c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
431c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008",
432c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
433c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMMy", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008",
434c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
435c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "Oct 10, 2007 \\u2013 Oct 10, 2008",
436c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
437c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "Oct 10, 2007 \\u2013 Oct 10, 2008",
438c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
439c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Oct 2007 \\u2013 Oct 2008",
440c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
441c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMM", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008",
442c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Wed, 10/10/2007 \\u2013 Fri, 10/10/2008",
444c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10/10/2007 \\u2013 10/10/2008",
446c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10/10/2007 \\u2013 10/10/2008",
448c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10/2007 \\u2013 10/2008",
450c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Wed, 10/10/2007 \\u2013 Fri, 10/10/2008",
452c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10/10/2007 \\u2013 10/10/2008",
454c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
455c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Ed", "10 Wed \\u2013 10 Fri",
456c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
45759d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007 \\u2013 2008",
458c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10/2007 \\u2013 10/2008",
460c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
461c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
462c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
46354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10/10/2007, 10:10 AM \\u2013 10/10/2008, 10:10 AM",
46454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Hm", "10/10/2007, 10:10 \\u2013 10/10/2008, 10:10",
46554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 20:10:10", "2008 10 10 20:10:10", "Hm", "10/10/2007, 20:10 \\u2013 10/10/2008, 20:10",
466c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
46754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmv", "10/10/2007, 10:10 AM PT \\u2013 10/10/2008, 10:10 AM PT",
468c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
46954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmz", "10/10/2007, 10:10 AM PDT \\u2013 10/10/2008, 10:10 AM PDT",
470c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
47154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "h", "10/10/2007, 10 AM \\u2013 10/10/2008, 10 AM",
472c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
47354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hv", "10/10/2007, 10 AM PT \\u2013 10/10/2008, 10 AM PT",
474c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
47554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hz", "10/10/2007, 10 AM PDT \\u2013 10/10/2008, 10 AM PDT",
476c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/2007 \\u2013 Fri, 10/10/2008",
478c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EddMMy", "Wed, 10/10/2007 \\u2013 Fri, 10/10/2008",
480c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
48154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmm", "10/10/2007, 10:10 AM \\u2013 10/10/2008, 10:10 AM",
482c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
48354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmmzz", "10/10/2007, 10:10 AM PDT \\u2013 10/10/2008, 10:10 AM PDT",
484c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
48554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hms", "10/10/2007, 10:10:10 AM \\u2013 10/10/2008, 10:10:10 AM",
486c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
487c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMMy", "O 10, 2007 \\u2013 O 10, 2008",
488c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
4898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEEdM", "W, 10/10/2007 \\u2013 F, 10/10/2008",
490c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
491c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10 \\u2013 Saturday, November 10, 2007",
492c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
493c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "October 10 \\u2013 November 10, 2007",
494c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
495c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "October 10 \\u2013 November 10",
496c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
49759d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "October \\u2013 November 2007",
498c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
499c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10 \\u2013 Saturday, November 10",
500c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
501c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMMy", "Wed, Oct 10 \\u2013 Sat, Nov 10, 2007",
502c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
503c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "Oct 10 \\u2013 Nov 10, 2007",
504c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
505c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "Oct 10 \\u2013 Nov 10",
506c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
50759d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Oct \\u2013 Nov 2007",
508c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
509c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMM", "Wed, Oct 10 \\u2013 Sat, Nov 10",
510c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Wed, 10/10/2007 \\u2013 Sat, 11/10/2007",
512c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMy", "10/10/2007 \\u2013 11/10/2007",
514c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
515c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10/2007 \\u2013 11/2007",
517c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
518c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Wed, 10/10 \\u2013 Sat, 11/10",
519c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
520c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10/10 \\u2013 11/10",
521c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
522c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Ed", "10 Wed \\u2013 10 Sat",
523c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
524c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007",
525c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
52659d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10 \\u2013 11",
527c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
52859d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Oct \\u2013 Nov",
529c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
53059d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMM", "October \\u2013 November",
531c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
53254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hm", "10/10/2007, 10:10 AM \\u2013 11/10/2007, 10:10 AM",
53354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hm", "10/10/2007, 10:10 \\u2013 11/10/2007, 10:10",
53454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 20:10:10", "2007 11 10 20:10:10", "Hm", "10/10/2007, 20:10 \\u2013 11/10/2007, 20:10",
535c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
53654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10/10/2007, 10:10 AM PT \\u2013 11/10/2007, 10:10 AM PT",
537c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
53854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmz", "10/10/2007, 10:10 AM PDT \\u2013 11/10/2007, 10:10 AM PST",
539c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
54054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "h", "10/10/2007, 10 AM \\u2013 11/10/2007, 10 AM",
541c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
54254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hv", "10/10/2007, 10 AM PT \\u2013 11/10/2007, 10 AM PT",
543c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
54454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hz", "10/10/2007, 10 AM PDT \\u2013 11/10/2007, 10 AM PST",
545c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/2007 \\u2013 Sat, 11/10/2007",
547c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EddMMy", "Wed, 10/10/2007 \\u2013 Sat, 11/10/2007",
549c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
550c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
55154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmmzz", "10/10/2007, 10:10 AM PDT \\u2013 11/10/2007, 10:10 AM PST",
552c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
55354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10/10/2007, 10:10:10 AM \\u2013 11/10/2007, 10:10:10 AM",
554c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
555c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMMy", "O 10 \\u2013 N 10, 2007",
556c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
557c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEEdM", "W, 10/10 \\u2013 S, 11/10",
558c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
559c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "Saturday, November 10 \\u2013 Tuesday, November 20, 2007",
560c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
56159d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "November 10 \\u2013 20, 2007",
562c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
56359d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "November 10 \\u2013 20",
564c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
565c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
566c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "Saturday, November 10 \\u2013 Tuesday, November 20",
567c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
568c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMMy", "Sat, Nov 10 \\u2013 Tue, Nov 20, 2007",
569c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
57059d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "Nov 10 \\u2013 20, 2007",
571c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
57259d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "Nov 10 \\u2013 20",
573c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
574c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007",
575c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
576c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "Sat, Nov 10 \\u2013 Tue, Nov 20",
577c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sat, 11/10/2007 \\u2013 Tue, 11/20/2007",
579c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
5808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "11/10/2007 \\u2013 11/20/2007",
581c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
582c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10 \\u2013 11/20",
583c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
584c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11/2007",
585c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
586c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sat, 11/10 \\u2013 Tue, 11/20",
587c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
58859d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10 \\u2013 20",
589c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
590c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Ed", "10 Sat \\u2013 20 Tue",
591c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
592c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007",
593c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
594c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11",
595c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
596c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "Nov",
597c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
598c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMM", "November",
599c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
60054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hm", "11/10/2007, 10:10 AM \\u2013 11/20/2007, 10:10 AM",
60154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hm", "11/10/2007, 10:10 \\u2013 11/20/2007, 10:10",
60254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 20:10:10", "2007 11 20 20:10:10", "Hm", "11/10/2007, 20:10 \\u2013 11/20/2007, 20:10",
603c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
60454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "11/10/2007, 10:10 AM PT \\u2013 11/20/2007, 10:10 AM PT",
605c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
60654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "11/10/2007, 10:10 AM PST \\u2013 11/20/2007, 10:10 AM PST",
607c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
60854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "11/10/2007, 10 AM \\u2013 11/20/2007, 10 AM",
609c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
61054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hv", "11/10/2007, 10 AM PT \\u2013 11/20/2007, 10 AM PT",
611c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
61254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hz", "11/10/2007, 10 AM PST \\u2013 11/20/2007, 10 AM PST",
613c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
6148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEddMMyyyy", "Sat, 11/10/2007 \\u2013 Tue, 11/20/2007",
615c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
6168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EddMMy", "Sat, 11/10/2007 \\u2013 Tue, 11/20/2007",
617c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
61854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmm", "11/10/2007, 10:10 AM \\u2013 11/20/2007, 10:10 AM",
619c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
62054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmmzz", "11/10/2007, 10:10 AM PST \\u2013 11/20/2007, 10:10 AM PST",
621c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
62254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hms", "11/10/2007, 10:10:10 AM \\u2013 11/20/2007, 10:10:10 AM",
62354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hms", "11/10/2007, 10:10:10 \\u2013 11/20/2007, 10:10:10",
62454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "en", "2007 11 10 20:10:10", "2007 11 20 20:10:10", "Hms", "11/10/2007, 20:10:10 \\u2013 11/20/2007, 20:10:10",
625c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
62659d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMMy", "N 10 \\u2013 20, 2007",
627c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
628c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEEdM", "S, 11/10 \\u2013 T, 11/20",
629c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
630c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "Wednesday, January 10, 2007",
631c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
632c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMy", "January 10, 2007",
633c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
634c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMM", "January 10",
635c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
636c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMMy", "January 2007",
637c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
638c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMM", "Wednesday, January 10",
639c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
640c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMMy", "Wed, Jan 10, 2007",
641c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
642c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "Jan 10, 2007",
643c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
644c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "Jan 10",
645c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
646c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007",
647c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
648c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMM", "Wed, Jan 10",
649c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
650c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
651c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMy", "1/10/2007",
652c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
653c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dM", "1/10",
654c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
655c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "My", "1/2007",
656c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
657c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdM", "Wed, 1/10",
658c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
659c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "d", "10",
660c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
661c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Ed", "10 Wed",
662c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
663c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "y", "2007",
664c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
665c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "M", "1",
666c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
667c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMM", "Jan",
668c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
669c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMM", "January",
670c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
671c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "10:00 AM \\u2013 2:10 PM",
67259d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hm", "10:00 \\u2013 14:10",
673c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
674c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmv", "10:00 AM \\u2013 2:10 PM PT",
675c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
676c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00 AM \\u2013 2:10 PM PST",
677c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
678c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 AM \\u2013 2 PM",
67959d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10 \\u2013 14",
680c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
681c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
682c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "10 AM \\u2013 2 PM PST",
683c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
684c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEddMMyyyy", "Wed, 01/10/2007",
685c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
686c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EddMMy", "Wed, 01/10/2007",
687c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
688c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmm", "10:00 AM \\u2013 2:10 PM",
68959d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "HHmm", "10:00 \\u2013 14:10",
690c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
691c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmmzz", "10:00 AM \\u2013 2:10 PM PST",
692c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
693b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hms", "10:00:10 AM \\u2013 2:10:10 PM",
69450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hms", "10:00:10 \\u2013 14:10:10",
695c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
696b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMMy", "J 10, 2007",
697c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
698c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEEdM", "W, 1/10",
699c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMy", "January 10, 2007",
700c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
701c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMM", "January 10",
702c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
703c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMMMy", "January 2007",
704c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
705c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMMM", "Wednesday, January 10",
706c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
707c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMMy", "Wed, Jan 10, 2007",
708c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
709c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMy", "Jan 10, 2007",
710c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
711c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMM", "Jan 10",
712c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
713c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
714c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMM", "Wed, Jan 10",
715c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
716c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2007",
717c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
718c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMy", "1/10/2007",
719c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
720c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
721c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "My", "1/2007",
722c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
723c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdM", "Wed, 1/10",
724c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
725c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "d", "10",
726c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
727c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
728c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "y", "2007",
729c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
730c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "M", "1",
731c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
732c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
733c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
73459d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00 \\u2013 10:20 AM",
73559d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Hm", "10:00 \\u2013 10:20",
736c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
737c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
73859d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00 \\u2013 10:20 AM PST",
739c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
740c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
74150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hv", "10 AM PT",
742c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
743c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
744c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
745c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EddMMy", "Wed, 01/10/2007",
746c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
74759d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmm", "10:00 \\u2013 10:20 AM",
74859d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "HHmm", "10:00 \\u2013 10:20",
749c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
75059d709d503bab6e2b61931737e662dd293b40578ccornelius        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmmzz", "10:00 \\u2013 10:20 AM PST",
751c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
752c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
753b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMMy", "J 10, 2007",
754c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
755c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
756c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMMy", "Wednesday, January 10, 2007",
757c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
758c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMy", "January 10, 2007",
759c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
760c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
761c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMMy", "January 2007",
762c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
763c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMM", "Wednesday, January 10",
764c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
765c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
766c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMy", "Jan 10, 2007",
767c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
768c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMM", "Jan 10",
769c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
770c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
771c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMM", "Wed, Jan 10",
772c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
773c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMy", "Wed, 1/10/2007",
774c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
775c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMy", "1/10/2007",
776c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
777c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
778c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "My", "1/2007",
779c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
780c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdM", "Wed, 1/10",
781c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
782c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "d", "10",
783c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
784c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
785c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "y", "2007",
786c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
787c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "M", "1",
788c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
789c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
790c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMM", "January",
791c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
792c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10 AM",
79350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Hm", "10:10",
794c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
795c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
796c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM PST",
797c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
79850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10 AM",
799c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
80050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 AM PT",
801c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
802c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
803c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEddMMyyyy", "Wed, 01/10/2007",
804c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
805c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
806c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmm", "10:10 AM",
80750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "HHmm", "10:10",
808c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
809c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmmzz", "10:10 AM PST",
810c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
811c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
812b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMMy", "J 10, 2007",
813c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
814c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEEdM", "W, 1/10",
815c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
816c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94",
817c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
818c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
819c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5",
820c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
821c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
822c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708",
823c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
824c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8251b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "2007/10/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10 \\u2013 2007/11/10 \\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:10",
826c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
827c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
828c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
829c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
830c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "11\\u670810\\u65e5\\u81f320\\u65e5",
831c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
832b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "2007\\u5E7411\\u6708", // (fixed expected result per ticket:6626:)
833c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
834c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "11\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c",
835c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
836c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "2007/11/10\\u5468\\u516d\\u81f32007/11/20\\u5468\\u4e8c",
838c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
839c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
84054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10 \\u2013 11/20",
841c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
842f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007\\u5E7411\\u6708",
843c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
84454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "11/10\\u5468\\u516d\\u81f311/20\\u5468\\u4e8c",
845c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
846c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
847b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007\\u5E74", // (fixed expected result per ticket:6626:)
848c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
84927f654740f2a26ad62a5c155af9199af9e69b889claireho        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11\\u6708",
850c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
85154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "11\\u6708", // (fixed expected result per ticket:6626: and others)
852c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
8541b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "2007/11/10 GMT-8 \\u4e0a\\u534810:10 \\u2013 2007/11/20 GMT-8 \\u4e0a\\u534810:10",
855c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
85654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "2007/11/10 \\u4e0a\\u534810\\u65f6 \\u2013 2007/11/20 \\u4e0a\\u534810\\u65f6",
857c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
858b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5\\u661f\\u671f\\u4e09", // (fixed expected result per ticket:6626:)
859c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
860c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
861c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
862c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
863682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
864c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
86554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
866c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
867682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
868c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
869c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
870c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
871682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
872c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
873682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "GMT-8\\u4e0a\\u534810\\u65f6",
874c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
875c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "\\u4e0a\\u534810:10",
876c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
87727f654740f2a26ad62a5c155af9199af9e69b889claireho        "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "\\u4e0a\\u534810\\u65f6",
878c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8791b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt. 2007 \\u2013 Freitag, 10. Okt. 2008",
880c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
881c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8821b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "10. Okt. 2007 \\u2013 10. Okt. 2008",
883c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8841b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Okt. 2007 \\u2013 Okt. 2008",
885c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
886c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8871b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Mi., 10.10.2007 \\u2013 Fr., 10.10.2008",
888c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8891b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10.10.2007 \\u2013 10.10.2008",
890c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
891c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8921b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10.2007 \\u2013 10.2008",
893c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8941b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Mi., 10.10.2007 \\u2013 Fr., 10.10.2008",
895c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
896c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8971b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u20132008",
898c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
8991b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10.2007 \\u2013 10.2008",
900c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
901c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9021b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10.10.2007, 10:10 vorm. \\u2013 10.10.2008, 10:10 vorm.",
9031b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Hm", "10.10.2007, 10:10 \\u2013 10.10.2008, 10:10",
904c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9051b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt. \\u2013 Samstag, 10. Nov. 2007",
906c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
907c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9081b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "10. Okt. \\u2013 10. Nov.",
909c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9101b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Okt.\\u2013Nov. 2007",
911c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9121b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt. \\u2013 Samstag, 10. Nov.",
913c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
914c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9151b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10.10. \\u2013 10.11.",
916c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9171b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10.2007 \\u2013 11.2007",
918c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
919c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9201b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10.10. \\u2013 10.11.",
921c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
922c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007",
923c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
924c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9251b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Okt.\\u2013Nov.",
926c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
927c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9281b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10.10.2007, 10:10:10 vorm. \\u2013 10.11.2007, 10:10:10 vorm.",
9291b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hms", "10.10.2007, 10:10:10 \\u2013 10.11.2007, 10:10:10",
930c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9311b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10. \\u2013 Dienstag, 20. Nov. 2007",
932c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9331b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "10.\\u201320. Nov. 2007",
934c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
935c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
93654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov. 2007",
937c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9381b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10. \\u2013 Dienstag, 20. Nov.",
939c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9401b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sa., 10.11.2007 \\u2013 Di., 20.11.2007",
941c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
942c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9431b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "10.11. \\u2013 20.11.",
944c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
94550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11.2007",
946c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
947c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9481b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10.\\u201320.",
949c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
950c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007",
951c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
952c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9531b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "10.11.2007, 10:10 vorm. Los Angeles Zeit \\u2013 20.11.2007, 10:10 vorm. Los Angeles Zeit",
954c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
95554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMy", "Mittwoch, 10. Jan. 2007",
956c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
957c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
95854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "10. Jan.",
959c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
96054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan. 2007",
961c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
96254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMM", "Mittwoch, 10. Jan.",
963c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
964c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9651b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 vorm. \\u2013 2 nachm.",
9661b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10\\u201314 Uhr",
967c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
96854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMM", "Mittwoch, 10. Jan.",
969c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
970c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9711b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00\\u201310:20 vorm. Los Angeles Zeit",
972c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9731b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00\\u201310:20 vorm. GMT-8",
974c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
97550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10 vorm.",
97627f654740f2a26ad62a5c155af9199af9e69b889claireho        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "H", "10 Uhr",
977c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
978c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
979682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "10 vorm. GMT-8",
980c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
98154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMy", "Mittwoch, 10. Jan. 2007",
982c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
983c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
984682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 vorm. Los Angeles Zeit",
985c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
986682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 vorm. GMT-8",
987c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
9888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
989682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 vorm. Los Angeles Zeit",
99050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
991682a8ebb21f708096cbeb6cdb69d449cfff85ad1Neil Fuller        "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "10 vorm. GMT-8",
99250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
99350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        // Thai (default calendar buddhist)
99450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
9951c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // BEGIN ANDROID-changed.  Default calendar in Android is Gregorian for th locale.
9961c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. 2550 \\u2013 \\u0E27\\u0E31\\u0E19\\u0E28\\u0E38\\u0E01\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. 2551",
99750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
99850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
9991c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. 2550 \\u2013 10 \\u0E15.\\u0E04. 2551",
100050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10011c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "MMMy", "\\u0E15.\\u0E04. 2550 \\u2013 \\u0E15.\\u0E04. 2551",
100250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
100350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10041c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdMy", "\\u0E1E. 10/10/2550 \\u2013 \\u0E28. 10/10/2551",
100550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10061c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMy", "10/10/2550 \\u2013 10/10/2551",
1007c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
100850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10091c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "My", "10/2550 \\u2013 10/2551",
101050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10111c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdM", "\\u0E1E. 10/10/2550 \\u2013 \\u0E28. 10/10/2551",
101250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
101350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10141c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "y", "2550\\u20132551",
101550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10161c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "M", "10/2550 \\u2013 10/2551",
101750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
101850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10191c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18\\u0E17\\u0E35\\u0E48 10 \\u0E15.\\u0E04. \\u2013 \\u0E27\\u0E31\\u0E19\\u0E40\\u0E2A\\u0E32\\u0E23\\u0E4C\\u0E17\\u0E35\\u0E48 10 \\u0E1E.\\u0E22. 2550",
102050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
102150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10221b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. \\u2013 10 \\u0E1E.\\u0E22.",
102350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10241c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMMy", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22. 2550",
102550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10261b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert       "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "dM", "10/10 \\u2013 10/11",
102750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10281c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "My", "10/2550 \\u2013 11/2550",
102950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
103050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10311b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "d", "10/10 \\u2013 10/11",
103250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10331c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "y", "\\u0E1E.\\u0E28. 2550",
103450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
10351b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
10361b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMM", "\\u0E15.\\u0E04.\\u2013\\u0E1E.\\u0E22.",
10371b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
10381c16f7233e0ce0965f835ec0c509d30699d7161aFredrik Roubert        // END ANDROID-changed
1039c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
1040c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    expect(DATA, ARRAY_SIZE(DATA));
1041c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
1042c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1043c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1044c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::expect(const char** data, int32_t data_length) {
1045c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    int32_t i = 0;
1046c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UErrorCode ec = U_ZERO_ERROR;
1047c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UnicodeString str, str2;
1048c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const char* pattern = data[0];
1049c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    i++;
1050c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1051c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1052c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    char result[1000];
1053c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    char mesg[1000];
1054c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    sprintf(mesg, "locale: %s\n", locName);
1055c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    PRINTMESG(mesg);
1056c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1057c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1058c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    while (i<data_length) {
1059c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* locName = data[i++];
1060c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        Locale loc(locName);
1061c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        SimpleDateFormat ref(pattern, loc, ec);
106250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        if (U_FAILURE(ec)) {
106350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho            dataerrln("contruct SimpleDateFormat in expect failed: %s", u_errorName(ec));
106450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho            return;
106550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        }
1066c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        // 'f'
1067c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* datestr = data[i++];
1068c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* datestr_2 = data[i++];
1069c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1070c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        sprintf(mesg, "original date: %s - %s\n", datestr, datestr_2);
1071c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        PRINTMESG(mesg)
1072c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1073c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        UDate date = ref.parse(ctou(datestr), ec);
1074c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("parse 1st data in expect", ec)) return;
1075c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        UDate date_2 = ref.parse(ctou(datestr_2), ec);
1076c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("parse 2nd data in expect", ec)) return;
1077c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateInterval dtitv(date, date_2);
1078c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1079c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const UnicodeString& oneSkeleton = data[i++];
1080c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1081c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(oneSkeleton, loc, ec);
1082c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("createInstance(skeleton) in expect", ec)) return;
1083c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        FieldPosition pos=0;
1084c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvfmt->format(&dtitv, str.remove(), pos, ec);
1085c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("format in expect", ec)) return;
1086c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        assertEquals((UnicodeString)"\"" + locName + "\\" + oneSkeleton + "\\" + datestr + "\\" + datestr_2 + "\"", ctou(data[i++]), str);
1087c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1088c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1089c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1090c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1091c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        str.extract(0,  str.length(), result, "UTF-8");
1092c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        sprintf(mesg, "interval date: %s\n", result);
1093c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        std::cout << "//";
1094c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        PRINTMESG(mesg)
1095c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        std::cout << "\"" << locName << "\", "
1096c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                 << "\"" << datestr << "\", "
1097c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                 << "\"" << datestr_2 << "\", ";
1098c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        printUnicodeString(oneSkeleton);
1099c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        printUnicodeString(str);
1100c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        std::cout << "\n\n";
1101c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1102c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvfmt;
1103c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
1104c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
1105c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1106c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1107c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/*
1108c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Test format using user defined DateIntervalInfo
1109c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */
1110c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::testFormatUserDII() {
1111c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // first item is date pattern
1112c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const char* DATA[] = {
1113c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "yyyy MM dd HH:mm:ss",
1114c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Oct 10, 2007 --- Oct 10, 2008",
1115c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1116c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Oct 10 - Nov 2007",
1117c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1118c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Nov 10, 2007 --- Nov 20, 2007",
1119c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1120c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Jan 10, 2007",
1121c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1122c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Jan 10, 2007",
1123c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1124c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Jan 10, 2007",
1125c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1126c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "2007\\u5e7410\\u670810\\u65e5 --- 2008\\u5e7410\\u670810\\u65e5",
1127c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1128c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 10\\u6708 10 - 11\\u6708 2007",
1129c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1130c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007\\u5e7411\\u670810\\u65e5 --- 2007\\u5e7411\\u670820\\u65e5",
1131c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\\u5e741\\u670810\\u65e5", // (fixed expected result per ticket:6626:)
1133c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1134b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\\u5e741\\u670810\\u65e5", // (fixed expected result per ticket:6626:)
1135c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1136b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru        "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\\u5e741\\u670810\\u65e5", // (fixed expected result per ticket:6626:)
1137c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
113854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10. Okt. 2007 --- 10. Okt. 2008",
1139c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1140c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
114154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10. Nov. 2007 --- 20. Nov. 2007",
1142c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
114354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10. Jan. 2007",
1144c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
114554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius        "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10. Jan. 2007",
1146c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1147c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
11481b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 oct. 2007 --- 10 oct. 2008",
1149c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
115059d709d503bab6e2b61931737e662dd293b40578ccornelius        "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct. 10 - nov. 2007",
1151c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
11521b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 nov. 2007 --- 20 nov. 2007",
1153c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
11541b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 ene. 2007",
1155c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
11561b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 ene. 2007",
1157b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
11581b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 ene. 2007",
1159c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
1160c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    expectUserDII(DATA, ARRAY_SIZE(DATA));
1161c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
1162c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1163c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
11648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid DateIntervalFormatTest::testSetIntervalPatternNoSideEffect() {
11658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UErrorCode ec = U_ZERO_ERROR;
11661b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    LocalPointer<DateIntervalInfo> dtitvinf(new DateIntervalInfo(ec), ec);
11678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (U_FAILURE(ec)) {
11688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        errln("Failure encountered: %s", u_errorName(ec));
11698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        return;
11708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
11718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UnicodeString expected;
11728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    dtitvinf->getIntervalPattern(ctou("yMd"), UCAL_DATE, expected, ec);
11738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    dtitvinf->setIntervalPattern(ctou("yMd"), UCAL_DATE, ctou("M/d/y \\u2013 d"), ec);
11748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (U_FAILURE(ec)) {
11758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        errln("Failure encountered: %s", u_errorName(ec));
11768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        return;
11778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
11781b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    dtitvinf.adoptInsteadAndCheckErrorCode(new DateIntervalInfo(ec), ec);
11798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (U_FAILURE(ec)) {
11808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        errln("Failure encountered: %s", u_errorName(ec));
11818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        return;
11828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
11838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UnicodeString actual;
11848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    dtitvinf->getIntervalPattern(ctou("yMd"), UCAL_DATE, actual, ec);
11858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (U_FAILURE(ec)) {
11868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        errln("Failure encountered: %s", u_errorName(ec));
11878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        return;
11888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
11898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (expected != actual) {
11908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        errln("DateIntervalInfo.setIntervalPattern should have no side effects.");
11918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
11928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
11938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
119459d709d503bab6e2b61931737e662dd293b40578ccorneliusvoid DateIntervalFormatTest::testYearFormats() {
119559d709d503bab6e2b61931737e662dd293b40578ccornelius    const Locale &enLocale = Locale::getEnglish();
119659d709d503bab6e2b61931737e662dd293b40578ccornelius    UErrorCode status = U_ZERO_ERROR;
119759d709d503bab6e2b61931737e662dd293b40578ccornelius    LocalPointer<Calendar> fromTime(Calendar::createInstance(enLocale, status));
119859d709d503bab6e2b61931737e662dd293b40578ccornelius    LocalPointer<Calendar> toTime(Calendar::createInstance(enLocale, status));
119959d709d503bab6e2b61931737e662dd293b40578ccornelius    if (U_FAILURE(status)) {
120059d709d503bab6e2b61931737e662dd293b40578ccornelius        errln("Failure encountered: %s", u_errorName(status));
120159d709d503bab6e2b61931737e662dd293b40578ccornelius        return;
120259d709d503bab6e2b61931737e662dd293b40578ccornelius    }
120359d709d503bab6e2b61931737e662dd293b40578ccornelius    // April 26, 113. Three digit year so that we can test 2 digit years;
120459d709d503bab6e2b61931737e662dd293b40578ccornelius    // 4 digit years with padded 0's and full years.
120559d709d503bab6e2b61931737e662dd293b40578ccornelius    fromTime->set(113, 3, 26);
120659d709d503bab6e2b61931737e662dd293b40578ccornelius    // April 28, 113.
120759d709d503bab6e2b61931737e662dd293b40578ccornelius    toTime->set(113, 3, 28);
120859d709d503bab6e2b61931737e662dd293b40578ccornelius    {
120959d709d503bab6e2b61931737e662dd293b40578ccornelius        LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yyyyMd", enLocale, status));
121059d709d503bab6e2b61931737e662dd293b40578ccornelius        if (U_FAILURE(status)) {
121159d709d503bab6e2b61931737e662dd293b40578ccornelius            dataerrln("Failure encountered: %s", u_errorName(status));
121259d709d503bab6e2b61931737e662dd293b40578ccornelius            return;
121359d709d503bab6e2b61931737e662dd293b40578ccornelius        }
121459d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString actual;
121559d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString expected(ctou("4/26/0113 \\u2013 4/28/0113"));
121659d709d503bab6e2b61931737e662dd293b40578ccornelius        FieldPosition pos = 0;
121759d709d503bab6e2b61931737e662dd293b40578ccornelius        dif->format(*fromTime, *toTime, actual, pos, status);
121859d709d503bab6e2b61931737e662dd293b40578ccornelius        if (U_FAILURE(status)) {
121959d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Failure encountered: %s", u_errorName(status));
122059d709d503bab6e2b61931737e662dd293b40578ccornelius            return;
122159d709d503bab6e2b61931737e662dd293b40578ccornelius        }
122259d709d503bab6e2b61931737e662dd293b40578ccornelius        if (actual != expected) {
122359d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Expected " + expected + ", got: " + actual);
122459d709d503bab6e2b61931737e662dd293b40578ccornelius        }
122559d709d503bab6e2b61931737e662dd293b40578ccornelius    }
122659d709d503bab6e2b61931737e662dd293b40578ccornelius    {
122759d709d503bab6e2b61931737e662dd293b40578ccornelius        LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yyMd", enLocale, status));
122859d709d503bab6e2b61931737e662dd293b40578ccornelius        if (U_FAILURE(status)) {
122959d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Failure encountered: %s", u_errorName(status));
123059d709d503bab6e2b61931737e662dd293b40578ccornelius            return;
123159d709d503bab6e2b61931737e662dd293b40578ccornelius        }
123259d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString actual;
123359d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString expected(ctou("4/26/13 \\u2013 4/28/13"));
123459d709d503bab6e2b61931737e662dd293b40578ccornelius        FieldPosition pos = 0;
123559d709d503bab6e2b61931737e662dd293b40578ccornelius        dif->format(*fromTime, *toTime, actual, pos, status);
123659d709d503bab6e2b61931737e662dd293b40578ccornelius        if (U_FAILURE(status)) {
123759d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Failure encountered: %s", u_errorName(status));
123859d709d503bab6e2b61931737e662dd293b40578ccornelius            return;
123959d709d503bab6e2b61931737e662dd293b40578ccornelius        }
124059d709d503bab6e2b61931737e662dd293b40578ccornelius        if (actual != expected) {
124159d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Expected " + expected + ", got: " + actual);
124259d709d503bab6e2b61931737e662dd293b40578ccornelius        }
124359d709d503bab6e2b61931737e662dd293b40578ccornelius    }
124459d709d503bab6e2b61931737e662dd293b40578ccornelius    {
124559d709d503bab6e2b61931737e662dd293b40578ccornelius        LocalPointer<DateIntervalFormat> dif(DateIntervalFormat::createInstance("yMd", enLocale, status));
124659d709d503bab6e2b61931737e662dd293b40578ccornelius        if (U_FAILURE(status)) {
124759d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Failure encountered: %s", u_errorName(status));
124859d709d503bab6e2b61931737e662dd293b40578ccornelius            return;
124959d709d503bab6e2b61931737e662dd293b40578ccornelius        }
125059d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString actual;
125159d709d503bab6e2b61931737e662dd293b40578ccornelius        UnicodeString expected(ctou("4/26/113 \\u2013 4/28/113"));
125259d709d503bab6e2b61931737e662dd293b40578ccornelius        FieldPosition pos = 0;
125359d709d503bab6e2b61931737e662dd293b40578ccornelius        dif->format(*fromTime, *toTime, actual, pos, status);
125459d709d503bab6e2b61931737e662dd293b40578ccornelius        if (U_FAILURE(status)) {
125559d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Failure encountered: %s", u_errorName(status));
125659d709d503bab6e2b61931737e662dd293b40578ccornelius            return;
125759d709d503bab6e2b61931737e662dd293b40578ccornelius        }
125859d709d503bab6e2b61931737e662dd293b40578ccornelius        if (actual != expected) {
125959d709d503bab6e2b61931737e662dd293b40578ccornelius            errln("Expected " + expected + ", got: " + actual);
126059d709d503bab6e2b61931737e662dd293b40578ccornelius        }
126159d709d503bab6e2b61931737e662dd293b40578ccornelius    }
126259d709d503bab6e2b61931737e662dd293b40578ccornelius}
12638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1264c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::expectUserDII(const char** data,
1265c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                                           int32_t data_length) {
1266c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    int32_t i = 0;
1267c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UnicodeString str;
1268c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UErrorCode ec = U_ZERO_ERROR;
1269c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const char* pattern = data[0];
1270c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    i++;
1271c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1272c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    while ( i < data_length ) {
1273c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* locName = data[i++];
1274c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        Locale loc(locName);
1275c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        SimpleDateFormat ref(pattern, loc, ec);
127650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        if (U_FAILURE(ec)) {
127750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho            dataerrln("contruct SimpleDateFormat in expectUserDII failed: %s", u_errorName(ec));
127850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho            return;
127950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho        }
1280c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* datestr = data[i++];
1281c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* datestr_2 = data[i++];
1282c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        UDate date = ref.parse(ctou(datestr), ec);
1283c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("parse in expectUserDII", ec)) return;
1284c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        UDate date_2 = ref.parse(ctou(datestr_2), ec);
1285c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("parse in expectUserDII", ec)) return;
1286c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateInterval dtitv(date, date_2);
1287c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1288c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        ec = U_ZERO_ERROR;
1289c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        // test user created DateIntervalInfo
1290c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateIntervalInfo* dtitvinf = new DateIntervalInfo(ec);
1291c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvinf->setFallbackIntervalPattern("{0} --- {1}", ec);
1292c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_MONTH, "yyyy MMM d - MMM y",ec);
1293c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return;
1294c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm - HH:mm", ec);
1295c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return;
1296c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_ABBR_MONTH_DAY, loc, *dtitvinf, ec);
1297c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvinf;
1298c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("createInstance(skeleton,dtitvinf) in expectUserDII", ec)) return;
1299c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        FieldPosition pos=0;
1300c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvfmt->format(&dtitv, str.remove(), pos, ec);
1301c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("format in expectUserDII", ec)) return;
1302c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        assertEquals((UnicodeString)"\"" + locName + "\\" + datestr + "\\" + datestr_2 + "\"", ctou(data[i++]), str);
1303c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1304c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        char result[1000];
1305c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        char mesg[1000];
1306c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        PRINTMESG("interval format using user defined DateIntervalInfo\n");
1307c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        str.extract(0,  str.length(), result, "UTF-8");
1308c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        sprintf(mesg, "interval date: %s\n", result);
1309c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        PRINTMESG(mesg);
1310c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1311c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvfmt;
1312c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
1313c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
1314c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1315c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1316c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::testStress() {
1317b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    if(quick){
1318b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    	logln("Quick mode: Skipping test");
1319b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    	return;
1320b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    }
1321b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru	const char* DATA[] = {
1322c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "yyyy MM dd HH:mm:ss",
1323c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "2007 10 10 10:10:10", "2008 10 10 10:10:10",
1324c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "2007 10 10 10:10:10", "2007 11 10 10:10:10",
1325c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "2007 11 10 10:10:10", "2007 11 20 10:10:10",
1326c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "2007 01 10 10:00:10", "2007 01 10 14:10:10",
1327c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "2007 01 10 10:00:10", "2007 01 10 10:20:10",
1328c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "2007 01 10 10:10:10", "2007 01 10 10:10:20",
1329c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
1330c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1331c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    const char* testLocale[][3] = {
1332c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        //{"th", "", ""},
1333c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"en", "", ""},
1334c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"zh", "", ""},
1335c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"de", "", ""},
1336c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"ar", "", ""},
1337c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"en", "GB",  ""},
1338c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"fr", "", ""},
1339c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"it", "", ""},
1340c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"nl", "", ""},
1341c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"zh", "TW",  ""},
1342c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"ja", "", ""},
1343c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"pt", "BR", ""},
1344c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"ru", "", ""},
1345c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"pl", "", ""},
1346c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"tr", "", ""},
1347c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"es", "", ""},
1348c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"ko", "", ""},
1349c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"sv", "", ""},
1350c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"fi", "", ""},
1351c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"da", "", ""},
1352c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"pt", "PT", ""},
1353c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"ro", "", ""},
1354c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"hu", "", ""},
1355c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"he", "", ""},
1356c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"in", "", ""},
1357c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"cs", "", ""},
1358c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"el", "", ""},
1359c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"no", "", ""},
1360c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"vi", "", ""},
1361c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"bg", "", ""},
1362c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"hr", "", ""},
1363c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"lt", "", ""},
1364c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"sk", "", ""},
1365c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"sl", "", ""},
1366c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"sr", "", ""},
1367c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"ca", "", ""},
1368c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"lv", "", ""},
1369c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"uk", "", ""},
1370c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {"hi", "", ""},
1371c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
1372c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1373c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    uint32_t localeIndex;
1374c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    for ( localeIndex = 0; localeIndex < ARRAY_SIZE(testLocale); ++localeIndex ) {
1375c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        char locName[32];
1376c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        uprv_strcpy(locName, testLocale[localeIndex][0]);
1377c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        uprv_strcat(locName, testLocale[localeIndex][1]);
1378c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        stress(DATA, ARRAY_SIZE(DATA), Locale(testLocale[localeIndex][0], testLocale[localeIndex][1], testLocale[localeIndex][2]), locName);
1379c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
1380c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
1381c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1382c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1383c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid DateIntervalFormatTest::stress(const char** data, int32_t data_length,
1384c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                                    const Locale& loc, const char* locName) {
1385c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UnicodeString skeleton[] = {
1386c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EEEEdMMMMy",
1387c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dMMMMy",
1388c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dMMMM",
1389c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "MMMMy",
1390c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EEEEdMMMM",
1391c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EdMMMy",
1392c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dMMMy",
1393c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dMMM",
1394c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "MMMy",
1395c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EdMMM",
1396c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EdMy",
1397c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dMy",
1398c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dM",
1399c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "My",
1400c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EdM",
1401c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "d",
1402c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "Ed",
1403c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "y",
1404c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "M",
1405c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "MMM",
1406c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "MMMM",
1407c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hm",
1408c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hmv",
1409c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hmz",
1410c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "h",
1411c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hv",
1412c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hz",
1413c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EEddMMyyyy", // following could be normalized
1414c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EddMMy",
1415c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hhmm",
1416c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hhmmzz",
1417c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "hms",  // following could not be normalized
1418c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "dMMMMMy",
1419c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        "EEEEEdM",
1420c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
1421c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1422c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    int32_t i = 0;
1423c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UErrorCode ec = U_ZERO_ERROR;
1424c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UnicodeString str, str2;
1425c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    SimpleDateFormat ref(data[i++], loc, ec);
1426c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    if (!assertSuccess("construct SimpleDateFormat", ec)) return;
1427c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1428c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1429c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    char result[1000];
1430c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    char mesg[1000];
1431c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    sprintf(mesg, "locale: %s\n", locName);
1432c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    PRINTMESG(mesg);
1433c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1434c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1435c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    while (i<data_length) {
1436c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1437c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        // 'f'
1438c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* datestr = data[i++];
1439c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        const char* datestr_2 = data[i++];
1440c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1441c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        sprintf(mesg, "original date: %s - %s\n", datestr, datestr_2);
1442c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        PRINTMESG(mesg)
1443c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1444c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        UDate date = ref.parse(ctou(datestr), ec);
1445c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("parse", ec)) return;
1446c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        UDate date_2 = ref.parse(ctou(datestr_2), ec);
1447c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("parse", ec)) return;
1448c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateInterval dtitv(date, date_2);
1449c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1450c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        for ( uint32_t skeletonIndex = 0;
1451c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru              skeletonIndex < ARRAY_SIZE(skeleton);
1452c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru              ++skeletonIndex ) {
1453c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            const UnicodeString& oneSkeleton = skeleton[skeletonIndex];
1454c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(oneSkeleton, loc, ec);
1455c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            if (!assertSuccess("createInstance(skeleton)", ec)) return;
1456c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            /*
1457c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            // reset the calendar to be Gregorian calendar for "th"
1458c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            if ( uprv_strcmp(locName, "th") == 0 ) {
1459c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                GregorianCalendar* gregCal = new GregorianCalendar(loc, ec);
1460c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                if (!assertSuccess("GregorianCalendar()", ec)) return;
1461c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                const DateFormat* dformat = dtitvfmt->getDateFormat();
1462c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                DateFormat* newOne = (DateFormat*)dformat->clone();
1463c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                newOne->adoptCalendar(gregCal);
1464c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                //dtitvfmt->adoptDateFormat(newOne, ec);
1465c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                dtitvfmt->setDateFormat(*newOne, ec);
1466c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                delete newOne;
1467c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru                if (!assertSuccess("adoptDateFormat()", ec)) return;
1468c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            }
1469c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            */
1470c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            FieldPosition pos=0;
1471c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            dtitvfmt->format(&dtitv, str.remove(), pos, ec);
1472c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            if (!assertSuccess("format", ec)) return;
1473c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1474c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            oneSkeleton.extract(0,  oneSkeleton.length(), result, "UTF-8");
1475c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            sprintf(mesg, "interval by skeleton: %s\n", result);
1476c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            PRINTMESG(mesg)
1477c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            str.extract(0,  str.length(), result, "UTF-8");
1478c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            sprintf(mesg, "interval date: %s\n", result);
1479c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            PRINTMESG(mesg)
1480c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1481c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            delete dtitvfmt;
1482c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        }
1483c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
1484c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        // test user created DateIntervalInfo
1485c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        ec = U_ZERO_ERROR;
1486c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateIntervalInfo* dtitvinf = new DateIntervalInfo(ec);
1487c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvinf->setFallbackIntervalPattern("{0} --- {1}", ec);
1488c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_MONTH, "yyyy MMM d - MMM y",ec);
1489c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return;
1490c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm - HH:mm", ec);
1491c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return;
1492c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_ABBR_MONTH_DAY, loc, *dtitvinf, ec);
1493c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvinf;
1494c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (!assertSuccess("createInstance(skeleton,dtitvinf)", ec)) return;
1495c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        FieldPosition pos=0;
1496c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        dtitvfmt->format(&dtitv, str.remove(), pos, ec);
1497c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if ( uprv_strcmp(locName, "th") ) {
1498c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            if (!assertSuccess("format", ec)) return;
1499c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifdef DTIFMTTS_DEBUG
1500c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            PRINTMESG("interval format using user defined DateIntervalInfo\n");
1501c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            str.extract(0,  str.length(), result, "UTF-8");
1502c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            sprintf(mesg, "interval date: %s\n", result);
1503c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            PRINTMESG(mesg)
1504c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif
1505c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        } else {
1506c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            // for "th", the default calendar is Budhist,
1507c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            // not Gregorian.
1508c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            assertTrue("Default calendar for \"th\" is Budhist", ec == U_ILLEGAL_ARGUMENT_ERROR);
1509c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            ec = U_ZERO_ERROR;
1510c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        }
1511c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        delete dtitvfmt;
1512c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
1513c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
1514c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
15151b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubertvoid DateIntervalFormatTest::testTicket11583_2() {
15161b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UErrorCode status = U_ZERO_ERROR;
15171b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    LocalPointer<DateIntervalFormat> fmt(
15181b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert            DateIntervalFormat::createInstance("yMMM", "es-US", status));
15191b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    if (!assertSuccess("Error create format object", status)) {
15201b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        return;
15211b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    }
15221b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    DateInterval interval((UDate) 1232364615000.0, (UDate) 1328787015000.0);
15231b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UnicodeString appendTo;
15241b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    FieldPosition fpos(FieldPosition::DONT_CARE);
15251b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UnicodeString expected("ene. de 2009 \\u2013 feb. de 2012");
15261b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    assertEquals(
15271b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert            "",
15281b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert            expected.unescape(),
15291b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert            fmt->format(&interval, appendTo, fpos, status));
15301b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    if (!assertSuccess("Error formatting", status)) {
15311b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert        return;
15321b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    }
15331b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert}
15341b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
1535c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
1536