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