]> git.saurik.com Git - apple/icu.git/blob - icuSources/test/intltest/dtfmttst.h
ICU-62135.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / dtfmttst.h
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /********************************************************************
4 * COPYRIGHT:
5 * Copyright (c) 1997-2016, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 ********************************************************************/
8
9 #ifndef _DATEFORMATTEST_
10 #define _DATEFORMATTEST_
11
12 #include "unicode/utypes.h"
13
14 #if !UCONFIG_NO_FORMATTING
15
16 #include "unicode/datefmt.h"
17 #include "unicode/smpdtfmt.h"
18 #include "caltztst.h"
19
20 /**
21 * Performs many different tests for DateFormat and SimpleDateFormat
22 **/
23 class DateFormatTest: public CalendarTimeZoneTest {
24 // IntlTest override
25 void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
26 public:
27 /**
28 * Verify that patterns have the correct values and could produce
29 * the DateFormat instances that contain the correct localized patterns.
30 */
31 void TestPatterns();
32 /**
33 * "Test written by Wally Wedel and emailed to me."
34 * Test handling of timezone offsets
35 **/
36 virtual void TestWallyWedel(void);
37 /**
38 * Test operator==
39 */
40 virtual void TestEquals(void);
41 /**
42 * Test the parsing of 2-digit years.
43 */
44 virtual void TestTwoDigitYearDSTParse(void);
45
46 public: // package
47 // internal utility routine (genrates escape sequences for characters)
48 static UnicodeString& escape(UnicodeString& s);
49
50 public:
51 /**
52 * Verify that returned field position indices are correct.
53 */
54 void TestFieldPosition(void);
55
56 void TestGeneral();
57
58 public: // package
59 // internal utility function
60 static void getFieldText(DateFormat* df, int32_t field, UDate date, UnicodeString& str);
61
62 public:
63 /**
64 * Verify that strings which contain incomplete specifications are parsed
65 * correctly. In some instances, this means not being parsed at all, and
66 * returning an appropriate error.
67 */
68 virtual void TestPartialParse994(void);
69
70 public: // package
71 // internal test subroutine, used by TestPartialParse994
72 virtual void tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected);
73
74 public:
75 /**
76 * Verify the behavior of patterns in which digits for different fields run together
77 * without intervening separators.
78 */
79 virtual void TestRunTogetherPattern985(void);
80 /**
81 * Verify the behavior of patterns in which digits for different fields run together
82 * without intervening separators.
83 */
84 virtual void TestRunTogetherPattern917(void);
85
86 public: // package
87 // internal test subroutine, used by TestRunTogetherPattern917
88 virtual void testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected);
89
90 public:
91 /**
92 * Verify the handling of Czech June and July, which have the unique attribute that
93 * one is a proper prefix substring of the other.
94 */
95 virtual void TestCzechMonths459(void);
96 /**
97 * Test the handling of 'D' in patterns.
98 */
99 virtual void TestLetterDPattern212(void);
100 /**
101 * Test the day of year pattern.
102 */
103 virtual void TestDayOfYearPattern195(void);
104
105 public: // package
106 // interl test subroutine, used by TestDayOfYearPattern195
107 virtual void tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected);
108
109 public:
110 /**
111 * Test the handling of single quotes in patterns.
112 */
113 virtual void TestQuotePattern161(void);
114 /**
115 * Verify the correct behavior when handling invalid input strings.
116 */
117 virtual void TestBadInput135(void);
118
119 public:
120 /**
121 * Verify the correct behavior when parsing an array of inputs against an
122 * array of patterns, with known results. The results are encoded after
123 * the input strings in each row.
124 */
125 virtual void TestBadInput135a(void);
126 /**
127 * Test the parsing of two-digit years.
128 */
129 virtual void TestTwoDigitYear(void);
130
131 public: // package
132 // internal test subroutine, used by TestTwoDigitYear
133 virtual void parse2DigitYear(DateFormat& fmt, const char* str, UDate expected);
134
135 public:
136 /**
137 * Test the formatting of time zones.
138 */
139 virtual void TestDateFormatZone061(void);
140 /**
141 * Further test the formatting of time zones.
142 */
143 virtual void TestDateFormatZone146(void);
144
145 void TestTimeZoneStringsAPI(void);
146
147 void TestGMTParsing(void);
148
149 public: // package
150 /**
151 * Test the formatting of dates in different locales.
152 */
153 virtual void TestLocaleDateFormat(void);
154
155 virtual void TestFormattingLocaleTimeSeparator(void);
156
157 virtual void TestDateFormatCalendar(void);
158
159 virtual void TestSpaceParsing(void);
160
161 void TestExactCountFormat(void);
162
163 void TestWhiteSpaceParsing(void);
164
165 void TestInvalidPattern(void);
166
167 void TestGreekMay(void);
168
169 void TestGenericTime(void);
170
171 void TestGenericTimeZoneOrder(void);
172
173 void Test6338(void);
174
175 void Test6726(void);
176
177 void Test6880(void);
178
179 void TestISOEra(void);
180
181 void TestFormalChineseDate(void);
182
183 void TestStandAloneGMTParse(void);
184
185 void TestParsePosition(void);
186
187 void TestMonthPatterns(void);
188
189 void TestContext(void);
190
191 void TestNonGregoFmtParse(void);
192
193 void TestFormatsWithNumberSystems(void);
194
195 public:
196 /**
197 * Test host-specific formatting.
198 */
199 void TestHost(void);
200
201 public:
202 /**
203 * Test patterns added in CLDR 1.4, CLDR 23
204 */
205 void TestEras(void);
206
207 void TestNarrowNames(void);
208
209 void TestShortDays(void);
210
211 void TestStandAloneDays(void);
212
213 void TestStandAloneMonths(void);
214
215 void TestQuarters(void);
216
217 void TestZTimeZoneParsing(void);
218
219 void TestRelativeClone(void);
220
221 void TestHostClone(void);
222
223 void TestHebrewClone(void);
224
225 void TestDateFormatSymbolsClone(void);
226
227 void TestTimeZoneDisplayName(void);
228
229 void TestRoundtripWithCalendar(void);
230
231 public:
232 /***
233 * Test Relative Dates
234 */
235 void TestRelative(void);
236 /* void TestRelativeError(void);
237 void TestRelativeOther(void);
238 */
239
240 void TestDotAndAtLeniency();
241
242 void TestDateFormatLeniency();
243
244 void TestParseMultiPatternMatch();
245
246 void TestParseLeniencyAPIs();
247
248 // test override NumberFormat
249 void TestNumberFormatOverride();
250 void TestCreateInstanceForSkeleton();
251 void TestCreateInstanceForSkeletonDefault();
252 void TestCreateInstanceForSkeletonWithCalendar();
253 void TestDFSCreateForLocaleNonGregorianLocale();
254 void TestDFSCreateForLocaleWithCalendarInLocale();
255 void TestChangeCalendar();
256
257 void TestPatternFromSkeleton();
258
259 void TestAmPmMidnightNoon();
260 void TestFlexibleDayPeriod();
261 void TestDayPeriodWithLocales();
262 void TestMinuteSecondFieldsInOddPlaces();
263 void TestDayPeriodParsing();
264 void TestParseRegression13744();
265
266 private:
267 UBool showParse(DateFormat &format, const UnicodeString &formattedString);
268
269 public:
270 /**
271 * Test parsing a number as a string
272 */
273 void TestNumberAsStringParsing(void);
274
275 private:
276 void TestRelative(int daysdelta,
277 const Locale& loc,
278 const char *expectChars);
279
280 private:
281 void expectParse(const char** data, int32_t data_length,
282 const Locale& locale);
283
284 void expect(const char** data, int32_t data_length,
285 const Locale& loc);
286
287 void expectFormat(const char **data, int32_t data_length,
288 const Locale &locale);
289
290 };
291
292 #endif /* #if !UCONFIG_NO_FORMATTING */
293
294 #endif // _DATEFORMATTEST_
295 //eof