Index: icu46/source/test/intltest/callimts.h |
=================================================================== |
--- icu46/source/test/intltest/callimts.h (revision 0) |
+++ icu46/source/test/intltest/callimts.h (revision 0) |
@@ -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__ |
Property changes on: icu46/source/test/intltest/callimts.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |