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