diff options
Diffstat (limited to 'Build/source/libs/icu/icu-50.1/test/intltest/callimts.h')
-rw-r--r-- | Build/source/libs/icu/icu-50.1/test/intltest/callimts.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-50.1/test/intltest/callimts.h b/Build/source/libs/icu/icu-50.1/test/intltest/callimts.h new file mode 100644 index 00000000000..7d7c8062dbd --- /dev/null +++ b/Build/source/libs/icu/icu-50.1/test/intltest/callimts.h @@ -0,0 +1,88 @@ +/******************************************************************** + * COPYRIGHT: + * Copyright (c) 1997-2010, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +#ifndef __CalendarLimitTest__ +#define __CalendarLimitTest__ + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING + +#include "caltztst.h" + +/** + * This test verifies the behavior of Calendar around the very earliest limits + * which it can handle. It also verifies the behavior for large values of millis. + * + * Bug ID 4033662. + */ +class CalendarLimitTest: public CalendarTimeZoneTest { + // IntlTest override + void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ); +public: // package + //test routine used by TestCalendarLimit + virtual void test(UDate millis, Calendar *cal, DateFormat *fmt); + + // bug 986c: deprecate nextDouble/previousDouble + //static double nextDouble(double a); + //static double previousDouble(double a); + static UBool withinErr(double a, double b, double err); + +public: + // test behaviour and error reporting at boundaries of defined range + virtual void TestCalendarExtremeLimit(void); + + void TestLimits(void); + +private: + /* + * Test the functions getMaximum/getGeratestMinimum logically correct. + * This method assumes day of week cycle is consistent. + * @param cal The calendar instance to be tested. + * @param leapMonth true if the calendar system has leap months + */ + void doTheoreticalLimitsTest(Calendar& cal, UBool leapMonth); + + /* + * Test the functions getXxxMinimum() and getXxxMaximum() by marching a + * test calendar 'cal' through 'numberOfDays' sequential days starting + * with 'startDate'. For each date, read a field value along with its + * reported actual minimum and actual maximum. These values are + * checked against one another as well as against getMinimum(), + * getGreatestMinimum(), getLeastMaximum(), and getMaximum(). We + * expect to see: + * + * 1. minimum <= actualMinimum <= greatestMinimum <= + * leastMaximum <= actualMaximum <= maximum + * + * 2. actualMinimum <= value <= actualMaximum + * + * Note: In addition to outright failures, this test reports some + * results as warnings. These are not generally of concern, but they + * should be evaluated by a human. To see these, run this test in + * verbose mode. + * @param cal the calendar to be tested + * @param fieldsToTest an array of field values to be tested, e.g., new + * int[] { UCAL_MONTH, UCAL_DAY_OF_MONTH }. It only makes + * sense to test the day fields; the time fields are not tested by this + * method. If null, then test all standard fields. + * @param startDate the first date to test + * @param testDuration if positive, the number of days to be tested. + * If negative, the number of seconds to run the test. + */ + void doLimitsTest(Calendar& cal, const int32_t* fieldsToTest, UDate startDate, int32_t testDuration); + + /** + * doLimitsTest with default test duration and fields + */ + void doLimitsTest(Calendar& cal, UDate startDate, int32_t endTime); + + UnicodeString& ymdToString(const Calendar& cal, UnicodeString& str); +}; + +#endif /* #if !UCONFIG_NO_FORMATTING */ + +#endif // __CalendarLimitTest__ |