• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /********************************************************************
2  * COPYRIGHT:
3  * Copyright (c) 1997-2010, International Business Machines Corporation and
4  * others. All Rights Reserved.
5  ********************************************************************/
6 
7 #ifndef _DATEFORMATTEST_
8 #define _DATEFORMATTEST_
9 
10 #include "unicode/utypes.h"
11 
12 #if !UCONFIG_NO_FORMATTING
13 
14 #include "unicode/datefmt.h"
15 #include "unicode/smpdtfmt.h"
16 #include "caltztst.h"
17 
18 /**
19  * Performs many different tests for DateFormat and SimpleDateFormat
20  **/
21 class DateFormatTest: public CalendarTimeZoneTest {
22     // IntlTest override
23     void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par );
24 public:
25     /**
26      *  "Test written by Wally Wedel and emailed to me."
27      *  Test handling of timezone offsets
28      **/
29     virtual void TestWallyWedel(void);
30     /**
31      * Test operator==
32      */
33     virtual void TestEquals(void);
34     /**
35      * Test the parsing of 2-digit years.
36      */
37     virtual void TestTwoDigitYearDSTParse(void);
38 
39 public: // package
40     // internal utility routine (genrates escape sequences for characters)
41     static UnicodeString& escape(UnicodeString& s);
42 
43 public:
44     /**
45      * Verify that returned field position indices are correct.
46      */
47     void TestFieldPosition(void);
48 
49     void TestGeneral();
50 
51 public: // package
52     // internal utility function
53     static void getFieldText(DateFormat* df, int32_t field, UDate date, UnicodeString& str);
54 
55 public:
56     /**
57      * Verify that strings which contain incomplete specifications are parsed
58      * correctly.  In some instances, this means not being parsed at all, and
59      * returning an appropriate error.
60      */
61     virtual void TestPartialParse994(void);
62 
63 public: // package
64     // internal test subroutine, used by TestPartialParse994
65     virtual void tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected);
66 
67 public:
68     /**
69      * Verify the behavior of patterns in which digits for different fields run together
70      * without intervening separators.
71      */
72     virtual void TestRunTogetherPattern985(void);
73     /**
74      * Verify the behavior of patterns in which digits for different fields run together
75      * without intervening separators.
76      */
77     virtual void TestRunTogetherPattern917(void);
78 
79 public: // package
80     // internal test subroutine, used by TestRunTogetherPattern917
81     virtual void testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected);
82 
83 public:
84     /**
85      * Verify the handling of Czech June and July, which have the unique attribute that
86      * one is a proper prefix substring of the other.
87      */
88     virtual void TestCzechMonths459(void);
89     /**
90      * Test the handling of 'D' in patterns.
91      */
92     virtual void TestLetterDPattern212(void);
93     /**
94      * Test the day of year pattern.
95      */
96     virtual void TestDayOfYearPattern195(void);
97 
98 public: // package
99     // interl test subroutine, used by TestDayOfYearPattern195
100     virtual void tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected);
101 
102 public:
103     /**
104      * Test the handling of single quotes in patterns.
105      */
106     virtual void TestQuotePattern161(void);
107     /**
108      * Verify the correct behavior when handling invalid input strings.
109      */
110     virtual void TestBadInput135(void);
111 
112 public:
113     /**
114      * Verify the correct behavior when parsing an array of inputs against an
115      * array of patterns, with known results.  The results are encoded after
116      * the input strings in each row.
117      */
118     virtual void TestBadInput135a(void);
119     /**
120      * Test the parsing of two-digit years.
121      */
122     virtual void TestTwoDigitYear(void);
123 
124 public: // package
125     // internal test subroutine, used by TestTwoDigitYear
126     virtual void parse2DigitYear(DateFormat& fmt, const char* str, UDate expected);
127 
128 public:
129     /**
130      * Test the formatting of time zones.
131      */
132     virtual void TestDateFormatZone061(void);
133     /**
134      * Further test the formatting of time zones.
135      */
136     virtual void TestDateFormatZone146(void);
137 
138     void TestTimeZoneStringsAPI(void);
139 
140     void TestGMTParsing(void);
141 
142 public: // package
143     /**
144      * Test the formatting of dates in different locales.
145      */
146     virtual void TestLocaleDateFormat(void);
147 
148     virtual void TestDateFormatCalendar(void);
149 
150     virtual void TestSpaceParsing(void);
151 
152     void TestExactCountFormat(void);
153 
154     void TestWhiteSpaceParsing(void);
155 
156     void TestInvalidPattern(void);
157 
158     void TestGreekMay(void);
159 
160     void TestGenericTime(void);
161 
162     void TestGenericTimeZoneOrder(void);
163 
164     void Test6338(void);
165 
166     void Test6726(void);
167 
168     void Test6880(void);
169 
170     void TestISOEra(void);
171 
172     void TestFormalChineseDate(void);
173 
174 public:
175     /**
176      * Test host-specific formatting.
177      */
178     void TestHost(void);
179 
180 public:
181     /**
182      * Test patterns added in CLDR 1.4
183      */
184     void TestEras(void);
185 
186     void TestNarrowNames(void);
187 
188     void TestStandAloneDays(void);
189 
190     void TestStandAloneMonths(void);
191 
192     void TestQuarters(void);
193 
194     void TestZTimeZoneParsing(void);
195 
196     void TestRelativeClone(void);
197 
198     void TestHostClone(void);
199 
200     void TestTimeZoneDisplayName(void);
201 
202     void TestRoundtripWithCalendar(void);
203 
204 public:
205     /***
206      * Test Relative Dates
207      */
208      void TestRelative(void);
209 /*   void TestRelativeError(void);
210      void TestRelativeOther(void);
211 */
212 
213  private:
214       void TestRelative(int daysdelta,
215                                   const Locale& loc,
216                                   const char *expectChars);
217 
218  private:
219     void expectParse(const char** data, int32_t data_length,
220                      const Locale& locale);
221 
222     void expect(const char** data, int32_t data_length,
223                 const Locale& loc);
224 
225     void expectFormat(const char **data, int32_t data_length,
226                       const Locale &locale);
227 };
228 
229 #endif /* #if !UCONFIG_NO_FORMATTING */
230 
231 #endif // _DATEFORMATTEST_
232 //eof
233