2a53fc8a87
X-SVN-Rev: 12663
81 lines
2.1 KiB
C++
81 lines
2.1 KiB
C++
/*
|
|
**********************************************************************
|
|
* Copyright (C) 1999-2003, International Business Machines
|
|
* Corporation and others. All Rights Reserved.
|
|
**********************************************************************
|
|
* Date Name Description
|
|
* 12/09/99 aliu Ported from Java.
|
|
**********************************************************************
|
|
*/
|
|
|
|
#ifndef COLLATIONTHAITEST_H
|
|
#define COLLATIONTHAITEST_H
|
|
|
|
#include "unicode/utypes.h"
|
|
|
|
#if !UCONFIG_NO_COLLATION
|
|
|
|
#include "tscoll.h"
|
|
|
|
class CollationThaiTest : public IntlTestCollator {
|
|
Collator* coll; // Thai collator
|
|
|
|
public:
|
|
|
|
CollationThaiTest();
|
|
virtual ~CollationThaiTest();
|
|
|
|
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
|
|
|
|
private:
|
|
|
|
/**
|
|
* Read the external dictionary file, which is already in proper
|
|
* sorted order, and confirm that the collator compares each line as
|
|
* preceding the following line.
|
|
*/
|
|
void TestDictionary(void);
|
|
|
|
/**
|
|
* Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort",
|
|
* by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip
|
|
*/
|
|
void TestCornerCases(void);
|
|
|
|
/**
|
|
* Read the external names list, and confirms that the collator
|
|
* gets the same results when comparing lines one to another
|
|
* using regular and iterative comparison.
|
|
*/
|
|
void TestNamesList(void);
|
|
|
|
/**
|
|
* test that invalid Thai sorts properly
|
|
*/
|
|
void TestInvalidThai(void);
|
|
|
|
/**
|
|
* test that reording is done properly
|
|
*/
|
|
void TestReordering(void);
|
|
|
|
private:
|
|
|
|
void compareArray(Collator& c, const char* tests[],
|
|
int32_t testsLength);
|
|
|
|
int8_t sign(int32_t i);
|
|
|
|
/**
|
|
* Set a UnicodeString corresponding to the given string. Use
|
|
* UnicodeString and the default converter, unless we see the sequence
|
|
* "\\u", in which case we interpret the subsequent escape.
|
|
*/
|
|
UnicodeString& parseChars(UnicodeString& result,
|
|
const char* chars);
|
|
};
|
|
|
|
#endif /* #if !UCONFIG_NO_COLLATION */
|
|
|
|
#endif
|