// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/****************************************************************************
* COPYRIGHT:
* Copyright (c) 2001-2008, International Business Machines Corporation and others
* All Rights Reserved.
***************************************************************************/
#ifndef _STRSRCH_H
#define _STRSRCH_H
#include "unicode/utypes.h"
#if !UCONFIG_NO_COLLATION
#include "unicode/tblcoll.h"
#include "unicode/brkiter.h"
#include "intltest.h"
#include "unicode/usearch.h"
struct SearchData;
typedef struct SearchData SearchData;
class StringSearchTest: public IntlTest
{
public:
StringSearchTest();
virtual ~StringSearchTest();
void runIndexedTest(int32_t index, UBool exec, const char* &name,
char* par = NULL);
#if !UCONFIG_NO_BREAK_ITERATION
private:
RuleBasedCollator *m_en_us_;
RuleBasedCollator *m_fr_fr_;
RuleBasedCollator *m_de_;
RuleBasedCollator *m_es_;
BreakIterator *m_en_wordbreaker_;
BreakIterator *m_en_characterbreaker_;
RuleBasedCollator * getCollator(const char *collator);
BreakIterator * getBreakIterator(const char *breaker);
char * toCharString(const UnicodeString &text);
Collator::ECollationStrength getECollationStrength(
const UCollationStrength &strength) const;
UBool assertEqualWithStringSearch( StringSearch *strsrch,
const SearchData *search);
UBool assertEqual(const SearchData *search);
UBool assertCanonicalEqual(const SearchData *search);
UBool assertEqualWithAttribute(const SearchData *search,
USearchAttributeValue canonical,
USearchAttributeValue overlap);
void TestOpenClose();
void TestInitialization();
void TestBasic();
void TestNormExact();
void TestStrength();
#if !UCONFIG_NO_BREAK_ITERATION
void TestBreakIterator();
#endif
void TestVariable();
void TestOverlap();
void TestCollator();
void TestPattern();
void TestText();
void TestCompositeBoundaries();
void TestGetSetOffset();
void TestGetSetAttribute();
void TestGetMatch();
void TestSetMatch();
void TestReset();
void TestSupplementary();
void TestContraction();
void TestIgnorable();
void TestCanonical();
void TestNormCanonical();
void TestStrengthCanonical();
#if !UCONFIG_NO_BREAK_ITERATION
void TestBreakIteratorCanonical();
#endif
void TestVariableCanonical();
void TestOverlapCanonical();
void TestCollatorCanonical();
void TestPatternCanonical();
void TestTextCanonical();
void TestCompositeBoundariesCanonical();
void TestGetSetOffsetCanonical();
void TestSupplementaryCanonical();
void TestContractionCanonical();
void TestUClassID();
void TestSubclass();
void TestCoverage();
void TestDiacriticMatch();
#endif
};
#endif /* #if !UCONFIG_NO_COLLATION */
#endif