1 /******************************************************************** 2 * COPYRIGHT: 3 * Copyright (c) 2002-2009, International Business Machines Corporation and 4 * others. All Rights Reserved. 5 ********************************************************************/ 6 7 /** 8 * DataDrivenCollatorTest is a test class that uses data stored in resource 9 * bundles to perform testing. For more details on data structure, see 10 * source/test/testdata/DataDrivenCollationTest.txt 11 */ 12 13 #ifndef _INTLTESTDATADRIVENCOLLATOR 14 #define _INTLTESTDATADRIVENCOLLATOR 15 16 #include "unicode/utypes.h" 17 18 #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_FILE_IO 19 20 #include "tscoll.h" 21 #include "uvector.h" 22 #include "unicode/coll.h" 23 #include "unicode/tblcoll.h" 24 #include "unicode/sortkey.h" 25 #include "unicode/schriter.h" 26 27 class TestDataModule; 28 class TestData; 29 30 class SeqElement { 31 public: 32 UnicodeString source; 33 Collator::EComparisonResult relation; 34 }; 35 36 class DataDrivenCollatorTest: public IntlTestCollator { 37 void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ); 38 public: 39 DataDrivenCollatorTest(); 40 virtual ~DataDrivenCollatorTest(); 41 protected: 42 43 void DataDrivenTest(char *par); 44 void processSequence(Collator* col, const UnicodeString &sequence); 45 void processTest(TestData *testData); 46 void processArguments(Collator *col, const UChar *start, int32_t optLen); 47 UBool setTestSequence(const UnicodeString &setSequence, SeqElement &el); 48 UBool getNextInSequence(SeqElement &el); 49 private: 50 StringCharacterIterator seq; 51 TestDataModule *driver; 52 UErrorCode status; 53 UVector sequences; 54 RuleBasedCollator *UCA; // needed for opening collators from binary images 55 }; 56 57 #endif /* #if !UCONFIG_NO_COLLATION */ 58 59 #endif 60