• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-2015, International Business Machines
6  * Corporation and others. All Rights Reserved.
7  ********************************************************************/
8 
9 /**
10  * IntlTestFormat is the medium level test class for everything in the directory "format".
11  */
12 
13 #include "unicode/utypes.h"
14 #include "unicode/localpointer.h"
15 
16 #if !UCONFIG_NO_FORMATTING
17 
18 #include "itformat.h"
19 #include "tsdate.h"
20 #include "tsnmfmt.h"
21 #include "caltest.h"
22 #include "callimts.h"
23 #include "tztest.h"
24 #include "tzbdtest.h"
25 #include "tsdcfmsy.h"       // DecimalFormatSymbols
26 #include "tchcfmt.h"
27 #include "tsdtfmsy.h"       // DateFormatSymbols
28 #include "dcfmapts.h"       // DecimalFormatAPI
29 #include "tfsmalls.h"       // Format Small Classes
30 #include "nmfmapts.h"       // NumberFormatAPI
31 #include "numfmtst.h"       // NumberFormatTest
32 #include "sdtfmtts.h"       // SimpleDateFormatAPI
33 #include "dtfmapts.h"       // DateFormatAPI
34 #include "dtfmttst.h"       // DateFormatTest
35 #include "tmsgfmt.h"        // TestMessageFormat
36 #include "messageformat2test.h" // TestMessageFormat2
37 #include "dtfmrgts.h"       // DateFormatRegressionTest
38 #include "msfmrgts.h"       // MessageFormatRegressionTest
39 #include "miscdtfm.h"       // DateFormatMiscTests
40 #include "nmfmtrt.h"        // NumberFormatRoundTripTest
41 #include "numrgts.h"        // NumberFormatRegressionTest
42 #include "dtfmtrtts.h"      // DateFormatRoundTripTest
43 #include "pptest.h"         // ParsePositionTest
44 #include "calregts.h"       // CalendarRegressionTest
45 #include "tzregts.h"        // TimeZoneRegressionTest
46 #include "astrotst.h"       // AstroTest
47 #include "incaltst.h"       // IntlCalendarTest
48 #include "calcasts.h"       // CalendarCaseTest
49 #include "tzrulets.h"       // TimeZoneRuleTest
50 #include "dadrcal.h"        // DataDrivenCalendarTest
51 #include "dadrfmt.h"        // DataDrivenFormatTest
52 #include "dtptngts.h"       // IntlTestDateTimePatternGeneratorAPI
53 #include "tzoffloc.h"       // TimeZoneOffsetLocalTest
54 #include "tzfmttst.h"       // TimeZoneFormatTest
55 #include "plurults.h"       // PluralRulesTest
56 #include "plurfmts.h"       // PluralFormatTest
57 #include "selfmts.h"       // PluralFormatTest
58 #include "dtifmtts.h"       // DateIntervalFormatTest
59 #include "locnmtst.h"       // LocaleDisplayNamesTest
60 #include "dcfmtest.h"       // DecimalFormatTest
61 #include "listformattertest.h"  // ListFormatterTest
62 #include "regiontst.h"      // RegionTest
63 #include "numbertest.h"     // NumberTest
64 #include "erarulestest.h"   // EraRulesTest
65 
66 extern IntlTest *createCompactDecimalFormatTest();
67 extern IntlTest *createGenderInfoTest();
68 #if !UCONFIG_NO_BREAK_ITERATION
69 extern IntlTest *createRelativeDateTimeFormatterTest();
70 #endif
71 extern IntlTest *createTimeUnitTest();
72 extern IntlTest *createMeasureFormatTest();
73 extern IntlTest *createNumberFormatSpecificationTest();
74 extern IntlTest *createScientificNumberFormatterTest();
75 extern IntlTest *createFormattedValueTest();
76 extern IntlTest *createFormattedStringBuilderTest();
77 extern IntlTest *createStringSegmentTest();
78 extern IntlTest *createUnitsDataTest();
79 extern IntlTest *createUnitsTest();
80 extern IntlTest *createUnitsRouterTest();
81 extern IntlTest *createDisplayOptionsTest();
82 
83 
84 #define TESTCLASS(id, TestClass)          \
85     case id:                              \
86         name = #TestClass;                \
87         if (exec) {                       \
88             logln(#TestClass " test---"); \
89             logln((UnicodeString)"");     \
90             TestClass test;               \
91             callTest(test, par);          \
92         }                                 \
93         break
94 
runIndexedTest(int32_t index,UBool exec,const char * & name,char * par)95 void IntlTestFormat::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par )
96 {
97     // for all format tests, always set default Locale and TimeZone to ENGLISH and PST.
98     TimeZone* saveDefaultTimeZone = nullptr;
99     Locale  saveDefaultLocale = Locale::getDefault();
100     if (exec) {
101         saveDefaultTimeZone = TimeZone::createDefault();
102         TimeZone *tz = TimeZone::createTimeZone("America/Los_Angeles");
103         TimeZone::setDefault(*tz);
104         delete tz;
105         UErrorCode status = U_ZERO_ERROR;
106         Locale::setDefault( Locale::getEnglish(), status );
107         if (U_FAILURE(status)) {
108             errln("itformat: couldn't set default Locale to ENGLISH!");
109         }
110     }
111     if (exec) logln("TestSuite Format: ");
112     switch (index) {
113         TESTCLASS(0,IntlTestDateFormat);
114         TESTCLASS(1,IntlTestNumberFormat);
115         TESTCLASS(2,CalendarTest);
116         TESTCLASS(3,CalendarLimitTest);
117         TESTCLASS(4,TimeZoneTest);
118         TESTCLASS(5,TimeZoneBoundaryTest);
119         TESTCLASS(6,TestChoiceFormat);
120         TESTCLASS(7,IntlTestDecimalFormatSymbols);
121         TESTCLASS(8,IntlTestDateFormatSymbols);
122         TESTCLASS(9,IntlTestDecimalFormatAPI);
123         TESTCLASS(10,TestFormatSmallClasses);
124         TESTCLASS(11,IntlTestNumberFormatAPI);
125         TESTCLASS(12,IntlTestSimpleDateFormatAPI);
126         TESTCLASS(13,IntlTestDateFormatAPI);
127         TESTCLASS(14,DateFormatTest);
128         TESTCLASS(15,TestMessageFormat);
129         TESTCLASS(16,NumberFormatTest);
130         TESTCLASS(17,DateFormatRegressionTest);
131         TESTCLASS(18,MessageFormatRegressionTest);
132         TESTCLASS(19,DateFormatMiscTests);
133         TESTCLASS(20,NumberFormatRoundTripTest);
134         TESTCLASS(21,NumberFormatRegressionTest);
135         TESTCLASS(22,DateFormatRoundTripTest);
136         TESTCLASS(23,ParsePositionTest);
137         TESTCLASS(24,CalendarRegressionTest);
138         TESTCLASS(25,TimeZoneRegressionTest);
139         TESTCLASS(26,IntlCalendarTest);
140         TESTCLASS(27,AstroTest);
141         TESTCLASS(28,CalendarCaseTest);
142         TESTCLASS(29,TimeZoneRuleTest);
143 #if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
144         TESTCLASS(30,DataDrivenCalendarTest);
145         TESTCLASS(31,DataDrivenFormatTest);
146 #endif
147         TESTCLASS(32,IntlTestDateTimePatternGeneratorAPI);
148         TESTCLASS(33,TimeZoneOffsetLocalTest);
149         TESTCLASS(34,TimeZoneFormatTest);
150         TESTCLASS(35,PluralRulesTest);
151         TESTCLASS(36,PluralFormatTest);
152         TESTCLASS(37,DateIntervalFormatTest);
153         case 38:
154           name = "TimeUnitTest";
155           if (exec) {
156             logln("TimeUnitTest test---");
157             logln(UnicodeString(""));
158             LocalPointer<IntlTest> test(createTimeUnitTest());
159             callTest(*test, par);
160           }
161           break;
162         TESTCLASS(39,SelectFormatTest);
163         TESTCLASS(40,LocaleDisplayNamesTest);
164 #if !UCONFIG_NO_REGULAR_EXPRESSIONS
165         TESTCLASS(41,DecimalFormatTest);
166 #endif
167         TESTCLASS(42,ListFormatterTest);
168         case 43:
169           name = "GenderInfoTest";
170           if (exec) {
171             logln("GenderInfoTest test---");
172             logln(UnicodeString(""));
173             LocalPointer<IntlTest> test(createGenderInfoTest());
174             callTest(*test, par);
175           }
176           break;
177         case 44:
178           name = "CompactDecimalFormatTest";
179           if (exec) {
180             logln("CompactDecimalFormatTest test---");
181             logln(UnicodeString(""));
182             LocalPointer<IntlTest> test(createCompactDecimalFormatTest());
183             callTest(*test, par);
184           }
185           break;
186         TESTCLASS(45,RegionTest);
187         case 46:
188 #if !UCONFIG_NO_BREAK_ITERATION
189           name = "RelativeDateTimeFormatterTest";
190           if (exec) {
191             logln("RelativeDateTimeFormatterTest test---");
192             logln(UnicodeString(""));
193             LocalPointer<IntlTest> test(createRelativeDateTimeFormatterTest());
194             callTest(*test, par);
195           }
196 #endif
197           break;
198         case 47:
199           name = "MeasureFormatTest";
200           if (exec) {
201             logln("MeasureFormatTest test---");
202             logln(UnicodeString(""));
203             LocalPointer<IntlTest> test(createMeasureFormatTest());
204             callTest(*test, par);
205           }
206           break;
207         case 48:
208           name = "NumberFormatSpecificationTest";
209           if (exec) {
210             logln("NumberFormatSpecificationTest test---");
211             logln(UnicodeString(""));
212             LocalPointer<IntlTest> test(createNumberFormatSpecificationTest());
213             callTest(*test, par);
214           }
215           break;
216         case 49:
217           name = "ScientificNumberFormatterTest";
218           if (exec) {
219             logln("ScientificNumberFormatterTest test---");
220             logln(UnicodeString(""));
221             LocalPointer<IntlTest> test(createScientificNumberFormatterTest());
222             callTest(*test, par);
223           }
224           break;
225         TESTCLASS(50,NumberFormatDataDrivenTest);
226         TESTCLASS(51,NumberTest);
227         TESTCLASS(52,EraRulesTest);
228         case 53:
229           name = "FormattedValueTest";
230           if (exec) {
231             logln("FormattedValueTest test---");
232             logln(UnicodeString(""));
233             LocalPointer<IntlTest> test(createFormattedValueTest());
234             callTest(*test, par);
235           }
236           break;
237         case 54:
238           name = "FormattedStringBuilderTest";
239           if (exec) {
240             logln("FormattedStringBuilderTest test---");
241             logln(UnicodeString(""));
242             LocalPointer<IntlTest> test(createFormattedStringBuilderTest());
243             callTest(*test, par);
244           }
245           break;
246         case 55:
247           name = "StringSegmentTest";
248           if (exec) {
249             logln("StringSegmentTest test---");
250             logln(UnicodeString(""));
251             LocalPointer<IntlTest> test(createStringSegmentTest());
252             callTest(*test, par);
253           }
254           break;
255         case 56:
256           name = "UnitsTest";
257           if (exec) {
258             logln("UnitsTest test---");
259             logln(UnicodeString(""));
260             LocalPointer<IntlTest> test(createUnitsTest());
261             callTest(*test, par);
262           }
263           break;
264         case 57:
265           name = "UnitsDataTest";
266           if (exec) {
267             logln("UnitsDataTest test---");
268             logln(UnicodeString(""));
269             LocalPointer<IntlTest> test(createUnitsDataTest());
270             callTest(*test, par);
271           }
272           break;
273         case 58:
274           name = "UnitsRouterTest";
275           if (exec) {
276             logln("UnitsRouterTest test---");
277             logln(UnicodeString(""));
278             LocalPointer<IntlTest> test(createUnitsRouterTest());
279             callTest(*test, par);
280           }
281           break;
282         case 59:
283           name = "DisplayOptionsTest";
284           if (exec) {
285             logln("DisplayOptionsTest test---");
286             logln(UnicodeString(""));
287             LocalPointer<IntlTest> test(createDisplayOptionsTest());
288             callTest(*test, par);
289           }
290           break;
291 #if !UCONFIG_NO_MF2
292         TESTCLASS(60,TestMessageFormat2);
293 #endif
294         default: name = ""; break; //needed to end loop
295     }
296     if (exec) {
297         // restore saved Locale and TimeZone
298         TimeZone::adoptDefault(saveDefaultTimeZone);
299         UErrorCode status = U_ZERO_ERROR;
300         Locale::setDefault( saveDefaultLocale, status );
301         if (U_FAILURE(status)) {
302             errln("itformat: couldn't re-set default Locale!");
303         }
304     }
305 }
306 
307 #endif /* #if !UCONFIG_NO_FORMATTING */
308