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
23class BasicNormalizerTest : public IntlTest {
24public:
25    BasicNormalizerTest();
26    virtual ~BasicNormalizerTest();
27
28    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
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 TestNormalizeUTF8WithEdits();
51    void TestLowMappingToEmpty_D();
52    void TestLowMappingToEmpty_FCD();
53    void TestNormalizeIllFormedText();
54    void TestComposeJamoTBase();
55    void TestComposeBoundaryAfter();
56
57private:
58    UnicodeString canonTests[24][3];
59    UnicodeString compatTests[11][3];
60    UnicodeString hangulCanon[2][3];
61
62    void
63    TestPreviousNext(const UChar *src, int32_t srcLength,
64                     const UChar32 *expext, int32_t expectLength,
65                     const int32_t *expectIndex, // its length=expectLength+1
66                     int32_t srcMiddle, int32_t expectMiddle,
67                     const char *moves,
68                     UNormalizationMode mode,
69                     const char *name);
70
71    int32_t countFoldFCDExceptions(uint32_t foldingOptions);
72
73    //------------------------------------------------------------------------
74    // Internal utilities
75    //
76    void backAndForth(Normalizer* iter, const UnicodeString& input);
77
78    void staticTest(UNormalizationMode mode, int options,
79                    UnicodeString tests[][3], int length, int outCol);
80
81    void iterateTest(Normalizer* iter, UnicodeString tests[][3], int length, int outCol);
82
83    void assertEqual(const UnicodeString& input,
84             const UnicodeString& expected,
85             Normalizer* result,
86             const UnicodeString& errPrefix);
87
88    static UnicodeString hex(UChar ch);
89    static UnicodeString hex(const UnicodeString& str);
90
91    void checkLowMappingToEmpty(const Normalizer2 &n2);
92};
93
94#endif /* #if !UCONFIG_NO_NORMALIZATION */
95
96#endif // _TSTNORM
97