1/********************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 1997-2003, 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
21class BasicNormalizerTest : public IntlTest {
22public:
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
46private:
47    UnicodeString canonTests[24][3];
48    UnicodeString compatTests[11][3];
49    UnicodeString hangulCanon[2][3];
50
51    void
52    TestPreviousNext(const UChar *src, int32_t srcLength,
53                     const UChar32 *expext, int32_t expectLength,
54                     const int32_t *expectIndex, // its length=expectLength+1
55                     int32_t srcMiddle, int32_t expectMiddle,
56                     const char *moves,
57                     UNormalizationMode mode,
58                     const char *name);
59
60    int32_t countFoldFCDExceptions(uint32_t foldingOptions);
61
62    //------------------------------------------------------------------------
63    // Internal utilities
64    //
65    void backAndForth(Normalizer* iter, const UnicodeString& input);
66
67    void staticTest(UNormalizationMode mode, int options,
68                    UnicodeString tests[][3], int length, int outCol);
69
70    void iterateTest(Normalizer* iter, UnicodeString tests[][3], int length, int outCol);
71
72    void assertEqual(const UnicodeString& input,
73             const UnicodeString& expected,
74             Normalizer* result,
75             const UnicodeString& errPrefix);
76
77    static UnicodeString hex(UChar ch);
78    static UnicodeString hex(const UnicodeString& str);
79
80};
81
82#endif /* #if !UCONFIG_NO_NORMALIZATION */
83
84#endif // _TSTNORM
85