#ifndef RBBITEST_H
#define RBBITEST_H
#include "unicode/utypes.h"
#if !UCONFIG_NO_BREAK_ITERATION
#include "intltest.h"
#include "unicode/brkiter.h"
class Vector;
class Enumeration;
class BITestData;
struct TestParams;
class RBBIMonkeyKind;
class RBBITest: public IntlTest {
public:
RBBITest();
virtual ~RBBITest();
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
void TestStatusReturn();
void TestLineBreakData();
void TestSentenceInvariants();
void TestCharacterInvariants();
void TestWordInvariants();
void TestEmptyString();
void TestGetAvailableLocales();
void TestGetDisplayName();
void TestEndBehaviour();
void TestBug4153072();
void TestJapaneseLineBreak();
void TestThaiLineBreak();
void TestMixedThaiLineBreak();
void TestMaiyamok();
void TestThaiWordBreak();
void TestMonkey(char *params);
void TestExtended();
UChar *ReadAndConvertFile(const char *fileName, int &ulen, UErrorCode &status);
void executeTest(TestParams *);
void TestWordBreaks();
void TestWordBoundary();
void TestLineBreaks();
void TestSentBreaks();
void TestBug3818();
void TestJapaneseWordBreak();
private:
void generalIteratorTest(RuleBasedBreakIterator& bi, BITestData &td);
void testFirstAndNext(RuleBasedBreakIterator& bi, BITestData &td);
void testLastAndPrevious(RuleBasedBreakIterator& bi, BITestData &td);
void testFollowing(RuleBasedBreakIterator& bi, BITestData &td);
void testPreceding(RuleBasedBreakIterator& bi, BITestData &td);
void testIsBoundary(RuleBasedBreakIterator& bi, BITestData &td);
void doMultipleSelectionTest(RuleBasedBreakIterator& iterator, BITestData &td);
void doBreakInvariantTest(BreakIterator& tb, UnicodeString& testChars);
void doOtherInvariantTest(BreakIterator& tb, UnicodeString& testChars);
void RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed, int32_t loopCount);
};
#endif
#endif