Imported Upstream version 58.1
[platform/upstream/icu.git] / source / test / intltest / itmajor.cpp
1 // Copyright (C) 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
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
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 }