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
27class TestDataModule;
28class TestData;
29
30class SeqElement {
31public:
32  UnicodeString source;
33  Collator::EComparisonResult relation;
34};
35
36class DataDrivenCollatorTest: public IntlTestCollator {
37    void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL );
38public:
39    DataDrivenCollatorTest();
40    virtual ~DataDrivenCollatorTest();
41protected:
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);
49private:
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