/********************************************************************
 * COPYRIGHT: 
 * Copyright (c) 1997-2008,2011, 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);
/**
* TestSearchCollatorElements tests iterator behavior (forwards and backwards) with
* normalization on AND jamo tailoring, among other things.
*/
static void TestSearchCollatorElements(void);

/*------------------------------------------------------------------------
 Internal utilities
 */


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


#endif /* #if !UCONFIG_NO_COLLATION */

#endif
