/********************************************************************
 * COPYRIGHT: 
 * Copyright (c) 1997-2008, 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);


#endif /* #if !UCONFIG_NO_COLLATION */

#endif
