]>
Commit | Line | Data |
---|---|---|
b75a7d8f A |
1 | /* |
2 | ********************************************************************** | |
4388f060 | 3 | * Copyright (C) 1999-2011, International Business Machines |
b75a7d8f A |
4 | * Corporation and others. All Rights Reserved. |
5 | ********************************************************************** | |
6 | * Date Name Description | |
7 | * 11/10/99 aliu Creation. | |
8 | ********************************************************************** | |
9 | */ | |
10 | #ifndef TRANSTST_H | |
11 | #define TRANSTST_H | |
12 | ||
13 | #include "unicode/utypes.h" | |
14 | ||
15 | #if !UCONFIG_NO_TRANSLITERATION | |
16 | ||
17 | #include "unicode/translit.h" | |
18 | #include "intltest.h" | |
19 | ||
20 | /** | |
21 | * @test | |
22 | * @summary General test of Transliterator | |
23 | */ | |
24 | class TransliteratorTest : public IntlTest { | |
25 | ||
26 | public: | |
27 | TransliteratorTest(); | |
374ca955 | 28 | virtual ~TransliteratorTest(); |
b75a7d8f A |
29 | |
30 | private: | |
31 | void runIndexedTest(int32_t index, UBool exec, const char* &name, | |
32 | char* par=NULL); | |
33 | ||
34 | void TestInstantiation(void); | |
35 | ||
36 | void TestSimpleRules(void); | |
37 | ||
38 | void TestInlineSet(void); | |
39 | ||
40 | void TestAnchors(void); | |
41 | ||
42 | void TestPatternQuoting(void); | |
43 | ||
44 | /** | |
45 | * Create some inverses and confirm that they work. We have to be | |
46 | * careful how we do this, since the inverses will not be true | |
47 | * inverses -- we can't throw any random string at the composition | |
48 | * of the transliterators and expect the identity function. F x | |
49 | * F' != I. However, if we are careful about the input, we will | |
50 | * get the expected results. | |
51 | */ | |
52 | void TestRuleBasedInverse(void); | |
53 | ||
54 | /** | |
55 | * Basic test of keyboard. | |
56 | */ | |
57 | void TestKeyboard(void); | |
58 | ||
59 | /** | |
60 | * Basic test of keyboard with cursor. | |
61 | */ | |
62 | void TestKeyboard2(void); | |
63 | ||
64 | /** | |
65 | * Test keyboard transliteration with back-replacement. | |
66 | */ | |
67 | void TestKeyboard3(void); | |
68 | ||
69 | void keyboardAux(const Transliterator& t, | |
70 | const char* DATA[], int32_t DATA_length); | |
71 | ||
72 | void TestArabic(void); | |
73 | ||
74 | /** | |
75 | * Compose the Kana transliterator forward and reverse and try | |
76 | * some strings that should come out unchanged. | |
77 | */ | |
78 | void TestCompoundKana(void); | |
79 | ||
80 | /** | |
81 | * Compose the hex transliterators forward and reverse. | |
82 | */ | |
83 | void TestCompoundHex(void); | |
84 | ||
85 | /** | |
86 | * Do some basic tests of filtering. | |
87 | */ | |
88 | void TestFiltering(void); | |
89 | ||
90 | /** | |
91 | * Regression test for bugs found in Greek transliteration. | |
92 | */ | |
93 | void TestJ277(void); | |
94 | ||
95 | /** | |
96 | * Prefix, suffix support in hex transliterators. | |
97 | */ | |
98 | void TestJ243(void); | |
99 | ||
100 | /** | |
101 | * Parsers need better syntax error messages. | |
102 | */ | |
103 | void TestJ329(void); | |
104 | ||
105 | /** | |
106 | * Test segments and segment references. | |
107 | */ | |
108 | void TestSegments(void); | |
109 | ||
110 | /** | |
111 | * Test cursor positioning outside of the key | |
112 | */ | |
113 | void TestCursorOffset(void); | |
114 | ||
115 | /** | |
116 | * Test zero length and > 1 char length variable values. Test | |
117 | * use of variable refs in UnicodeSets. | |
118 | */ | |
119 | void TestArbitraryVariableValues(void); | |
120 | ||
121 | /** | |
122 | * Confirm that the contextStart, contextLimit, start, and limit | |
123 | * behave correctly. J474. | |
124 | */ | |
125 | void TestPositionHandling(void); | |
126 | ||
127 | /** | |
128 | * Test the Hiragana-Katakana transliterator. | |
129 | */ | |
130 | void TestHiraganaKatakana(void); | |
131 | ||
132 | /** | |
133 | * Test cloning / copy constructor of RBT. | |
134 | */ | |
135 | void TestCopyJ476(void); | |
136 | ||
137 | /** | |
138 | * Test inter-Indic transliterators. These are composed. | |
139 | * ICU4C Jitterbug 483. | |
140 | */ | |
141 | void TestInterIndic(void); | |
142 | ||
143 | /** | |
144 | * Test filter syntax in IDs. (J918) | |
145 | */ | |
146 | void TestFilterIDs(void); | |
147 | ||
148 | /** | |
149 | * Test the case mapping transliterators. | |
150 | */ | |
151 | void TestCaseMap(void); | |
152 | ||
153 | /** | |
154 | * Test the name mapping transliterators. | |
155 | */ | |
156 | void TestNameMap(void); | |
157 | ||
158 | /** | |
159 | * Test liberalized ID syntax. 1006c | |
160 | */ | |
161 | void TestLiberalizedID(void); | |
162 | /** | |
163 | * Test Jitterbug 912 | |
164 | */ | |
165 | void TestCreateInstance(void); | |
166 | ||
167 | void TestNormalizationTransliterator(void); | |
168 | ||
169 | void TestCompoundRBT(void); | |
170 | ||
171 | void TestCompoundFilter(void); | |
172 | ||
173 | void TestRemove(void); | |
174 | ||
175 | void TestToRules(void); | |
176 | ||
177 | void TestContext(void); | |
178 | ||
179 | void TestSupplemental(void); | |
180 | ||
181 | void TestQuantifier(void); | |
182 | ||
183 | /** | |
184 | * Test Source-Target/Variant. | |
185 | */ | |
186 | void TestSTV(void); | |
187 | ||
188 | void TestCompoundInverse(void); | |
189 | ||
190 | void TestNFDChainRBT(void); | |
191 | ||
192 | /** | |
193 | * Inverse of "Null" should be "Null". (J21) | |
194 | */ | |
195 | void TestNullInverse(void); | |
196 | ||
197 | /** | |
198 | * Check ID of inverse of alias. (J22) | |
199 | */ | |
200 | void TestAliasInverseID(void); | |
201 | ||
202 | /** | |
203 | * Test IDs of inverses of compound transliterators. (J20) | |
204 | */ | |
205 | void TestCompoundInverseID(void); | |
206 | ||
207 | /** | |
208 | * Test undefined variable. | |
209 | */ | |
210 | void TestUndefinedVariable(void); | |
211 | ||
212 | /** | |
213 | * Test empty context. | |
214 | */ | |
215 | void TestEmptyContext(void); | |
216 | ||
217 | /** | |
218 | * Test compound filter ID syntax | |
219 | */ | |
220 | void TestCompoundFilterID(void); | |
221 | ||
222 | /** | |
223 | * Test new property set syntax | |
224 | */ | |
225 | void TestPropertySet(void); | |
226 | ||
227 | /** | |
228 | * Test various failure points of the new 2.0 engine. | |
229 | */ | |
230 | void TestNewEngine(void); | |
231 | ||
232 | /** | |
233 | * Test quantified segment behavior. We want: | |
234 | * ([abc])+ > x $1 x; applied to "cba" produces "xax" | |
235 | */ | |
236 | void TestQuantifiedSegment(void); | |
237 | ||
238 | /* Devanagari-Latin rules Test */ | |
239 | void TestDevanagariLatinRT(void); | |
240 | ||
241 | /* Telugu-Latin rules Test */ | |
242 | void TestTeluguLatinRT(void); | |
243 | ||
244 | /* Gujarati-Latin rules Test */ | |
245 | void TestGujaratiLatinRT(void); | |
246 | ||
247 | /* Sanskrit-Latin rules Test */ | |
248 | void TestSanskritLatinRT(void); | |
249 | ||
250 | /* Test Compound Indic-Latin transliterators*/ | |
251 | void TestCompoundLatinRT(void); | |
252 | ||
253 | /* Test bindi and tippi for Gurmukhi */ | |
254 | void TestGurmukhiDevanagari(void); | |
255 | /** | |
256 | * Test instantiation from a locale. | |
257 | */ | |
258 | void TestLocaleInstantiation(void); | |
259 | ||
260 | /** | |
261 | * Test title case handling of accent (should ignore accents) | |
262 | */ | |
263 | void TestTitleAccents(void); | |
264 | ||
265 | /** | |
266 | * Basic test of a locale resource based rule. | |
267 | */ | |
268 | void TestLocaleResource(void); | |
269 | ||
270 | /** | |
271 | * Make sure parse errors reference the right line. | |
272 | */ | |
273 | void TestParseError(void); | |
274 | ||
275 | /** | |
276 | * Make sure sets on output are disallowed. | |
277 | */ | |
278 | void TestOutputSet(void); | |
279 | ||
280 | /** | |
281 | * Test the use variable range pragma, making sure that use of | |
282 | * variable range characters is detected and flagged as an error. | |
283 | */ | |
284 | void TestVariableRange(void); | |
285 | ||
286 | /** | |
287 | * Test invalid post context error handling | |
288 | */ | |
289 | void TestInvalidPostContext(void); | |
290 | ||
291 | /** | |
292 | * Test ID form variants | |
293 | */ | |
294 | void TestIDForms(void); | |
295 | ||
296 | /** | |
297 | * Mark's toRules test. | |
298 | */ | |
299 | void TestToRulesMark(void); | |
300 | ||
301 | /** | |
302 | * Test Escape and Unescape transliterators. | |
303 | */ | |
304 | void TestEscape(void); | |
305 | ||
306 | void TestAnchorMasking(void); | |
307 | ||
308 | /** | |
309 | * Make sure display names of variants look reasonable. | |
310 | */ | |
311 | void TestDisplayName(void); | |
312 | ||
313 | /** | |
314 | * Check to see if case mapping works correctly. | |
315 | */ | |
316 | void TestSpecialCases(void); | |
317 | /** | |
318 | * Check to see that incremental gets at least part way through a reasonable string. | |
319 | */ | |
320 | void TestIncrementalProgress(void); | |
321 | ||
322 | /** | |
323 | * Check that casing handles surrogates. | |
324 | */ | |
325 | void TestSurrogateCasing (void); | |
326 | ||
327 | void TestFunction(void); | |
328 | ||
329 | void TestInvalidBackRef(void); | |
330 | ||
331 | void TestMulticharStringSet(void); | |
332 | ||
333 | void TestUserFunction(void); | |
334 | ||
335 | void TestAnyX(void); | |
336 | ||
729e4ab9 A |
337 | void TestAny(void); |
338 | ||
b75a7d8f A |
339 | void TestSourceTargetSet(void); |
340 | ||
4388f060 | 341 | void TestPatternWhiteSpace(void); |
b75a7d8f A |
342 | |
343 | void TestAllCodepoints(void); | |
344 | ||
345 | void TestBoilerplate(void); | |
346 | ||
347 | void TestAlternateSyntax(void); | |
348 | ||
46f4442e A |
349 | void TestRuleStripping(void); |
350 | ||
351 | void TestHalfwidthFullwidth(void); | |
352 | ||
353 | void TestThai(void); | |
354 | ||
73c04bcf A |
355 | /** |
356 | * Tests the multiple-pass syntax | |
357 | */ | |
358 | void TestBeginEnd(void); | |
359 | ||
360 | /** | |
361 | * Tests that toRules() works right with the multiple-pass syntax | |
362 | */ | |
363 | void TestBeginEndToRules(void); | |
364 | ||
365 | /** | |
366 | * Tests the registerAlias() function | |
367 | */ | |
368 | void TestRegisterAlias(void); | |
369 | ||
b75a7d8f A |
370 | //====================================================================== |
371 | // Support methods | |
372 | //====================================================================== | |
373 | protected: | |
374 | void expectT(const UnicodeString& id, | |
375 | const UnicodeString& source, | |
376 | const UnicodeString& expectedResult); | |
377 | ||
378 | void expect(const UnicodeString& rules, | |
379 | const UnicodeString& source, | |
380 | const UnicodeString& expectedResult, | |
381 | UTransPosition *pos=0); | |
382 | ||
73c04bcf A |
383 | void expect(const UnicodeString& id, |
384 | const UnicodeString& rules, | |
385 | const UnicodeString& source, | |
386 | const UnicodeString& expectedResult, | |
387 | UTransPosition *pos=0); | |
388 | ||
b75a7d8f A |
389 | void expect(const Transliterator& t, |
390 | const UnicodeString& source, | |
391 | const UnicodeString& expectedResult, | |
392 | const Transliterator& reverseTransliterator); | |
393 | ||
394 | void expect(const Transliterator& t, | |
395 | const UnicodeString& source, | |
396 | const UnicodeString& expectedResult, | |
397 | UTransPosition *pos=0); | |
398 | ||
399 | void expectAux(const UnicodeString& tag, | |
400 | const UnicodeString& source, | |
401 | const UnicodeString& result, | |
402 | const UnicodeString& expectedResult); | |
403 | ||
404 | virtual void expectAux(const UnicodeString& tag, | |
405 | const UnicodeString& summary, UBool pass, | |
406 | const UnicodeString& expectedResult); | |
407 | ||
408 | static UnicodeString& formatInput(UnicodeString &appendTo, | |
409 | const UnicodeString& input, | |
410 | const UTransPosition& pos); | |
411 | ||
412 | void checkRules(const UnicodeString& label, Transliterator& t2, | |
413 | const UnicodeString& testRulesForward); | |
414 | void CheckIncrementalAux(const Transliterator* t, | |
415 | const UnicodeString& input); | |
416 | ||
73c04bcf A |
417 | void reportParseError(const UnicodeString& message, const UParseError& parseError, const UErrorCode& status); |
418 | ||
b75a7d8f A |
419 | |
420 | const UnicodeString DESERET_DEE; | |
421 | const UnicodeString DESERET_dee; | |
422 | ||
423 | }; | |
424 | ||
425 | #endif /* #if !UCONFIG_NO_TRANSLITERATION */ | |
426 | ||
427 | #endif |