16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************************
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT:
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2013, International Business Machines Corporation and
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved.
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _DATEFORMATTEST_
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _DATEFORMATTEST_
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h"
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/datefmt.h"
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/smpdtfmt.h"
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "caltztst.h"
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Performs many different tests for DateFormat and SimpleDateFormat
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DateFormatTest: public CalendarTimeZoneTest {
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // IntlTest override
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify that patterns have the correct values and could produce
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * the DateFormat instances that contain the correct localized patterns.
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestPatterns();
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *  "Test written by Wally Wedel and emailed to me."
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *  Test handling of timezone offsets
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestWallyWedel(void);
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test operator==
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestEquals(void);
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the parsing of 2-digit years.
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestTwoDigitYearDSTParse(void);
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // internal utility routine (genrates escape sequences for characters)
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static UnicodeString& escape(UnicodeString& s);
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify that returned field position indices are correct.
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestFieldPosition(void);
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGeneral();
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // internal utility function
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void getFieldText(DateFormat* df, int32_t field, UDate date, UnicodeString& str);
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify that strings which contain incomplete specifications are parsed
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * correctly.  In some instances, this means not being parsed at all, and
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * returning an appropriate error.
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestPartialParse994(void);
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // internal test subroutine, used by TestPartialParse994
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected);
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify the behavior of patterns in which digits for different fields run together
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * without intervening separators.
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestRunTogetherPattern985(void);
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify the behavior of patterns in which digits for different fields run together
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * without intervening separators.
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestRunTogetherPattern917(void);
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // internal test subroutine, used by TestRunTogetherPattern917
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected);
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify the handling of Czech June and July, which have the unique attribute that
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * one is a proper prefix substring of the other.
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestCzechMonths459(void);
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the handling of 'D' in patterns.
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestLetterDPattern212(void);
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the day of year pattern.
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestDayOfYearPattern195(void);
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // interl test subroutine, used by TestDayOfYearPattern195
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected);
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the handling of single quotes in patterns.
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestQuotePattern161(void);
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify the correct behavior when handling invalid input strings.
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestBadInput135(void);
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Verify the correct behavior when parsing an array of inputs against an
1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * array of patterns, with known results.  The results are encoded after
1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * the input strings in each row.
1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestBadInput135a(void);
1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the parsing of two-digit years.
1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestTwoDigitYear(void);
1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // internal test subroutine, used by TestTwoDigitYear
1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void parse2DigitYear(DateFormat& fmt, const char* str, UDate expected);
1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the formatting of time zones.
1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestDateFormatZone061(void);
1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Further test the formatting of time zones.
1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestDateFormatZone146(void);
1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestTimeZoneStringsAPI(void);
1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGMTParsing(void);
1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: // package
1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test the formatting of dates in different locales.
1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestLocaleDateFormat(void);
1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestDateFormatCalendar(void);
1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual void TestSpaceParsing(void);
1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestExactCountFormat(void);
1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestWhiteSpaceParsing(void);
1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestInvalidPattern(void);
1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGreekMay(void);
1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGenericTime(void);
1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGenericTimeZoneOrder(void);
1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void Test6338(void);
1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void Test6726(void);
1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void Test6880(void);
1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestISOEra(void);
1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestFormalChineseDate(void);
1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestStandAloneGMTParse(void);
1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestParsePosition(void);
1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestMonthPatterns(void);
1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestContext(void);
1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestNonGregoFmtParse(void);
1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test host-specific formatting.
1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestHost(void);
1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test patterns added in CLDR 1.4, CLDR 23
1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestEras(void);
2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestNarrowNames(void);
2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestShortDays(void);
2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestStandAloneDays(void);
2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestStandAloneMonths(void);
2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestQuarters(void);
2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestZTimeZoneParsing(void);
2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRelativeClone(void);
2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestHostClone(void);
2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestTimeZoneDisplayName(void);
2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRoundtripWithCalendar(void);
2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /***
2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test Relative Dates
2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     void TestRelative(void);
2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*   void TestRelativeError(void);
2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     void TestRelativeOther(void);
2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/
2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestDotAndAtLeniency();
2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestDateFormatLeniency();
2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UBool showParse(DateFormat &format, const UnicodeString &formattedString);
2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test parsing a number as a string
2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestNumberAsStringParsing(void);
2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private:
2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      void TestRelative(int daysdelta,
2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                  const Locale& loc,
2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                  const char *expectChars);
2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private:
2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void expectParse(const char** data, int32_t data_length,
2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                     const Locale& locale);
2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void expect(const char** data, int32_t data_length,
2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                const Locale& loc);
2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void expectFormat(const char **data, int32_t data_length,
2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                      const Locale &locale);
2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */
2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif // _DATEFORMATTEST_
2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//eof
263