]> git.saurik.com Git - apple/icu.git/blob - icuSources/test/intltest/tsdtfmsy.cpp
ICU-461.18.tar.gz
[apple/icu.git] / icuSources / test / intltest / tsdtfmsy.cpp
1 /********************************************************************
2 * Copyright (c) 1997-2009, International Business Machines
3 * Corporation and others. All Rights Reserved.
4 ********************************************************************/
5
6 #include "unicode/utypes.h"
7
8 #if !UCONFIG_NO_FORMATTING
9
10 #include "tsdtfmsy.h"
11
12 #include "unicode/dtfmtsym.h"
13
14
15 //--------------------------------------------------------------------
16 // Time bomb - allows temporary behavior that expires at a given
17 // release
18 //--------------------------------------------------------------------
19
20 void IntlTestDateFormatSymbols::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
21 {
22 if (exec) logln("TestSuite DateFormatSymbols");
23 switch (index) {
24 TESTCASE(0,TestSymbols);
25 TESTCASE(1,TestGetMonths);
26 TESTCASE(2,TestGetMonths2);
27 TESTCASE(3,TestGetWeekdays2);
28 TESTCASE(4,TestGetEraNames);
29 default: name = ""; break;
30 }
31 }
32
33 /**
34 * Test getMonths.
35 */
36 void IntlTestDateFormatSymbols::TestGetMonths()
37 {
38 UErrorCode status = U_ZERO_ERROR;
39 int32_t cnt;
40 const UnicodeString* month;
41 DateFormatSymbols *symbol;
42
43 symbol=new DateFormatSymbols(Locale::getDefault(), status);
44
45 month=symbol->getMonths(cnt);
46
47 logln((UnicodeString)"size = " + cnt);
48
49 for (int32_t i=0; i<cnt; ++i)
50 {
51 logln(month[i]);
52 }
53
54 delete symbol;
55 }
56
57 void IntlTestDateFormatSymbols::TestGetMonths2()
58 {
59 UErrorCode status = U_ZERO_ERROR;
60 DateFormatSymbols *symbol;
61
62 symbol=new DateFormatSymbols(Locale::getDefault(), status);
63
64 DateFormatSymbols::DtContextType context[] = {DateFormatSymbols::STANDALONE, DateFormatSymbols::FORMAT};
65 DateFormatSymbols::DtWidthType width[] = {DateFormatSymbols::WIDE, DateFormatSymbols::ABBREVIATED, DateFormatSymbols::NARROW};
66
67 for (int32_t i = 0; i < 2; i++) {
68 for (int32_t j = 0; j < 3; j++) {
69 int32_t cnt;
70 const UnicodeString * month = symbol->getMonths(cnt,context[i],width[j]);
71
72 logln((UnicodeString)"size = " + cnt);
73
74 for (int32_t k = 0; k < cnt; k++) {
75 logln(month[k]);
76 }
77 }
78 }
79 delete symbol;
80 }
81
82 void IntlTestDateFormatSymbols::TestGetWeekdays2()
83 {
84 UErrorCode status = U_ZERO_ERROR;
85 DateFormatSymbols *symbol;
86
87 symbol=new DateFormatSymbols(Locale::getDefault(), status);
88
89 DateFormatSymbols::DtContextType context[] = {DateFormatSymbols::STANDALONE, DateFormatSymbols::FORMAT};
90 DateFormatSymbols::DtWidthType width[] = {DateFormatSymbols::WIDE, DateFormatSymbols::ABBREVIATED, DateFormatSymbols::NARROW};
91
92 for (int32_t i = 0; i < 2; i++) {
93 for (int32_t j = 0; j < 3; j++) {
94 int32_t cnt;
95 const UnicodeString * wd = symbol->getWeekdays(cnt,context[i],width[j]);
96
97 logln((UnicodeString)"size = " + cnt);
98
99 for (int32_t k = 0; k < cnt; k++) {
100 logln(wd[k]);
101 }
102 }
103 }
104 delete symbol;
105 }
106
107
108 void IntlTestDateFormatSymbols::TestGetEraNames()
109 {
110 UErrorCode status = U_ZERO_ERROR;
111 int32_t cnt;
112 const UnicodeString* name;
113 DateFormatSymbols *symbol;
114
115 symbol=new DateFormatSymbols(Locale::getDefault(), status);
116
117 name=symbol->getEraNames(cnt);
118
119 logln((UnicodeString)"size = " + cnt);
120
121 for (int32_t i=0; i<cnt; ++i)
122 {
123 logln(name[i]);
124 }
125
126 delete symbol;
127 }
128
129 /**
130 * Test the API of DateFormatSymbols; primarily a simple get/set set.
131 */
132 void IntlTestDateFormatSymbols::TestSymbols(/* char *par */)
133 {
134 UErrorCode status = U_ZERO_ERROR;
135
136 DateFormatSymbols fr(Locale::getFrench(), status);
137 if(U_FAILURE(status)) {
138 errcheckln(status, "ERROR: Couldn't create French DateFormatSymbols " + (UnicodeString)u_errorName(status));
139 return;
140 }
141
142 status = U_ZERO_ERROR;
143 DateFormatSymbols fr2(Locale::getFrench(), status);
144 if(U_FAILURE(status)) {
145 errcheckln(status, "ERROR: Couldn't create French DateFormatSymbols " + (UnicodeString)u_errorName(status));
146 return;
147 }
148
149 status = U_ZERO_ERROR;
150 DateFormatSymbols en(Locale::getEnglish(), status);
151 if(U_FAILURE(status)) {
152 errcheckln(status, "ERROR: Couldn't create English DateFormatSymbols " + (UnicodeString)u_errorName(status));
153 return;
154 }
155
156 if(en == fr || ! (en != fr) ) {
157 errln("ERROR: English DateFormatSymbols equal to French");
158 }
159
160 // just do some VERY basic tests to make sure that get/set work
161
162 int32_t count = 0;
163 const UnicodeString *eras = en.getEras(count);
164 if(count == 0) {
165 errln("ERROR: 0 english eras.. exiting..\n");
166 return;
167 }
168 int32_t eraNamesCount = 0;
169 const UnicodeString *eraNames = en.getEraNames(eraNamesCount);
170 if(eraNamesCount == 0) {
171 errln("ERROR: 0 english eraNames\n");
172 } else if ( eraNames[0].length() <= eras[0].length() ) {
173 // At least for English we know a wide eraName should be longer than an abbrev era
174 errln("ERROR: english eraNames[0] not longer than eras[0]\n");
175 }
176 int32_t narrowErasCount = 0;
177 const UnicodeString *narrowEras = en.getNarrowEras(narrowErasCount);
178 if(narrowErasCount == 0) {
179 errln("ERROR: 0 english narrowEras\n");
180 } else if ( narrowEras[0].length() >= eras[0].length() ) {
181 // At least for English we know a narrowEra should be shorter than an abbrev era
182 errln("ERROR: english narrowEras[0] not shorter than eras[0]\n");
183 }
184
185 fr.setEras(eras, count);
186 if( *en.getEras(count) != *fr.getEras(count)) {
187 errln("ERROR: setEras() failed");
188 }
189
190 const UnicodeString *months = en.getMonths(count);
191 fr.setMonths(months, count);
192 if( *en.getMonths(count) != *fr.getMonths(count)) {
193 errln("ERROR: setMonths() failed");
194 }
195
196 const UnicodeString *shortMonths = en.getShortMonths(count);
197 fr.setShortMonths(shortMonths, count);
198 if( *en.getShortMonths(count) != *fr.getShortMonths(count)) {
199 errln("ERROR: setShortMonths() failed");
200 }
201
202 const UnicodeString *wideMonths = en.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE);
203 fr2.setMonths(wideMonths, count, DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE);
204 if( *en.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE) !=
205 *fr2.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE )) {
206 errln("ERROR: setMonths(FORMAT,WIDE) failed");
207 }
208
209 const UnicodeString *abbrMonths = en.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED);
210 fr2.setMonths(abbrMonths, count, DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED);
211 if( *en.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED) !=
212 *fr2.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED )) {
213 errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed");
214 }
215
216 const UnicodeString *narrowMonths = en.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW);
217 fr.setMonths(narrowMonths, count, DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW);
218 if( *en.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW) !=
219 *fr.getMonths(count,DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW )) {
220 errln("ERROR: setMonths(FORMAT,NARROW) failed");
221 }
222
223 const UnicodeString *standaloneWideMonths = en.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE);
224 fr.setMonths(standaloneWideMonths, count, DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE);
225 if( *en.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE) !=
226 *fr.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE )) {
227 errln("ERROR: setMonths(STANDALONE,WIDE) failed");
228 }
229
230 const UnicodeString *standaloneShortMonths = en.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED);
231 fr.setMonths(standaloneShortMonths, count, DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED);
232 if( *en.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED) !=
233 *fr.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED )) {
234 errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed");
235 }
236
237 const UnicodeString *standaloneNarrowMonths = en.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW);
238 fr.setMonths(standaloneNarrowMonths, count, DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW);
239 if( *en.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW) !=
240 *fr.getMonths(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW )) {
241 errln("ERROR: setMonths(STANDALONE,NARROW) failed");
242 }
243
244 const UnicodeString *weekdays = en.getWeekdays(count);
245 fr.setWeekdays(weekdays, count);
246 if( *en.getWeekdays(count) != *fr.getWeekdays(count)) {
247 errln("ERROR: setWeekdays() failed");
248 }
249
250 const UnicodeString *shortWeekdays = en.getShortWeekdays(count);
251 fr.setShortWeekdays(shortWeekdays, count);
252 if( *en.getShortWeekdays(count) != *fr.getShortWeekdays(count)) {
253 errln("ERROR: setShortWeekdays() failed");
254 }
255
256 const UnicodeString *wideWeekdays = en.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE);
257 fr2.setWeekdays(wideWeekdays, count, DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE);
258 if( *en.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE) !=
259 *fr2.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::WIDE )) {
260 errln("ERROR: setWeekdays(FORMAT,WIDE) failed");
261 }
262
263 const UnicodeString *abbrWeekdays = en.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED);
264 fr2.setWeekdays(abbrWeekdays, count, DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED);
265 if( *en.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED) !=
266 *fr2.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::ABBREVIATED )) {
267 errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed");
268 }
269
270 const UnicodeString *narrowWeekdays = en.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW);
271 fr.setWeekdays(narrowWeekdays, count, DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW);
272 if( *en.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW) !=
273 *fr.getWeekdays(count,DateFormatSymbols::FORMAT,DateFormatSymbols::NARROW )) {
274 errln("ERROR: setWeekdays(FORMAT,NARROW) failed");
275 }
276
277 const UnicodeString *standaloneWideWeekdays = en.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE);
278 fr.setWeekdays(standaloneWideWeekdays, count, DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE);
279 if( *en.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE) !=
280 *fr.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::WIDE )) {
281 errln("ERROR: setWeekdays(STANDALONE,WIDE) failed");
282 }
283
284 const UnicodeString *standaloneShortWeekdays = en.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED);
285 fr.setWeekdays(standaloneShortWeekdays, count, DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED);
286 if( *en.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED) !=
287 *fr.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::ABBREVIATED )) {
288 errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed");
289 }
290
291 const UnicodeString *standaloneNarrowWeekdays = en.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW);
292 fr.setWeekdays(standaloneNarrowWeekdays, count, DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW);
293 if( *en.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW) !=
294 *fr.getWeekdays(count,DateFormatSymbols::STANDALONE,DateFormatSymbols::NARROW )) {
295 errln("ERROR: setWeekdays(STANDALONE,NARROW) failed");
296 }
297
298 const UnicodeString *wideQuarters = en.getQuarters(count,DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE);
299 fr2.setQuarters(wideQuarters, count, DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE);
300 if( *en.getQuarters(count,DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE) !=
301 *fr2.getQuarters(count,DateFormatSymbols::FORMAT, DateFormatSymbols::WIDE )) {
302 errln("ERROR: setQuarters(FORMAT, WIDE) failed");
303 }
304
305 const UnicodeString *abbrQuarters = en.getQuarters(count,DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED);
306 fr2.setQuarters(abbrQuarters, count, DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED);
307 if( *en.getQuarters(count,DateFormatSymbols::FORMAT, DateFormatSymbols::ABBREVIATED) !=
308 *fr2.getQuarters(count,DateFormatSymbols::FORMAT ,DateFormatSymbols::ABBREVIATED )) {
309 errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed");
310 }
311
312 const UnicodeString *standaloneWideQuarters = en.getQuarters(count,DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE);
313 fr.setQuarters(standaloneWideQuarters, count, DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE);
314 if( *en.getQuarters(count,DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE) !=
315 *fr.getQuarters(count,DateFormatSymbols::STANDALONE, DateFormatSymbols::WIDE )) {
316 errln("ERROR: setQuarters(STANDALONE, WIDE) failed");
317 }
318
319 const UnicodeString *standaloneShortQuarters = en.getQuarters(count,DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED);
320 fr.setQuarters(standaloneShortQuarters, count, DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED);
321 if( *en.getQuarters(count,DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED) !=
322 *fr.getQuarters(count,DateFormatSymbols::STANDALONE, DateFormatSymbols::ABBREVIATED )) {
323 errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed");
324 }
325
326 const UnicodeString *ampms = en.getAmPmStrings(count);
327 fr.setAmPmStrings(ampms, count);
328 if( *en.getAmPmStrings(count) != *fr.getAmPmStrings(count)) {
329 errln("ERROR: setAmPmStrings() failed");
330 }
331
332 int32_t rowCount = 0, columnCount = 0;
333 const UnicodeString **strings = en.getZoneStrings(rowCount, columnCount);
334 fr.setZoneStrings(strings, rowCount, columnCount);
335 const UnicodeString **strings1 = fr.getZoneStrings(rowCount, columnCount);
336 for(int32_t i = 0; i < rowCount; i++) {
337 for(int32_t j = 0; j < columnCount; j++) {
338 if( strings[i][j] != strings1[i][j] ) {
339 errln("ERROR: setZoneStrings() failed");
340 }
341 }
342 }
343
344 UnicodeString localPattern, pat1, pat2;
345 localPattern = en.getLocalPatternChars(localPattern);
346 fr.setLocalPatternChars(localPattern);
347 if( en.getLocalPatternChars(pat1) != fr.getLocalPatternChars(pat2)) {
348 errln("ERROR: setLocalPatternChars() failed");
349 }
350
351
352 status = U_ZERO_ERROR;
353 DateFormatSymbols foo(status);
354 DateFormatSymbols bar(foo);
355
356 en = fr;
357
358 if(en != fr) {
359 errln("ERROR: Assignment operator failed");
360 }
361 if(foo != bar) {
362 errln("ERROR: Copy Constructor failed");
363 }
364 }
365
366 #endif /* #if !UCONFIG_NO_FORMATTING */