16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************************
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2013 International Business Machines
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Corporation and others. All Rights Reserved.
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************************************
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File CAPITEST.H
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History:
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*        Name                     Description
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*     Madhu Katragadda            Converted to C
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*     Brian Rower                 Added TestOpenVsOpenRules
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*********************************************************************************
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*//* C API TEST For COLLATOR */
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _CCOLLAPITST
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _CCOLLAPITST
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h"
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_COLLATION
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cintltst.h"
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "callcoll.h"
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_TOKEN_LEN 16
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * error reporting utility method
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void doAssert(int condition, const char *message);
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Collator Class Properties
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * ctor, dtor, createInstance, compare, getStrength/setStrength
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * getDecomposition/setDecomposition, getDisplayName
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestProperty(void);
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test RuleBasedCollator and getRules
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRuleBasedColl(void);
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test compare
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestCompare(void);
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test hashCode functionality
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestHashCode(void);
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests the constructor and numerous other methods for CollationKey
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org   void TestSortKey(void);
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * test the CollationElementIterator methods
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org   void TestElemIter(void);
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test ucol_getAvailable and ucol_countAvailable()
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGetAll(void);
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test ucol_GetDefaultRules ()
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGetDefaultRules(void);
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestDecomposition(void);
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test ucol_safeClone ()
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestSafeClone(void);
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test ucol_cloneBinary(), ucol_openBinary()
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestCloneBinary(void);
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test ucol_open() vs. ucol_openRules()
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestOpenVsOpenRules(void);
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test getting bounds for a sortkey
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestBounds(void);
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test ucol_getLocale function
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGetLocale(void);
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test buffer overrun while having smaller buffer for sortkey (j1865)
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestSortKeyBufferOverrun(void);
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test getting and setting of attributes
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGetSetAttr(void);
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test getTailoredSet
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestGetTailoredSet(void);
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test mergeSortKeys
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestMergeSortKeys(void);
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * test short string and collator identifier functions
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void TestShortString(void);
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * test getContractions and getUnsafeSet
1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void TestGetContractionsAndUnsafes(void);
1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test funny stuff with open binary
1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void TestOpenBinary(void);
1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test getKeywordValuesForLocale API
1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void TestGetKeywordValuesForLocale(void);
1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * test strcoll with null arg
1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    static void TestStrcollNull(void);
1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_COLLATION */
1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
141