| /******************************************************************** |
| * COPYRIGHT: |
| * Copyright (c) 1997-1999, International Business Machines Corporation and |
| * others. All Rights Reserved. |
| ********************************************************************/ |
| |
| |
| #ifndef _INTLTESTTEXTBOUNDARY |
| #define _INTLTESTTEXTBOUNDARY |
| |
| |
| #include "unicode/utypes.h" |
| #include "intltest.h" |
| #include "unicode/brkiter.h" |
| |
| class Vector; |
| class Enumeration; |
| |
| /** |
| * Test the BreakIterator class and indirectly all related classes |
| */ |
| class IntlTestTextBoundary: public IntlTest { |
| public: |
| IntlTestTextBoundary(); |
| virtual ~IntlTestTextBoundary(); |
| |
| void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); |
| /** |
| * Test sentence break using generalIteratorTest() |
| **/ |
| void TestSentenceIteration(void); |
| /** |
| * Test word break using generalIteratorTest() |
| **/ |
| void TestWordIteration(void); |
| /** |
| * Test line break using generalIteratorTest() |
| **/ |
| void TestLineIteration(void); |
| /** |
| * Test character break using generalIteratorTest() |
| **/ |
| void TestCharacterIteration(void); |
| /** |
| * Test sentence break using () |
| **/ |
| void TestSentenceInvariants(void); |
| /** |
| * Test sentence break Invariants using generalIteratorTest() |
| **/ |
| void TestWordInvariants(void); |
| /** |
| * Test sentence break Invariants using generalIteratorTest() |
| **/ |
| void TestLineInvariants(void); |
| /** |
| * Test sentence break Invariants using generalIteratorTest() |
| **/ |
| void TestCharacterInvariants(void); |
| /** |
| * Test Japanese line break Invariants using generalIteratorTest() |
| **/ |
| void TestJapaneseLineBreak(void); |
| /** |
| * Test Thai line break using generalIteratorTest() |
| **/ |
| void TestThaiLineBreak(void); |
| /** |
| * Test Mixed Thai (thai with other languages like english)line break using generalIteratorTest() |
| **/ |
| void TestMixedThaiLineBreak(void); |
| /** |
| * Test Thai Line break with Maiyamok using generalIteratorTest() |
| * The Thai maiyamok character is a shorthand symbol that means "repeat the previous |
| * word". Instead of appearing as a word unto itself, however, it's kept together |
| * with the word before it |
| **/ |
| void TestMaiyamok(void); |
| /** |
| * test behaviour of BreakIterator on an empty string |
| **/ |
| void TestEmptyString(void); |
| /** |
| * Test BreakIterator::getAvailableLocales |
| **/ |
| void TestGetAvailableLocales(void); |
| /** |
| * Test BreakIterator::getDisplayName |
| **/ |
| void TestGetDisplayName(void); |
| /** |
| * test methods preceding, following and isBoundary |
| **/ |
| void TestPreceding(void); |
| |
| void TestBug4153072(void); |
| /** |
| * Test End Behaviour |
| * @bug 4068137 |
| **/ |
| void TestEndBehaviour(void); |
| |
| /***********************/ |
| private: |
| /** |
| * internal methods to prepare test data |
| **/ |
| void addTestWordData(void); |
| void addTestSentenceData(void); |
| void addTestLineData(void); |
| void addTestCharacterData(void); |
| UnicodeString createTestData(Enumeration* e); |
| |
| /** |
| * 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(). |
| * It makes use of internal functions to achieve this. |
| **/ |
| void generalIteratorTest(BreakIterator& bi, Vector* expectedResult); |
| /** |
| * Internal method to perform iteration and test the first() and next() functions |
| **/ |
| Vector* testFirstAndNext(BreakIterator& bi, UnicodeString& text); |
| /** |
| * Internal method to perform iteration and test the last() and previous() functions |
| **/ |
| Vector* testLastAndPrevious(BreakIterator& bi, UnicodeString& text); |
| /** |
| * Internal method to perform iteration and test the following() function |
| **/ |
| void testFollowing(BreakIterator& bi, UnicodeString& text, int32_t *boundaries); |
| /** |
| * Internal method to perform iteration and test the preceding() function |
| **/ |
| void testPreceding(BreakIterator& bi, UnicodeString& text, int32_t *boundaries); |
| /** |
| * Internal method to perform iteration and test the isBoundary() function |
| **/ |
| void testIsBoundary(BreakIterator& bi, UnicodeString& text, int32_t *boundaries); |
| /** |
| * Internal method which does the comparision of expected and got results. |
| **/ |
| void compareFragmentLists(UnicodeString& f1Name, UnicodeString& f2Name, Vector* f1, Vector* f2); |
| /** |
| * Internal method to perform tests of BreakIterator multiple selection functionality |
| * on different kinds of iterators (word, sentence, line and character) |
| **/ |
| void doMultipleSelectionTest(BreakIterator& iterator, UnicodeString& testText); |
| /** |
| * Internal method to perform tests of BreakIterator break Invariants |
| * on different kinds of iterators (word, sentence, line and character) |
| **/ |
| void doBreakInvariantTest(BreakIterator& tb, UnicodeString& testChars); |
| /** |
| * Internal method to perform tests of BreakIterator other invariants |
| * on different kinds of iterators (word, sentence, line and character) |
| **/ |
| void doOtherInvariantTest(BreakIterator& tb, UnicodeString& testChars); |
| /** |
| * Perform tests with short sample code |
| **/ |
| void sample(BreakIterator& tb, UnicodeString& text, UnicodeString& title); |
| /** |
| * The vectors holding test data for testing |
| * different kinds of iterators( word, sentence, line and character) |
| **/ |
| Vector* lineSelectionData; |
| Vector* sentenceSelectionData; |
| Vector* wordSelectionData; |
| Vector* characterSelectionData; |
| |
| static const UChar cannedTestArray[]; |
| static UnicodeString *cannedTestChars; |
| }; |
| |
| |
| #endif |