1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/************************************************************************* 2f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Copyright (c) 1999-2014, International Business Machines 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Corporation and others. All Rights Reserved. 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ************************************************************************* 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Date Name Description 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 12/15/99 Madhu Creation. 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 01/12/2000 Madhu Updated for changed API and added new tests 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ************************************************************************/ 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef RBBITEST_H 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define RBBITEST_H 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_BREAK_ITERATION 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "intltest.h" 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/brkiter.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass Enumeration; 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass BITestData; 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustruct TestParams; 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass RBBIMonkeyKind; 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass UVector32; 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the RuleBasedBreakIterator class giving different rules 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass RBBITest: public IntlTest { 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru RBBITest(); 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~RBBITest(); 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Tests rule status return values 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestStatusReturn(); 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestEmptyString(); 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestGetAvailableLocales(); 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestGetDisplayName(); 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestEndBehaviour(); 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestBug4153072(); 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestJapaneseLineBreak(); 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestThaiLineBreak(); 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestMixedThaiLineBreak(); 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestMaiyamok(); 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestMonkey(char *params); 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestExtended(); 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *ReadAndConvertFile(const char *fileName, int &ulen, const char *encoding, UErrorCode &status); 60f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius void executeTest(TestParams *, UErrorCode &status); 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestWordBreaks(); 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestWordBoundary(); 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestLineBreaks(); 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestSentBreaks(); 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestBug3818(); 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestJapaneseWordBreak(); 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestTrieDict(); 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestUnicodeFiles(); 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestBug5775(); 71b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TestTailoredBreaks(); 7250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void TestDictRules(); 7327f654740f2a26ad62a5c155af9199af9e69b889claireho void TestBug5532(); 748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius void TestBug9983(); 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void TestDebug(); 77103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius void TestProperties(); 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/***********************/ 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate: 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * internal methods to prepare test data 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Perform tests of BreakIterator forward and backward functionality 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * on different kinds of iterators (word, sentence, line and character). 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * It tests the methods first(), next(), current(), preceding(), following() 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * previous() and isBoundary(). 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * It makes use of internal functions to achieve this. 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void generalIteratorTest(RuleBasedBreakIterator& bi, BITestData &td); 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal method to perform iteration and test the first() and next() functions 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void testFirstAndNext(RuleBasedBreakIterator& bi, BITestData &td); 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal method to perform iteration and test the last() and previous() functions 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void testLastAndPrevious(RuleBasedBreakIterator& bi, BITestData &td); 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal method to perform iteration and test the following() function 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void testFollowing(RuleBasedBreakIterator& bi, BITestData &td); 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal method to perform iteration and test the preceding() function 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void testPreceding(RuleBasedBreakIterator& bi, BITestData &td); 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal method to perform iteration and test the isBoundary() function 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void testIsBoundary(RuleBasedBreakIterator& bi, BITestData &td); 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Internal method to perform tests of BreakIterator multiple selection functionality 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * on different kinds of iterators (word, sentence, line and character) 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/ 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void doMultipleSelectionTest(RuleBasedBreakIterator& iterator, BITestData &td); 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed, 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t loopCount, UBool useUText); 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Run one of the Unicode Consortium boundary test data files. 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void runUnicodeTestData(const char *fileName, RuleBasedBreakIterator *bi); 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Run a single test case from one of the Unicode Consortium test files. 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void checkUnicodeTestCase(const char *testFileName, int lineNumber, 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString &testString, 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UVector32 *breakPositions, 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru RuleBasedBreakIterator *bi); 130b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 131b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // Run the actual tests for TestTailoredBreaks() 132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void TBTest(BreakIterator* brkitr, int type, const char *locale, const char* escapedText, 133b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru const int32_t *expectOffsets, int32_t expectOffsetsCount); 1341b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert 1351b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert /** Filter for test cases from the Unicode test data files. 1361b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * Some need to be skipped because ICU is unable to fully implement the 1371b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * Unicode boundary specifications. 1381b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @param testCase the test data string. 1391b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @param fileName the Unicode test data file name. 1401b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @return FALSE if the test case should be run, TRUE if it should be skipped. 1411b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert */ 1421b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert UBool testCaseIsKnownIssue(const UnicodeString &testCase, const char *fileName); 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 148