Home | History | Annotate | Download | only in intltest
      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