-/********************************************************************
- * COPYRIGHT:
- * Copyright (c) 1999-2004, International Business Machines Corporation and
- * others. All Rights Reserved.
- ********************************************************************/
-/************************************************************************
-* Date Name Description
-* 12/15/99 Madhu Creation.
-* 01/12/2000 Madhu Updated for changed API and added new tests
-************************************************************************/
+/*************************************************************************
+ * Copyright (c) 1999-2016, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ *************************************************************************
+ * Date Name Description
+ * 12/15/99 Madhu Creation.
+ * 01/12/2000 Madhu Updated for changed API and added new tests
+ ************************************************************************/
#ifndef RBBITEST_H
#include "intltest.h"
#include "unicode/brkiter.h"
+#include "unicode/rbbi.h"
-class Vector;
class Enumeration;
class BITestData;
struct TestParams;
class RBBIMonkeyKind;
+U_NAMESPACE_BEGIN
+class UVector32;
+U_NAMESPACE_END
+
/**
* Test the RuleBasedBreakIterator class giving different rules
*/
class RBBITest: public IntlTest {
public:
-
+
RBBITest();
virtual ~RBBITest();
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
-
+
/**
* Tests rule status return values
- **/
+ **/
void TestStatusReturn();
- /**
- * Run the Unicode Line Break test data.
- **/
- void TestLineBreakData();
-
- /**
- * Run tests from external test data file.
- */
-
- void TestSentenceInvariants();
- void TestCharacterInvariants();
- void TestWordInvariants();
void TestEmptyString();
void TestGetAvailableLocales();
void TestGetDisplayName();
void TestBug4153072();
void TestJapaneseLineBreak();
void TestThaiLineBreak();
- void TestMixedThaiLineBreak();
- void TestMaiyamok();
- void TestThaiWordBreak();
+ void TestMixedThaiLineBreak();
+ void TestMaiyamok();
void TestMonkey(char *params);
void TestExtended();
- UChar *ReadAndConvertFile(const char *fileName, int &ulen, UErrorCode &status);
- void executeTest(TestParams *);
+ UChar *ReadAndConvertFile(const char *fileName, int &ulen, const char *encoding, UErrorCode &status);
+ void executeTest(TestParams *, UErrorCode &status);
void TestWordBreaks();
void TestWordBoundary();
void TestSentBreaks();
void TestBug3818();
void TestJapaneseWordBreak();
-
-
+ void TestTrieDict();
+ void TestUnicodeFiles();
+ void TestBug5775();
+ void TestTailoredBreaks();
+ void TestDictRules();
+ void TestBug5532();
+ void TestBug9983();
+
+ void TestDebug();
+ void TestProperties();
+
/***********************/
private:
/**
* internal methods to prepare test data
**/
-
+
/**
- * Perform tests of BreakIterator forward and backward functionality
+ * Perform tests of BreakIterator forward and backward functionality
* on different kinds of iterators (word, sentence, line and character).
* It tests the methods first(), next(), current(), preceding(), following()
* previous() and isBoundary().
**/
void testIsBoundary(RuleBasedBreakIterator& bi, BITestData &td);
/**
- * Internal method to perform tests of BreakIterator multiple selection functionality
+ * Internal method to perform tests of BreakIterator multiple selection functionality
* on different kinds of iterators (word, sentence, line and character)
**/
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, UBool useUText);
- void RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed, int32_t loopCount);
+ // Run one of the Unicode Consortium boundary test data files.
+ void runUnicodeTestData(const char *fileName, RuleBasedBreakIterator *bi);
+ // Run a single test case from one of the Unicode Consortium test files.
+ void checkUnicodeTestCase(const char *testFileName, int lineNumber,
+ const UnicodeString &testString,
+ UVector32 *breakPositions,
+ RuleBasedBreakIterator *bi);
+
+ // Run the actual tests for TestTailoredBreaks()
+ void TBTest(BreakIterator* brkitr, int type, const char *locale, const char* escapedText,
+ const int32_t *expectOffsets, int32_t expectOffsetsCount);
+
+ /** Filter for test cases from the Unicode test data files.
+ * Some need to be skipped because ICU is unable to fully implement the
+ * Unicode boundary specifications.
+ * @param testCase the test data string.
+ * @param fileName the Unicode test data file name.
+ * @return FALSE if the test case should be run, TRUE if it should be skipped.
+ */
+ UBool testCaseIsKnownIssue(const UnicodeString &testCase, const char *fileName);
};
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */