/********************************************************************
 * COPYRIGHT: 
 * Copyright (c) 1997-2003, International Business Machines Corporation and
 * others. All Rights Reserved.
 ********************************************************************/
/********************************************************************************
*
* File CITERTST.H
*
* Modification History:
*        Name                     Description            
*     Madhu Katragadda            Converted to C
*********************************************************************************/

/**
 * Collation Iterator tests.
 * (Let me reiterate my position...)
 */

#ifndef _CITERCOLLTST
#define _CITERCOLLTST

#include "unicode/utypes.h"

#if !UCONFIG_NO_COLLATION

#include "unicode/ucol.h"
#include "unicode/ucoleitr.h"
#include "cintltst.h"

#define MAX_TOKEN_LEN 16

    /**
    * Test for CollationElementIterator previous and next for the whole set of
    * unicode characters.
    */
    static void TestUnicodeChar(void);
    /**
    * Test for CollationElementIterator previous and next for the whole set of
    * unicode characters with normalization on.
    */
    static void TestNormalizedUnicodeChar(void);
    /**
    * Test incremental normalization
    */
    static void TestNormalization(void);
     /**
     * Test for CollationElementIterator.previous()
     *
     * @bug 4108758 - Make sure it works with contracting characters
     * 
     */
    static void TestPrevious(void);

    /**
     * Test for getOffset() and setOffset()
     */
    static void TestOffset(void);
    /**
     * Test for setText()
     */
    static void TestSetText(void);
    /** @bug 4108762
     * Test for getMaxExpansion()
     */
    static void TestMaxExpansion(void);
    /**
    * Test Bug 672, where different locales give a different offset after 
    * a previous for the same string at the same position
    */
    static void TestBug672(void);

    /**
     * Repeat TestBug672 with normalizatin enabled - this test revealed a bug
     *   in incremental normalization.
     */
    static void TestBug672Normalize(void);
    /**
    * Test iterators with an relatively small buffer
    */
    static void TestSmallBuffer(void);
    /**
    * Tests the CEs generated by the iterators.
    */
    static void TestCEs(void);
    /**
    * Tests the discontiguos contractions
    */
    static void TestDiscontiguos(void);
    /**
    * Tests that the iterators bails out when the CEBuffer is exhausted
    */
    static void TestCEBufferOverflow(void);
    /**
    * Tests the validity of CEs generated by the iterators.
    * Bound checkings.
    */
    static void TestCEValidity(void);
    /**
    * Tests the validity of sortkeys generated by the iterators.
    * Bound checkings.
    */
    static void TestSortKeyValidity(void);
    
    /*------------------------------------------------------------------------
     Internal utilities
     */

    
    static void assertEqual(UCollationElements *i1, UCollationElements *i2);

    
    static  UChar *test1;
    static  UChar *test2;

#endif /* #if !UCONFIG_NO_COLLATION */

#endif
