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