1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /********************************************************************
4  * COPYRIGHT:
5  * Copyright (c) 1997-2010, International Business Machines Corporation and
6  * others. All Rights Reserved.
7  ********************************************************************/
8 
9 /**
10  * Normalizer basic tests
11  */
12 
13 #ifndef _TSTNORM
14 #define _TSTNORM
15 
16 #include "unicode/utypes.h"
17 
18 #if !UCONFIG_NO_NORMALIZATION
19 
20 #include "unicode/normlzr.h"
21 #include "intltest.h"
22 
23 class BasicNormalizerTest : public IntlTest {
24 public:
25     BasicNormalizerTest();
26     virtual ~BasicNormalizerTest();
27 
28     void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
29 
30     void TestHangulCompose(void);
31     void TestHangulDecomp(void);
32     void TestPrevious(void);
33     void TestDecomp(void);
34     void TestCompatDecomp(void);
35     void TestCanonCompose(void);
36     void TestCompatCompose(void);
37     void TestTibetan(void);
38     void TestCompositionExclusion(void);
39     void TestZeroIndex(void);
40     void TestVerisign(void);
41     void TestPreviousNext(void);
42     void TestNormalizerAPI(void);
43     void TestConcatenate(void);
44     void TestCompare(void);
45     void FindFoldFCDExceptions();
46     void TestSkippable();
47     void TestCustomComp();
48     void TestCustomFCC();
49     void TestFilteredNormalizer2Coverage();
50     void TestComposeUTF8WithEdits();
51     void TestDecomposeUTF8WithEdits();
52     void TestLowMappingToEmpty_D();
53     void TestLowMappingToEmpty_FCD();
54     void TestNormalizeIllFormedText();
55     void TestComposeJamoTBase();
56     void TestComposeBoundaryAfter();
57 
58 private:
59     UnicodeString canonTests[24][3];
60     UnicodeString compatTests[11][3];
61     UnicodeString hangulCanon[2][3];
62 
63     void
64     TestPreviousNext(const UChar *src, int32_t srcLength,
65                      const UChar32 *expext, int32_t expectLength,
66                      const int32_t *expectIndex, // its length=expectLength+1
67                      int32_t srcMiddle, int32_t expectMiddle,
68                      const char *moves,
69                      UNormalizationMode mode,
70                      const char *name);
71 
72     int32_t countFoldFCDExceptions(uint32_t foldingOptions);
73 
74     //------------------------------------------------------------------------
75     // Internal utilities
76     //
77     void backAndForth(Normalizer* iter, const UnicodeString& input);
78 
79     void staticTest(UNormalizationMode mode, int options,
80                     UnicodeString tests[][3], int length, int outCol);
81 
82     void iterateTest(Normalizer* iter, UnicodeString tests[][3], int length, int outCol);
83 
84     void assertEqual(const UnicodeString& input,
85              const UnicodeString& expected,
86              Normalizer* result,
87              const UnicodeString& errPrefix);
88 
89     static UnicodeString hex(UChar ch);
90     static UnicodeString hex(const UnicodeString& str);
91 
92     void checkLowMappingToEmpty(const Normalizer2 &n2);
93 };
94 
95 #endif /* #if !UCONFIG_NO_NORMALIZATION */
96 
97 #endif // _TSTNORM
98