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