1/****************************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 2001-2008, International Business Machines Corporation and others
4 * All Rights Reserved.
5 ***************************************************************************/
6
7#ifndef _STRSRCH_H
8#define _STRSRCH_H
9
10#include "unicode/utypes.h"
11
12#if !UCONFIG_NO_COLLATION
13
14#include "unicode/tblcoll.h"
15#include "unicode/brkiter.h"
16#include "intltest.h"
17#include "unicode/usearch.h"
18
19struct SearchData;
20typedef struct SearchData SearchData;
21
22class StringSearchTest: public IntlTest
23{
24public:
25    StringSearchTest();
26    virtual ~StringSearchTest();
27
28    void runIndexedTest(int32_t index, UBool exec, const char* &name,
29                        char* par = NULL);
30#if !UCONFIG_NO_BREAK_ITERATION
31private:
32    RuleBasedCollator *m_en_us_;
33    RuleBasedCollator *m_fr_fr_;
34    RuleBasedCollator *m_de_;
35    RuleBasedCollator *m_es_;
36    BreakIterator     *m_en_wordbreaker_;
37    BreakIterator     *m_en_characterbreaker_;
38
39    RuleBasedCollator * getCollator(const char *collator);
40    BreakIterator     * getBreakIterator(const char *breaker);
41    char              * toCharString(const UnicodeString &text);
42    Collator::ECollationStrength getECollationStrength(
43                                   const UCollationStrength &strength) const;
44    UBool           assertEqualWithStringSearch(      StringSearch *strsrch,
45                                                const SearchData   *search);
46    UBool           assertEqual(const SearchData *search);
47    UBool           assertCanonicalEqual(const SearchData *search);
48    UBool           assertEqualWithAttribute(const SearchData *search,
49                                            USearchAttributeValue canonical,
50                                            USearchAttributeValue overlap);
51    void TestOpenClose();
52    void TestInitialization();
53    void TestBasic();
54    void TestNormExact();
55    void TestStrength();
56#if !UCONFIG_NO_BREAK_ITERATION
57    void TestBreakIterator();
58#endif
59    void TestVariable();
60    void TestOverlap();
61    void TestCollator();
62    void TestPattern();
63    void TestText();
64    void TestCompositeBoundaries();
65    void TestGetSetOffset();
66    void TestGetSetAttribute();
67    void TestGetMatch();
68    void TestSetMatch();
69    void TestReset();
70    void TestSupplementary();
71    void TestContraction();
72    void TestIgnorable();
73    void TestCanonical();
74    void TestNormCanonical();
75    void TestStrengthCanonical();
76#if !UCONFIG_NO_BREAK_ITERATION
77    void TestBreakIteratorCanonical();
78#endif
79    void TestVariableCanonical();
80    void TestOverlapCanonical();
81    void TestCollatorCanonical();
82    void TestPatternCanonical();
83    void TestTextCanonical();
84    void TestCompositeBoundariesCanonical();
85    void TestGetSetOffsetCanonical();
86    void TestSupplementaryCanonical();
87    void TestContractionCanonical();
88    void TestUClassID();
89    void TestSubclass();
90    void TestCoverage();
91    void TestDiacriticMatch();
92#endif
93};
94
95#endif /* #if !UCONFIG_NO_COLLATION */
96
97#endif
98