16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************************
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT:
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1999-2013 International Business Machines Corporation and
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved.
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/************************************************************************
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Date        Name        Description
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   12/14/99    Madhu        Creation.
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org************************************************************************/
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef RBBIAPITEST_H
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define RBBIAPITEST_H
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h"
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_BREAK_ITERATION
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "intltest.h"
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/rbbi.h"
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * API Test the RuleBasedBreakIterator class
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass RBBIAPITest: public IntlTest {
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests Constructor behaviour of RuleBasedBreakIterator
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org   // void TestConstruction(void);
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests clone() and equals() methods of RuleBasedBreakIterator
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestCloneEquals();
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests toString() method of RuleBasedBreakIterator
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestgetRules();
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests the method hashCode() of RuleBasedBreakIterator
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestHashCode();
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     /**
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      * Tests the methods getText() and setText() of RuleBasedBreakIterator
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      **/
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGetSetAdoptText();
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     /**
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      * Testing the iteration methods of RuleBasedBreakIterator
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org      **/
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestIteration(void);
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests creating RuleBasedBreakIterator from rules strings.
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestBuilder(void);
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRoundtripRules(void);
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void RoundtripRule(const char *dataFile);
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test creating RuleBasedBreakIterator from RBBIData.
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestCreateFromRBBIData(void);
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests grouping effect of 'single quotes' in rules.
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestQuoteGrouping();
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *  Tests word break status returns.
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRuleStatus();
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRuleStatusVec();
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestBug2190();
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestBoilerPlate();
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRegistration();
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRefreshInputText();
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     *Internal subroutines
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /* Internal subroutine used by TestIsBoundary() */
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void doBoundaryTest(BreakIterator& bi, UnicodeString& text, int32_t *boundaries);
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /*Internal subroutine used for comparision of expected and acquired results */
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void doTest(UnicodeString& testString, int32_t start, int32_t gotoffset, int32_t expectedOffset, const char* expected);
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Special class to enable testing of protected functions in RuleBasedBreakIterator
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass RBBIWithProtectedFunctions: public RuleBasedBreakIterator {
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    enum EDontAdopt {
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        kDontAdopt
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    };
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    RBBIWithProtectedFunctions(RBBIDataHeader* data, UErrorCode &status);
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    RBBIWithProtectedFunctions(const RBBIDataHeader* data, enum EDontAdopt dontAdopt, UErrorCode &status);
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
118