// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/***********************************************************************
* COPYRIGHT:
* Copyright (c) 1997-2014, International Business Machines Corporation
* and others. All Rights Reserved.
***********************************************************************/
/**
* CollationAPITest is a third level test class. This test performs API
* related tests for the Collation framework.
*/
#ifndef _APICOLL
#define _APICOLL
#include "unicode/utypes.h"
#if !UCONFIG_NO_COLLATION
#include "unicode/tblcoll.h"
#include "tscoll.h"
class CollationAPITest: public IntlTestCollator {
public:
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */);
void doAssert(UBool condition, const char *message);
/**
* This tests the properties of a collator object.
* - constructor/destructor
* - factory method createInstance
* - compare and getCollationKey
* - get/set decomposition mode and comparison level
* - displayable name in the desired locale
*/
void TestProperty(/* char* par */);
void TestKeywordValues();
/**
* This tests the RuleBasedCollator
* - constructor/destructor
* - getRules
*/
void TestRuleBasedColl(/* char* par */);
/**
* This tests the RuleBasedCollator
* - getRules
*/
void TestRules(/* char* par */);
/**
* Tests decomposition setting
*/
void TestDecomposition();
/**
* SafeClone test
*/
void TestSafeClone();
/**
* This tests the properties of a rule based collator object.
* - constructor/destructor
* - == and != operators
* - clone and copy
* - collation rules access
*/
void TestOperators(/* char* par */);
/**
* This tests the duplication of a collator object.
*/
void TestDuplicate(/* char* par */);
/**
* This tests the comparison convenience methods of a collator object.
* - greater than
* - greater than or equal to
* - equal to
*/
void TestCompare(/* char* par */);
/**
* This tests the hashCode method of a collator object.
*/
void TestHashCode(/* char* par */);
/**
* This tests the collation key related APIs.
* - constructor/destructor
* - Collator::getCollationKey
* - == and != operators
* - comparison between collation keys
* - creating collation key with a byte array and vice versa
*/
void TestCollationKey(/* char* par */);
/**
* This tests the CollationElementIterator related APIs.
* - creation of a CollationElementIterator object
* - == and != operators
* - iterating forward
* - reseting the iterator index
* - requesting the order properties(primary, secondary or tertiary)
*/
void TestElemIter(/* char* par */);
/**
* This tests the list the all available locales.
*/
void TestGetAll(/* char* par */);
/**
* This tests the sort keys generated by collator
*/
void TestSortKey();
void TestSortKeyOverflow();
/**
* This tests getMaxExpansion
*/
void TestMaxExpansion();
/**
* Tests the retrieval of names given a locale
*/
void TestDisplayName();
/**
* Tests the collator attributes
*/
void TestAttribute();
/**
* Tests the setters and getters of variable top
*/
void TestVariableTopSetting();
void TestMaxVariable();
/**
* Tests GetLocale for a Collator
*/
void TestGetLocale();
/**
* Tests bounds API
*/
void TestBounds();
/**
* Tests getTailoredSet API
*/
void TestGetTailoredSet();
/**
* Tests the subclassability
*/
void TestSubclass();
/**
* Tests the dynamic and static ids of collation classes
*/
void TestUClassID();
/**
* Test NULL
*/
void TestNULLCharTailoring();
void TestClone();
void TestCloneBinary();
void TestIterNumeric();
void TestBadKeywords();
void TestGapTooSmall();
private:
// If this is too small for the test data, just increase it.
// Just don't make it too large, otherwise the executable will get too big
enum EToken_Len { MAX_TOKEN_LEN = 16 };
void dump(UnicodeString msg, RuleBasedCollator* c, UErrorCode& status);
};
#endif /* #if !UCONFIG_NO_COLLATION */
#endif