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) 1998-2016, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 ********************************************************************/
8
9 /**
10 * MajorTestLevel is the top level test class for everything in the directory "IntlWork".
11 */
12
13 /***********************************************************************
14 * Modification history
15 * Date Name Description
16 * 02/14/2001 synwee Release collation for testing.
17 ***********************************************************************/
18
19 #include "unicode/utypes.h"
20 #include "unicode/localpointer.h"
21 #include "itmajor.h"
22
23 #include "itutil.h"
24 #include "tscoll.h"
25 #include "itformat.h"
26 #include "ittrans.h"
27 #include "itrbbi.h"
28 #include "itrbnf.h"
29 #include "itrbnfp.h"
30 #include "itrbnfrt.h"
31 #include "itspoof.h"
32 #include "normconf.h"
33 #include "regextst.h"
34 #include "tstnorm.h"
35 #include "canittst.h"
36 #include "icusvtst.h"
37 #include "testidna.h"
38 #include "convtest.h"
39 #include "csdetest.h"
40
41 extern IntlTest *createBiDiConformanceTest();
42
43 #define CASE_SUITE(id, suite) case id: \
44 name = #suite; \
45 if(exec) { \
46 logln(#suite "---"); \
47 suite test; \
48 callTest(test, par); \
49 } \
50 break
51
runIndexedTest(int32_t index,UBool exec,const char * & name,char * par)52 void MajorTestLevel::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par )
53 {
54 switch (index) {
55 case 0: name = "utility";
56 if (exec) {
57 logln("TestSuite Utilities---"); logln();
58 IntlTestUtilities test;
59 callTest( test, par );
60 }
61 break;
62
63 case 1: name = "normalize";
64 #if !UCONFIG_NO_NORMALIZATION
65 if (exec) {
66 logln("TestSuite Normalize---"); logln();
67 IntlTestNormalize test;
68 callTest( test, par );
69 }
70 #endif
71 break;
72
73 case 2: name = "collate";
74 #if !UCONFIG_NO_COLLATION
75 if (exec) {
76 logln("TestSuite Collator---"); logln();
77 IntlTestCollator test;
78 callTest( test, par );
79 }
80 #endif
81 break;
82
83 case 3: name = "regex";
84 #if !UCONFIG_NO_REGULAR_EXPRESSIONS
85 if (exec) {
86 logln("TestSuite Regex---"); logln();
87 RegexTest test;
88 callTest( test, par );
89 }
90 #endif
91 break;
92
93 case 4: name = "format";
94 #if !UCONFIG_NO_FORMATTING
95 if (exec) {
96 logln("TestSuite Format---"); logln();
97 IntlTestFormat test;
98 callTest( test, par );
99 }
100 #endif
101 break;
102
103 case 5: name = "translit";
104 #if !UCONFIG_NO_TRANSLITERATION
105 if (exec) {
106 logln("TestSuite Transliterator---"); logln();
107 IntlTestTransliterator test;
108 callTest( test, par );
109 }
110 #endif
111 break;
112
113 case 6: name = "rbbi";
114 #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_REGULAR_EXPRESSIONS
115 if (exec) {
116 logln("TestSuite RuleBasedBreakIterator---"); logln();
117 IntlTestRBBI test;
118 callTest( test, par );
119 }
120 #endif
121 break;
122 case 7: name = "rbnf";
123 #if !UCONFIG_NO_FORMATTING
124 if (exec) {
125 logln("TestSuite RuleBasedNumberFormat----"); logln();
126 IntlTestRBNF test;
127 callTest(test, par);
128 }
129 #endif
130 break;
131 case 8: name = "rbnfrt";
132 #if !UCONFIG_NO_FORMATTING
133 if (exec) {
134 logln("TestSuite RuleBasedNumberFormat RT----"); logln();
135 RbnfRoundTripTest test;
136 callTest(test, par);
137 }
138 #endif
139 break;
140
141 case 9: name = "icuserv";
142 #if !UCONFIG_NO_SERVICE
143 if (exec) {
144 logln("TestSuite ICUService---"); logln();
145 ICUServiceTest test;
146 callTest(test, par);
147 }
148 #endif
149 break;
150 case 10: name = "idna";
151 #if !UCONFIG_NO_IDNA && !UCONFIG_NO_TRANSLITERATION
152 if(exec){
153 logln("TestSuite IDNA----"); logln();
154 TestIDNA test;
155 callTest(test,par);
156 }
157 #endif
158 break;
159 case 11: name = "convert";
160 #if !UCONFIG_NO_LEGACY_CONVERSION
161 if (exec) {
162 logln("TestSuite Conversion---"); logln();
163 ConversionTest test;
164 callTest( test, par );
165 }
166 #endif
167 break;
168
169 case 12: name = "rbnfp";
170 #if !UCONFIG_NO_FORMATTING
171 if (exec) {
172 logln("TestSuite RuleBasedNumberParse ----"); logln();
173 IntlTestRBNFParse test;
174 callTest(test, par);
175 }
176 #endif
177 break;
178
179 case 13: name = "csdet";
180 if (exec) {
181 logln("TestSuite CharsetDetection---"); logln();
182 CharsetDetectionTest test;
183 callTest(test, par);
184 }
185
186 break;
187
188 case 14:
189 #if !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_NORMALIZATION && !UCONFIG_NO_FILE_IO
190 name = "spoof";
191 if (exec) {
192 logln("TestSuite SpoofDetection---"); logln();
193 IntlTestSpoof test;
194 callTest(test, par);
195 }
196 #else
197 name = "skip";
198 #endif
199 break;
200
201 case 15: name = "bidi";
202 if (exec) {
203 logln("TestSuite bidi---"); logln();
204 LocalPointer<IntlTest> test(createBiDiConformanceTest());
205 callTest(*test, par);
206 }
207
208 break;
209
210 default: name = ""; break;
211 }
212
213
214 }
215
runIndexedTest(int32_t index,UBool exec,const char * & name,char * par)216 void IntlTestNormalize::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par )
217 {
218 if(exec) logln("TestSuite Normalize:");
219 #if UCONFIG_NO_NORMALIZATION
220 name="";
221 #else
222 switch (index) {
223 CASE_SUITE(0, BasicNormalizerTest);
224 CASE_SUITE(1, NormalizerConformanceTest); // this takes a long time
225 CASE_SUITE(2, CanonicalIteratorTest);
226 default:
227 name="";
228 break;
229 }
230 #endif
231 }
232