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