]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/test/intltest/rbbitst.h
ICU-57166.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / rbbitst.h
index e67b440037e7b0d993e5386541dbf76d7d41ba39..48b4aa2199f487f70db274bc013e44a7c19c08fc 100644 (file)
@@ -1,13 +1,11 @@
-/********************************************************************
- * COPYRIGHT: 
- * Copyright (c) 1999-2003, 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();
@@ -61,27 +51,39 @@ public:
     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 TestLineBreaks();
+    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().
@@ -109,16 +111,35 @@ private:
      **/
     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, 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 */