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