]>
Commit | Line | Data |
---|---|---|
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 | ||
27 | class DataMap; | |
28 | class 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 | 35 | class T_CTEST_EXPORT_API TestDataModule { |
b75a7d8f A |
36 | const char* testName; |
37 | ||
38 | protected: | |
39 | DataMap *fInfo; | |
40 | TestLog& fLog; | |
41 | ||
42 | public: | |
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 | ||
52 | protected: | |
53 | TestDataModule(const char* name, TestLog& log, UErrorCode& status); | |
54 | ||
55 | public: | |
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 | 85 | class T_CTEST_EXPORT_API RBTestDataModule : public TestDataModule { |
b75a7d8f A |
86 | public: |
87 | virtual ~RBTestDataModule(); | |
88 | ||
89 | public: | |
90 | RBTestDataModule(const char* name, TestLog& log, UErrorCode& status); | |
91 | ||
92 | public: | |
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 | ||
98 | private: | |
99 | UResourceBundle *getTestBundle(const char* bundleName, UErrorCode &status); | |
100 | ||
101 | private: | |
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 |