1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*********************************************************************** 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * COPYRIGHT: 3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * Copyright (c) 1997-2014, International Business Machines Corporation 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ***********************************************************************/ 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * CollationAPITest is a third level test class. This test performs API 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * related tests for the Collation framework. 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef _APICOLL 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define _APICOLL 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_COLLATION 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/tblcoll.h" 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "tscoll.h" 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass CollationAPITest: public IntlTestCollator { 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic: 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */); 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void doAssert(UBool condition, const char *message); 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the properties of a collator object. 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - constructor/destructor 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - factory method createInstance 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - compare and getCollationKey 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - get/set decomposition mode and comparison level 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - displayable name in the desired locale 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestProperty(/* char* par */); 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the RuleBasedCollator 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - constructor/destructor 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - getRules 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestRuleBasedColl(/* char* par */); 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the RuleBasedCollator 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - getRules 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestRules(/* char* par */); 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests decomposition setting 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestDecomposition(); 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * SafeClone test 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestSafeClone(); 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the properties of a rule based collator object. 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - constructor/destructor 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - == and != operators 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - clone and copy 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - collation rules access 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestOperators(/* char* par */); 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the duplication of a collator object. 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestDuplicate(/* char* par */); 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the comparison convenience methods of a collator object. 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - greater than 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - greater than or equal to 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - equal to 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestCompare(/* char* par */); 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the hashCode method of a collator object. 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestHashCode(/* char* par */); 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the collation key related APIs. 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - constructor/destructor 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - Collator::getCollationKey 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - == and != operators 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - comparison between collation keys 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - creating collation key with a byte array and vice versa 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestCollationKey(/* char* par */); 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the CollationElementIterator related APIs. 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - creation of a CollationElementIterator object 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - == and != operators 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - iterating forward 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - reseting the iterator index 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * - requesting the order properties(primary, secondary or tertiary) 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestElemIter(/* char* par */); 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the list the all available locales. 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestGetAll(/* char* par */); 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests the sort keys generated by collator 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestSortKey(); 116b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho void TestSortKeyOverflow(); 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This tests getMaxExpansion 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestMaxExpansion(); 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests the retrieval of names given a locale 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestDisplayName(); 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests the collator attributes 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestAttribute(); 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests the setters and getters of variable top 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestVariableTopSetting(); 137fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void TestMaxVariable(); 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests GetLocale for a Collator 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestGetLocale(); 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests bounds API 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestBounds(); 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests getTailoredSet API 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestGetTailoredSet(); 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests the subclassability 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestSubclass(); 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Tests the dynamic and static ids of collation classes 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestUClassID(); 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Test NULL 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestNULLCharTailoring(); 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void TestClone(); 170fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius void TestCloneBinary(); 17159d709d503bab6e2b61931737e662dd293b40578ccornelius void TestIterNumeric(); 172dbc22bd174be483711cea006f3189d8289835830ccornelius void TestBadKeywords(); 17359d709d503bab6e2b61931737e662dd293b40578ccornelius 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate: 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // If this is too small for the test data, just increase it. 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // Just don't make it too large, otherwise the executable will get too big 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru enum EToken_Len { MAX_TOKEN_LEN = 16 }; 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void dump(UnicodeString msg, RuleBasedCollator* c, UErrorCode& status); 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_COLLATION */ 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 186