]> git.saurik.com Git - apple/icu.git/blame - icuSources/tools/ctestfw/unicode/tstdtmod.h
ICU-8.11.4.tar.gz
[apple/icu.git] / icuSources / tools / ctestfw / unicode / tstdtmod.h
CommitLineData
b75a7d8f
A
1/********************************************************************
2 * COPYRIGHT:
73c04bcf 3 * Copyright (c) 2002-2005, International Business Machines Corporation and
b75a7d8f
A
4 * others. All Rights Reserved.
5 ********************************************************************/
6
7/* Created by weiv 05/09/2002 */
8
9/* Base class for data driven tests */
10
374ca955
A
11#ifndef U_TESTFW_TESTMODULE
12#define U_TESTFW_TESTMODULE
b75a7d8f 13
b75a7d8f 14#include "unicode/unistr.h"
b75a7d8f 15#include "unicode/ures.h"
374ca955
A
16#include "unicode/testtype.h"
17#include "unicode/testdata.h"
18#include "unicode/datamap.h"
19#include "unicode/testlog.h"
b75a7d8f 20
73c04bcf 21
b75a7d8f
A
22/* This class abstracts the actual organization of the
23 * data for data driven tests
24 */
25
26
27class DataMap;
28class TestData;
29
b75a7d8f
A
30
31/** Main data driven test class. Corresponds to one named data
32 * unit (such as a resource bundle. It is instantiated using
33 * a factory method getTestDataModule
34 */
374ca955 35class T_CTEST_EXPORT_API TestDataModule {
b75a7d8f
A
36 const char* testName;
37
38protected:
39 DataMap *fInfo;
40 TestLog& fLog;
41
42public:
43 /** Factory method.
44 * @param name name of the test module. Usually name of a resource bundle or a XML file
45 * @param log a logging class, used for internal error reporting.
46 * @param status if something goes wrong, status will be set
47 * @return a TestDataModule object. Use it to get test data from it
48 */
49 static TestDataModule *getTestDataModule(const char* name, TestLog& log, UErrorCode &status);
50 virtual ~TestDataModule();
51
52protected:
53 TestDataModule(const char* name, TestLog& log, UErrorCode& status);
54
55public:
56 /** Name of this TestData module.
57 * @return a name
58 */
59 const char * getName() const;
60
61 /** Get a pointer to an object owned DataMap that contains more information on this module
62 * Usual fields are "Description", "LongDescription", "Settings". Also, if containing a
63 * field "Headers" these will be used as the default headers, so that you don't have to
64 * to specify per test headers.
65 * @param info pass in a const DataMap pointer. If no info, it will be set to NULL
66 */
67 virtual UBool getInfo(const DataMap *& info, UErrorCode &status) const = 0;
68
69 /** Create a test data object from an index. Helpful for integrating tests with current
70 * intltest framework which addresses the tests by index.
71 * @param index index of the test to be instantiated
72 * @return an instantiated TestData object, ready to provide settings and cases for
73 * the tests.
74 */
75 virtual TestData* createTestData(int32_t index, UErrorCode &status) const = 0;
76
77 /** Create a test data object from a name.
78 * @param name name of the test to be instantiated
79 * @return an instantiated TestData object, ready to provide settings and cases for
80 * the tests.
81 */
82 virtual TestData* createTestData(const char* name, UErrorCode &status) const = 0;
83};
84
374ca955 85class T_CTEST_EXPORT_API RBTestDataModule : public TestDataModule {
b75a7d8f
A
86public:
87 virtual ~RBTestDataModule();
88
89public:
90 RBTestDataModule(const char* name, TestLog& log, UErrorCode& status);
91
92public:
93 virtual UBool getInfo(const DataMap *& info, UErrorCode &status) const;
94
95 virtual TestData* createTestData(int32_t index, UErrorCode &status) const;
96 virtual TestData* createTestData(const char* name, UErrorCode &status) const;
97
98private:
99 UResourceBundle *getTestBundle(const char* bundleName, UErrorCode &status);
100
101private:
102 UResourceBundle *fModuleBundle;
103 UResourceBundle *fTestData;
104 UResourceBundle *fInfoRB;
105 UBool fDataTestValid;
106 char *tdpath;
107
108/* const char* fTestName;*/ /* See name */
109 int32_t fNumberOfTests;
110
111};
112
113
114#endif
73c04bcf 115