1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/***********************************************************************
283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * Copyright (c) 1997-2012, International Business Machines Corporation
3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and others. All Rights Reserved.
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ***********************************************************************/
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef __CalendarTest__
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define __CalendarTest__
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/calendar.h"
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/smpdtfmt.h"
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "caltztst.h"
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass CalendarTest: public CalendarTimeZoneTest {
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // IntlTest override
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * This test confirms the correct behavior of add when incrementing
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * through subsequent days.
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestRog(void);
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test the handling of the day of the week, checking for correctness and
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * for correct minimum and maximum values.
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestDOW943(void);
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * test subroutine use by TestDOW943
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void dowTest(UBool lenient);
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Confirm that cloned Calendar objects do not inadvertently share substructures.
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestClonesUnique908(void);
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Confirm that the Gregorian cutoff value works as advertised.
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestGregorianChange768(void);
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Confirm the functioning of the field disambiguation algorithm.
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestDisambiguation765(void);
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test various API methods for API completeness.
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestGenericAPI(void); // New to C++ -- needs to be back ported to Java
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestWOY(void);
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestDebug(void);
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * test subroutine used by TestDisambiguation765
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void verify765(const UnicodeString& msg, Calendar* c, int32_t year, int32_t month, int32_t day);
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * test subroutine used by TestDisambiguation765
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void verify765(const UnicodeString& msg/*, IllegalArgumentException e*/, UErrorCode status);
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Confirm that the offset between local time and GMT behaves as expected.
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestGMTvsLocal4064654(void);
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * test subroutine used by TestGMTvsLocal4064654
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void test4064654(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn, int32_t sc);
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * The operations of adding and setting should not exhibit pathological
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * dependence on the order of operations.  This test checks for this.
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestAddSetOrder621(void);
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Confirm that adding to various fields works.
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestAdd520(void);
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Execute and test adding and rolling in GregorianCalendar extensively.
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestAddRollExtensive(void);
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // internal utility routine for checking date
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void check520(Calendar* c,
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t y, int32_t m, int32_t d,
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t hr, int32_t min, int32_t sec,
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t ms, UCalendarDateFields field);
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void check520(Calendar* c,
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t y, int32_t m, int32_t d);
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test that setting of fields works.  In particular, make sure that all instances
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * of GregorianCalendar don't share a static instance of the fields array.
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestFieldSet4781(void);
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*    virtual void TestSerialize337();
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UnicodeString& PREFIX;
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UnicodeString& POSTFIX;
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UnicodeString& FILENAME;
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Verify that the seconds of a Calendar can be zeroed out through the
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * expected sequence of operations.
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestSecondsZero121(void);
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Verify that a specific sequence of adding and setting works as expected;
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * it should not vary depending on when and whether the get method is
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * called.
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestAddSetGet0610(void);
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // internal routine for checking date
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UnicodeString value(Calendar* calendar);
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Verify that various fields on a known date are set correctly.
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestFields060(void);
139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static int32_t EXPECTED_FIELDS[];
142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t EXPECTED_FIELDS_length;
143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Verify that various fields on a known date are set correctly.  In this
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * case, the start of the epoch (January 1 1970).
148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestEpochStartFields(void);
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static int32_t EPOCH_FIELDS[];
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test that the days of the week progress properly when add is called repeatedly
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * for increments of 24 days.
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestDOWProgression(void);
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test newly added fields - DOW_LOCAL and YEAR_WOY
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void TestDOW_LOCALandYEAR_WOY(void);
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // test subroutine used by TestDOW_LOCALandYEAR_WOY
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void doYEAR_WOYLoop(Calendar *cal,
166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        SimpleDateFormat *sdf, int32_t times, UErrorCode& status);
167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // test subroutine used by TestDOW_LOCALandYEAR_WOY
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void loop_addroll(Calendar *cal, /*SimpleDateFormat *sdf, */
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        int times, UCalendarDateFields field, UCalendarDateFields field2,
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        UErrorCode& errorCode);
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestYWOY(void);
173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestJD(void);
174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void yearAddTest(Calendar& cal, UErrorCode& status);
176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: // package
178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // test subroutine use by TestDOWProgression
179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void marchByDelta(Calendar* cal, int32_t delta);
180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru public:
182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // for other tests' use
183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UnicodeString fieldName(UCalendarDateFields f);
184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UnicodeString calToStr(const Calendar & cal);
185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // List of non-installed locales with interesting calendars
187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return the count of 'other' locales to test
190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static int32_t testLocaleCount();
192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param i index of 'other' locale to return
195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return locale ID
196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const char* testLocaleID(int32_t i);
198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Clone the specified calendar, and determine its earliest supported date
201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * by setting the extended year to the minimum value.
202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param cal Calendar (will be cloned)
203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param isGregorian output: returns 'TRUE' if the calendar's class is GregorianCalendar
204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status error code
205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UDate minDateOfCalendar(const Calendar& cal, UBool &isGregorian, UErrorCode& status);
207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Construct a calendar of the specified locale, and determine its earliest supported date
210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * by setting the extended year to the minimum value.
211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param locale locale of calendar to check
212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param isGregorian output: returns 'TRUE' if the calendar's class is GregorianCalendar
213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status error code
214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static UDate minDateOfCalendar(const Locale& locale, UBool &isGregorian, UErrorCode& status);
216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  // internal - for other test use
218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru public:
219b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void Test6703(void);
220b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void Test3785(void);
22150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    void Test1624(void);
222b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
223b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    /**
224b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho     * Test the time stamp array recalculation during heavy Calendar usage
225b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho     */
226b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestTimeStamp(void);
227b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    /**
228b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho     * Test the ISO8601 calendar type
229b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho     */
230b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestISO8601(void);
23183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
23283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    /**
23383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius     * Test cases for [set|get][Repeated|Skipped]WallTimeOption
23483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius     */
23583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    void TestAmbiguousWallTimeAPIs(void);
23683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    void TestRepeatedWallTime(void);
23783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    void TestSkippedWallTime(void);
23883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
23983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    void TestCloneLocale(void);
240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif // __CalendarTest__
245