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