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