1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/********************************************************************
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT:
383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * Copyright (c) 1997-2012, International Business Machines Corporation and
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef UNICODESTRINGTEST_H
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define UNICODESTRINGTEST_H
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unistr.h"
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "intltest.h"
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_NAMESPACE_BEGIN
14b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
15b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoclass Appendable;
16b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
17b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_NAMESPACE_END
18b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Perform API and functionality tests for class UnicodeString
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru **/
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass UnicodeStringTest: public IntlTest {
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UnicodeStringTest() {}
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~UnicodeStringTest();
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test some basic methods (insert, remove, replace, ...)
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestBasicManipulation(void);
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test the methods for comparison
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCompare(void);
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test the methods for extracting
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestExtract(void);
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * More extensively test methods for removing and replacing
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestRemoveReplace(void);
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test language specific case conversions
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSearching(void);
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods for padding, trimmimg and truncating
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestSpacePadding(void);
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test methods startsWith and endsWith
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestPrefixAndSuffix(void);
57b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestStartsWithAndEndsWithNulTerminated();
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test method findAndReplace
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestFindAndReplace(void);
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test method reverse
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestReverse(void);
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test a few miscellaneous methods (isBogus, hashCode,...)
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestMiscellaneous(void);
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test the functionality of allocating UnicodeStrings on the stack
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     **/
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestStackAllocation(void);
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Test the unescape() function.
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestUnescape(void);
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void _testUnicodeStringHasMoreChar32Than(const UnicodeString &s, int32_t start, int32_t length, int32_t number);
80b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestCountChar32();
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestBogus();
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestStringEnumeration();
83b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestNameSpace();
84b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestUTF32();
85b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestUTF8();
86b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestReadOnlyAlias();
87b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void doTestAppendable(UnicodeString &dest, Appendable &app);
88b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestAppendable();
89b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestUnicodeStringImplementsAppendable();
90b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    void TestSizeofUnicodeString();
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass StringCaseTest: public IntlTest {
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    StringCaseTest() {}
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~StringCaseTest();
9783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCaseConversion();
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCasingImpl(const UnicodeString &input,
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        const UnicodeString &output,
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        int32_t whichCase,
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        void *iter, const char *localeID, uint32_t options);
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void TestCasing();
10783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius    void TestFullCaseFoldingIterator();
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
111