1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*************************************************************************
* 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
#define RBBITEST_H
#include "unicode/utypes.h"
#if !UCONFIG_NO_BREAK_ITERATION
#include <memory>
#include "intltest.h"
#include "unicode/brkiter.h"
#include "unicode/rbbi.h"
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 );
void TestGetAvailableLocales();
void TestGetDisplayName();
void TestEndBehaviour();
void TestBug4153072();
void TestJapaneseLineBreak();
void TestThaiLineBreak();
void TestMixedThaiLineBreak();
void TestMaiyamok();
void TestMonkey();
void TestExtended();
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 TestBug7547();
void TestBug12797();
void TestBug12918();
void TestBug12932();
void TestEmoji();
void TestBug12519();
void TestBug12677();
void TestTableRedundancies();
void TestBug13447();
void TestReverse();
void TestReverse(std::unique_ptr<RuleBasedBreakIterator>bi);
void TestBug13692();
void TestDebug();
void TestProperties();
/***********************/
private:
/**
* internal methods to prepare test data
**/
void RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed,
int32_t loopCount, UBool useUText);
// 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);
// Test parameters, from the test framework and test invocation.
const char* fTestParams;
};
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
#endif
|