- add third_party src.
[platform/framework/web/crosswalk.git] / src / third_party / icu / source / test / intltest / dtfmttst.h
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