16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/********************************************************************
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT:
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 2008-2013 International Business Machines Corporation and
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * others. All Rights Reserved.
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ********************************************************************/
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _INTLTESTDATEINTERVALFORMAT
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _INTLTESTDATEINTERVALFORMAT
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h"
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/locid.h"
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "intltest.h"
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test basic functionality of various API functions
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org **/
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DateIntervalFormatTest: public IntlTest {
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic:
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Performs tests on many API functions, see detailed comments in source code
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     **/
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void testAPI();
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test formatting
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void testFormat();
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test formatting using user defined DateIntervalInfo
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void testFormatUserDII();
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test for no unwanted side effects when setting
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * interval patterns.
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void testSetIntervalPatternNoSideEffect();
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Tests different year formats.
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void testYearFormats();
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Stress test -- stress test formatting on 40 locales
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void testStress();
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate:
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test formatting against expected result
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void expect(const char** data, int32_t data_length);
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Test formatting against expected result using user defined
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * DateIntervalInfo
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void expectUserDII(const char** data, int32_t data_length);
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    /**
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     * Stress test formatting
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org     */
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void stress(const char** data, int32_t data_length, const Locale& loc,
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                const char* locName);
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
77