1 /******************************************************************** 2 * COPYRIGHT: 3 * Copyright (c) 2003-2008, International Business Machines Corporation 4 * and others. All Rights Reserved. 5 ******************************************************************** 6 * Calendar Case Test is a type of CalendarTest which compares the 7 * behavior of a calendar to a certain set of 'test cases', involving 8 * conversion between julian-day to fields and vice versa. 9 ********************************************************************/ 10 11 #ifndef __CalendarCaseTest__ 12 #define __CalendarCaseTest__ 13 14 #include "unicode/utypes.h" 15 16 #if !UCONFIG_NO_FORMATTING 17 18 #include "unicode/calendar.h" 19 #include "unicode/smpdtfmt.h" 20 #include "caltest.h" 21 22 class CalendarCaseTest: public CalendarTest { 23 public: 24 virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ); 25 26 /* Test case struct */ 27 struct TestCase { 28 double julian; // Julian Date 29 int32_t era; 30 int32_t year; 31 int32_t month; 32 int32_t day; 33 int32_t dayOfWeek; 34 int32_t hour; 35 int32_t min; 36 int32_t sec; 37 }; 38 39 /** 40 * @param cases array of items to test. Terminate with a "-1" for era. 41 */ 42 void doTestCases(const TestCase *cases, Calendar *cal); 43 44 private: 45 /** 46 * Utility function to test out a specific field 47 * @param cal calendar 48 * @param field which field 49 * @param value expected value 50 * @param status err status 51 * @return boolean indicating success (TRUE) or failure (FALSE) of the test. 52 */ 53 UBool checkField(Calendar *cal, UCalendarDateFields field, int32_t value, UErrorCode &status); 54 55 private: 56 // test cases 57 void IslamicCivil(); 58 void Hebrew(); 59 void Indian(); 60 void Coptic(); 61 void Ethiopic(); 62 }; 63 64 #endif 65 #endif 66