• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /********************************************************************
2  * COPYRIGHT:
3  * Copyright (c) 1997-2007, 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 DataeFormat 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 public: // package
141     /**
142      * Test the formatting of dates in different locales.
143      */
144     virtual void TestLocaleDateFormat(void);
145 
146     virtual void TestDateFormatCalendar(void);
147 
148     virtual void TestSpaceParsing(void);
149 
150     void TestExactCountFormat(void);
151 
152     void TestWhiteSpaceParsing(void);
153 
154     void TestInvalidPattern(void);
155 
156     void TestGreekMay(void);
157 
158     void TestGenericTime(void);
159 
160     void TestGenericTimeZoneOrder(void);
161 
162 public:
163     /**
164      * Test host-specific formatting.
165      */
166     void TestHost(void);
167 
168 public:
169     /**
170      * Test patterns added in CLDR 1.4
171      */
172     void TestEras(void);
173 
174     void TestNarrowNames(void);
175 
176     void TestStandAloneDays(void);
177 
178     void TestStandAloneMonths(void);
179 
180     void TestQuarters(void);
181 
182     void TestZTimeZoneParsing(void);
183 
184     void TestRelativeClone(void);
185 
186     void TestHostClone(void);
187 
188 public:
189     /***
190      * Test Relative Dates
191      */
192      void TestRelative(void);
193      void TestTimeZoneDisplayName(void);
194 /*   void TestRelativeError(void);
195      void TestRelativeOther(void);
196 */
197 
198  private:
199       void TestRelative(int daysdelta,
200                                   const Locale& loc,
201                                   const char *expectChars);
202 
203  private:
204     void expectParse(const char** data, int32_t data_length,
205                      const Locale& locale);
206 
207     void expect(const char** data, int32_t data_length,
208                 const Locale& loc);
209 
210     void expectFormat(const char **data, int32_t data_length,
211                       const Locale &locale);
212 };
213 
214 #endif /* #if !UCONFIG_NO_FORMATTING */
215 
216 #endif // _DATEFORMATTEST_
217 //eof
218