1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/********************************************************************
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT:
3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Copyright (c) 2005-2013, International Business Machines Corporation and
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/************************************************************************
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   Tests for the UText and UTextIterator text abstraction classses
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru************************************************************************/
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef UTXTTEST_H
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define UTXTTEST_H
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unistr.h"
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utext.h"
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "intltest.h"
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @test
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @summary Testing the Replaceable class
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass UTextTest : public IntlTest {
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UTextTest();
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~UTextTest();
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL);
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TextTest();
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void ErrorTest();
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void FreezeTest();
34b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void Ticket5560();
35b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    void Ticket6847();
36fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    void Ticket10562();
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate:
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    struct m {                              // Map between native indices & code points.
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        int         nativeIdx;
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        UChar32     cp;
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestString(const UnicodeString &s);
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestAccess(const UnicodeString &us, UText *ut, int cpCount, m *cpMap);
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestAccessNoClone(const UnicodeString &us, UText *ut, int cpCount, m *cpMap);
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCMR   (const UnicodeString &us, UText *ut, int cpCount, m *nativeMap, m *utf16Map);
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCopyMove(const UnicodeString &us, UText *ut, UBool move,
49b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                      int32_t nativeStart, int32_t nativeLimit, int32_t nativeDest,
50b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                      int32_t u16Start, int32_t u16Limit, int32_t u16Dest);
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestReplace(const UnicodeString &us,  // reference UnicodeString in which to do the replace
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru            UText         *ut,                 // UnicodeText object under test.
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru            int32_t       nativeStart,         // Range to be replaced, in UText native units.
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru            int32_t       nativeLimit,
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru            int32_t       u16Start,            // Range to be replaced, in UTF-16 units
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru            int32_t       u16Limit,            //    for use in the reference UnicodeString.
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru            const UnicodeString &repStr);      // The replacement string
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
64