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