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 } 232