1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/********************************************************************
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * COPYRIGHT:
3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Copyright (c) 1999-2014 International Business Machines Corporation and
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * others. All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ********************************************************************/
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/************************************************************************
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   Date        Name        Description
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*   12/14/99    Madhu        Creation.
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru************************************************************************/
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef RBBIAPITEST_H
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define RBBIAPITEST_H
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_BREAK_ITERATION
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "intltest.h"
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/rbbi.h"
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * API Test the RuleBasedBreakIterator class
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass RBBIAPITest: public IntlTest {
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic:
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Tests Constructor behaviour of RuleBasedBreakIterator
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru   // void TestConstruction(void);
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Tests clone() and equals() methods of RuleBasedBreakIterator
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestCloneEquals();
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Tests toString() method of RuleBasedBreakIterator
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestgetRules();
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Tests the method hashCode() of RuleBasedBreakIterator
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestHashCode();
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     /**
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      * Tests the methods getText() and setText() of RuleBasedBreakIterator
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      **/
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestGetSetAdoptText();
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     /**
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      * Testing the iteration methods of RuleBasedBreakIterator
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      **/
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestIteration(void);
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
56fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    void TestFilteredBreakIteratorBuilder(void);
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Tests creating RuleBasedBreakIterator from rules strings.
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestBuilder(void);
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestRoundtripRules(void);
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void RoundtripRule(const char *dataFile);
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
6885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Test creating RuleBasedBreakIterator from RBBIData.
6985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     **/
7085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
7185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    void TestCreateFromRBBIData(void);
7285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
7385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * Tests grouping effect of 'single quotes' in rules.
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestQuoteGrouping();
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *  Tests word break status returns.
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestRuleStatus();
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestRuleStatusVec();
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestBug2190();
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestBoilerPlate();
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void TestRegistration();
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
9025da3ed619822bddb523bd641ab41ee1632bae7eElliott Hughes    void TestRefreshInputText();
9125da3ed619822bddb523bd641ab41ee1632bae7eElliott Hughes
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *Internal subroutines
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     **/
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /* Internal subroutine used by TestIsBoundary() */
9659d709d503bab6e2b61931737e662dd293b40578ccornelius    void doBoundaryTest(BreakIterator& bi, UnicodeString& text, int32_t *boundaries);
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /*Internal subroutine used for comparision of expected and acquired results */
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    void doTest(UnicodeString& testString, int32_t start, int32_t gotoffset, int32_t expectedOffset, const char* expected);
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/**
10585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Special class to enable testing of protected functions in RuleBasedBreakIterator
10685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */
10785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass RBBIWithProtectedFunctions: public RuleBasedBreakIterator {
10885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic:
10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    enum EDontAdopt {
11085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        kDontAdopt
11185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    };
11285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    RBBIWithProtectedFunctions(RBBIDataHeader* data, UErrorCode &status);
11385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    RBBIWithProtectedFunctions(const RBBIDataHeader* data, enum EDontAdopt dontAdopt, UErrorCode &status);
11485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho};
11585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
119