blob: 3e2691f9193f3824aef4ee720bb1cfb9563de037 [file] [log] [blame]
/********************************************************************
* COPYRIGHT:
* Copyright (c) 1997-2001, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
#ifndef _INTLTESTTEXTBOUNDARY
#define _INTLTESTTEXTBOUNDARY
#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 Thai word break using generalIteratorTest()
**/
void TestThaiWordBreak(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