diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-08-10 12:03:08 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-08-10 12:03:08 +0000 |
commit | 79b8b3a76d8eda7372bb4dedae0ec7aebdaebc12 (patch) | |
tree | 9e4992c8719febb576deb6120740611380d71f7a /Build/source/libs/icu/icu-4.8.1/test/intltest/callimts.h | |
parent | 8cd13eb8f4bb7b92c6d9bb50aff9a62c37df026c (diff) |
icu 4.8.1
git-svn-id: svn://tug.org/texlive/trunk@23480 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/icu/icu-4.8.1/test/intltest/callimts.h')
-rw-r--r-- | Build/source/libs/icu/icu-4.8.1/test/intltest/callimts.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.8.1/test/intltest/callimts.h b/Build/source/libs/icu/icu-4.8.1/test/intltest/callimts.h new file mode 100644 index 00000000000..7d7c8062dbd --- /dev/null +++ b/Build/source/libs/icu/icu-4.8.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__ |