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