1/********************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 1997-2003, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 ********************************************************************/
6
7#ifndef _INTLTESTDATEFORMAT
8#define _INTLTESTDATEFORMAT
9
10#include "unicode/utypes.h"
11
12#if !UCONFIG_NO_FORMATTING
13
14#include "unicode/unistr.h"
15#include "unicode/datefmt.h"
16#include "intltest.h"
17
18/**
19 *  Performs some tests in many variations on DateFormat
20 **/
21class IntlTestDateFormat: public IntlTest {
22    void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL );
23
24private:
25
26    /**
27     *  test DateFormat::getAvailableLocales
28     **/
29    void testAvailableLocales(/* char* par */);
30    /**
31     *  call testLocale for all locales
32     **/
33    void monsterTest(/* char *par */);
34
35    /**
36     *  call tryDate with variations, called by testLocale
37     **/
38    void testFormat(/* char* par */);
39    /**
40     *  perform tests using date and fFormat, called in many variations
41     **/
42    void tryDate(UDate date);
43    /**
44     *  call testFormat for different DateFormat::EStyle's, etc
45     **/
46    void testLocale(/*char *par, */const Locale&, const UnicodeString&);
47    /**
48     *  return a random number
49     **/
50    double randDouble(void);
51    /**
52     * generate description for verbose test output
53     **/
54    void describeTest(void);
55
56    DateFormat *fFormat;
57    UnicodeString fTestName;
58    int32_t fLimit; // How many iterations it should take to reach convergence
59
60    enum
61    {
62        // Values in milliseconds (== Date)
63        ONESECOND = 1000,
64        ONEMINUTE = 60 * ONESECOND,
65        ONEHOUR = 60 * ONEMINUTE,
66        ONEDAY = 24 * ONEHOUR
67    };
68    static const double ONEYEAR;
69    enum EMode
70    {
71        GENERIC,
72        TIME,
73        DATE,
74        DATE_TIME
75    };
76public:
77    virtual ~IntlTestDateFormat();
78};
79
80#endif /* #if !UCONFIG_NO_FORMATTING */
81
82#endif
83