OLD | NEW |
(Empty) | |
| 1 /******************************************************************** |
| 2 * COPYRIGHT: |
| 3 * Copyright (c) 2002-2005, International Business Machines Corporation and |
| 4 * others. All Rights Reserved. |
| 5 ********************************************************************/ |
| 6 |
| 7 /* Created by weiv 05/09/2002 */ |
| 8 |
| 9 /* Base class for data driven tests */ |
| 10 |
| 11 #ifndef U_TESTFW_TESTMODULE |
| 12 #define U_TESTFW_TESTMODULE |
| 13 |
| 14 #include "unicode/unistr.h" |
| 15 #include "unicode/ures.h" |
| 16 #include "unicode/testtype.h" |
| 17 #include "unicode/testdata.h" |
| 18 #include "unicode/datamap.h" |
| 19 #include "unicode/testlog.h" |
| 20 |
| 21 |
| 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 |
| 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 */ |
| 35 class T_CTEST_EXPORT_API TestDataModule { |
| 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, UErro
rCode &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 co
ntaining 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 wit
h 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 cas
es 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 cas
es for |
| 80 * the tests.
|
| 81 */ |
| 82 virtual TestData* createTestData(const char* name, UErrorCode &status) const =
0; |
| 83 }; |
| 84 |
| 85 class T_CTEST_EXPORT_API RBTestDataModule : public TestDataModule { |
| 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 |
| 115 |
OLD | NEW |