1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/********************************************************************
4 * COPYRIGHT:
5 * Copyright (c) 2002-2015, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 ********************************************************************/
8
9
10#ifndef REGEXTST_H
11#define REGEXTST_H
12
13#include "unicode/utypes.h"
14#if !UCONFIG_NO_REGULAR_EXPRESSIONS
15
16#include "intltest.h"
17
18struct UText;
19typedef struct UText UText;
20
21class RegexTest: public IntlTest {
22public:
23
24    RegexTest();
25    virtual ~RegexTest();
26
27    virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL );
28
29    // The following are test functions that are visible from the intltest test framework.
30    virtual void API_Match();
31    virtual void API_Pattern();
32    virtual void API_Replace();
33    virtual void Basic();
34    virtual void Extended();
35    virtual void Errors();
36    virtual void PerlTests();
37    virtual void Bug6149();
38    virtual void Callbacks();
39    virtual void FindProgressCallbacks();
40    virtual void UTextBasic();
41    virtual void API_Match_UTF8();
42    virtual void API_Pattern_UTF8();
43    virtual void API_Replace_UTF8();
44    virtual void PerlTestsUTF8();
45    virtual void PreAllocatedUTextCAPI();
46    virtual void NamedCapture();
47    virtual void NamedCaptureLimits();
48    virtual void Bug7651();
49    virtual void Bug7740();
50    virtual void Bug8479();
51    virtual void Bug7029();
52    virtual void Bug9283();
53    virtual void CheckInvBufSize();
54    virtual void Bug10459();
55    virtual void TestCaseInsensitiveStarters();
56    virtual void TestBug11049();
57    virtual void TestBug11371();
58    virtual void TestBug11480();
59    virtual void TestBug12884();
60    virtual void TestBug13631();
61
62    // The following functions are internal to the regexp tests.
63    virtual void assertUText(const char *expected, UText *actual, const char *file, int line);
64    virtual void assertUTextInvariant(const char *invariant, UText *actual, const char *file, int line);
65    virtual UBool doRegexLMTest(const char *pat, const char *text, UBool looking, UBool match, int32_t line);
66    virtual UBool doRegexLMTestUTF8(const char *pat, const char *text, UBool looking, UBool match, int32_t line);
67    virtual void regex_find(const UnicodeString &pat, const UnicodeString &flags,
68                            const UnicodeString &input, const char *srcPath, int32_t line);
69    virtual void regex_err(const char *pat, int32_t errline, int32_t errcol,
70                            UErrorCode expectedStatus, int32_t line);
71    virtual UChar *ReadAndConvertFile(const char *fileName, int32_t &len, const char *charset, UErrorCode &status);
72    virtual const char *getPath(char buffer[2048], const char *filename);
73
74    virtual void TestCase11049(const char *pattern, const char *data, UBool expectMatch, int32_t lineNumber);
75
76    static const char* extractToAssertBuf(const UnicodeString& message);
77
78};
79
80#endif   // !UCONFIG_NO_REGULAR_EXPRESSIONS
81#endif
82