1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/********************************************************************
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT:
38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Copyright (c) 2003-2013, International Business Machines Corporation
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Calendar Case Test is a type of CalendarTest which compares the
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * behavior of a calendar to a certain set of 'test cases', involving
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * conversion between julian-day to fields and vice versa.
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "calcasts.h"
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ======= 'Main' ===========================
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "hebrwcal.h" // for Eras
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "indiancal.h"
18c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "coptccal.h"
19c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "ethpccal.h"
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/datefmt.h"
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define CASE(id,test) case id: name = #test; if (exec) { logln(#test "---"); logln((UnicodeString)""); test(); } break
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid CalendarCaseTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    if (exec) logln("TestSuite CalendarCaseTest");
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    switch (index) {
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    CASE(0,IslamicCivil);
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    CASE(1,Hebrew);
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    CASE(2,Indian);
32c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    CASE(3,Coptic);
33c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    CASE(4,Ethiopic);
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    default: name = ""; break;
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    }
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#undef CASE
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ======= Utility functions =================
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid CalendarCaseTest::doTestCases(const TestCase *cases, Calendar *cal) {
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  static const int32_t  ONE_SECOND = 1000;
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  static const int32_t  ONE_MINUTE = 60*ONE_SECOND;
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  static const int32_t  ONE_HOUR   = 60*ONE_MINUTE;
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  static const double ONE_DAY    = 24*ONE_HOUR;
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  static const double JULIAN_EPOCH = -210866760000000.;   // 1/1/4713 BC 12:00
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  int32_t i;
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  UErrorCode status = U_ZERO_ERROR;
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  cal->adoptTimeZone(TimeZone::getGMT()->clone());
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  for(i=0;cases[i].era>=0;i++) {
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDate t = (JULIAN_EPOCH+(ONE_DAY*cases[i].julian));
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    logln("Test case %d:  julianday%f -> date %f\n", i, cases[i].julian, t);
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Millis -> fields
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->setTime(t, status);
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    logln(calToStr(*cal));
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_ERA, cases[i].era, status);
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_YEAR, cases[i].year,status);
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_MONTH, cases[i].month - 1,status);
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_DATE, cases[i].day,status);
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_DAY_OF_WEEK, cases[i].dayOfWeek,status);
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_HOUR, cases[i].hour,status);
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_MINUTE, cases[i].min,status);
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    checkField(cal, UCAL_SECOND, cases[i].sec,status);
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Fields -> millis
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->clear();
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_ERA, cases[i].era);
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_YEAR, cases[i].year);
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_MONTH, cases[i].month - 1);
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_DATE, cases[i].day);
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_DAY_OF_WEEK, cases[i].dayOfWeek);
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_HOUR, cases[i].hour);
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_MINUTE, cases[i].min);
80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    cal->set(UCAL_SECOND, cases[i].sec);
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDate t2 = cal->getTime(status);
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    if(t != t2) {
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      errln("Field->millis: Expected %.0f but got %.0f\n", t, t2);
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      logln(calToStr(*cal));
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    }
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  }
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUBool CalendarCaseTest::checkField(Calendar *cal, UCalendarDateFields field, int32_t value, UErrorCode &status)
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  if(U_FAILURE(status)) return FALSE;
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  int32_t res = cal->get(field, status);
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  if(U_FAILURE(status)) {
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    errln((UnicodeString)"Checking field " + fieldName(field) + " and got " + u_errorName(status));
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    return FALSE;
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  }
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  if(res != value) {
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    errln((UnicodeString)"FAIL: Checking field " + fieldName(field) + " expected " + value + " and got " + res + UnicodeString("\n"));
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    return FALSE;
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  } else {
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    logln((UnicodeString)"Checking field " + fieldName(field) + " == " + value + UnicodeString("\n"));
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  }
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  return TRUE;
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// =========== Test Cases =====================
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruenum { SUN=UCAL_SUNDAY,
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       MON=UCAL_MONDAY,
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       TUE=UCAL_TUESDAY,
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       WED=UCAL_WEDNESDAY,
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       THU=UCAL_THURSDAY,
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       FRI=UCAL_FRIDAY,
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       SAT=UCAL_SATURDAY};
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid CalendarCaseTest::IslamicCivil()
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const TestCase tests[] = {
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // Most of these test cases were taken from the back of
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // "Calendrical Calculations", with some extras added to help
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // debug a few of the problems that cropped up in development.
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // The months in this table are 1-based rather than 0-based,
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // because it's easier to edit that way.
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //                       Islamic
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1507231.5,  0, -1245,   12,   9,  SUN,   0,  0,  0},
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1660037.5,  0,  -813,    2,  23,  WED,   0,  0,  0},
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1746893.5,  0,  -568,    4,   1,  WED,   0,  0,  0},
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1770641.5,  0,  -501,    4,   6,  SUN,   0,  0,  0},
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1892731.5,  0,  -157,   10,  17,  WED,   0,  0,  0},
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1931579.5,  0,   -47,    6,   3,  MON,   0,  0,  0},
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 1974851.5,  0,    75,    7,  13,  SAT,   0,  0,  0},
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2091164.5,  0,   403,   10,   5,  SUN,   0,  0,  0},
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2121509.5,  0,   489,    5,  22,  SUN,   0,  0,  0},
138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2155779.5,  0,   586,    2,   7,  FRI,   0,  0,  0},
139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2174029.5,  0,   637,    8,   7,  SAT,   0,  0,  0},
140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2191584.5,  0,   687,    2,  20,  FRI,   0,  0,  0},
141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2195261.5,  0,   697,    7,   7,  SUN,   0,  0,  0},
142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2229274.5,  0,   793,    7,   1,  SUN,   0,  0,  0},
143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2245580.5,  0,   839,    7,   6,  WED,   0,  0,  0},
144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2266100.5,  0,   897,    6,   1,  SAT,   0,  0,  0},
145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2288542.5,  0,   960,    9,  30,  SAT,   0,  0,  0},
146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2290901.5,  0,   967,    5,  27,  SAT,   0,  0,  0},
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2323140.5,  0,  1058,    5,  18,  WED,   0,  0,  0},
148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2334848.5,  0,  1091,    6,   2,  SUN,   0,  0,  0},
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2348020.5,  0,  1128,    8,   4,  FRI,   0,  0,  0},
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2366978.5,  0,  1182,    2,   3,  SUN,   0,  0,  0},
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2385648.5,  0,  1234,   10,  10,  MON,   0,  0,  0},
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2392825.5,  0,  1255,    1,  11,  WED,   0,  0,  0},
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2416223.5,  0,  1321,    1,  21,  SUN,   0,  0,  0},
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2425848.5,  0,  1348,    3,  19,  SUN,   0,  0,  0},
155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2430266.5,  0,  1360,    9,   8,  MON,   0,  0,  0},
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2430833.5,  0,  1362,    4,  13,  MON,   0,  0,  0},
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2431004.5,  0,  1362,   10,   7,  THU,   0,  0,  0},
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2448698.5,  0,  1412,    9,  13,  TUE,   0,  0,  0},
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2450138.5,  0,  1416,   10,   5,  SUN,   0,  0,  0},
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2465737.5,  0,  1460,   10,  12,  WED,   0,  0,  0},
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { 2486076.5,  0,  1518,    3,   5,  SUN,   0,  0,  0},
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { -1,-1,-1,-1,-1,-1,-1,-1,-1 }
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    Calendar *c = Calendar::createInstance("ar@calendar=islamic-civil", status);
16750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (failure(status, "Calendar::createInstance", TRUE)) return;
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    c->setLenient(TRUE);
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    doTestCases(tests, c);
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const UChar expectedUChars[] = {
1728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        0x0627, 0x0644, 0x062e, 0x0645, 0x064a, 0x0633, 0x060c, 0x0020, 0x0662, 0x0662, 0x0020,
17359d709d503bab6e2b61931737e662dd293b40578ccornelius        0x0634, 0x0648, 0x0627, 0x0644, 0x060c, 0x0020, 0x0661, 0x0663, 0x0668, 0x0669, 0x0020, 0x0647, 0x0640, 0
1748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     };
175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UnicodeString result;
176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    DateFormat *fmt = DateFormat::createDateInstance(DateFormat::kFull, Locale("ar_JO@calendar=islamic-civil"));
177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    if (fmt == NULL) {
178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        dataerrln("Error calling DateFormat::createDateInstance");
179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        delete c;
180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        return;
181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    }
182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    fmt->setTimeZone(*TimeZone::getGMT());
184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    fmt->format((UDate)2486076.5, result);
185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    if (result != expectedUChars) {
186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        errln((UnicodeString)"FAIL: DateFormatting failed. Got " + result + " and expected " + UnicodeString(expectedUChars) + UnicodeString("\n"));
187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        errln("Maybe the resource aliasing isn't working");
188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    }
189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    delete fmt;
190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    delete c;
191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid CalendarCaseTest::Hebrew() {
194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t TISHRI  = HebrewCalendar::TISHRI;
195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t HESHVAN = HebrewCalendar::HESHVAN;
196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t KISLEV  = HebrewCalendar::KISLEV;
197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t TEVET   = HebrewCalendar::TEVET;
198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t SHEVAT  = HebrewCalendar::SHEVAT;
199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t ADAR_1  = HebrewCalendar::ADAR_1;
200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t ADAR    = HebrewCalendar::ADAR;
201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t NISAN   = HebrewCalendar::NISAN;
202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t IYAR    = HebrewCalendar::IYAR;
203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t SIVAN   = HebrewCalendar::SIVAN;
204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //static const int32_t TAMUZ   = HebrewCalendar::TAMUZ;
205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t AV      = HebrewCalendar::AV;
206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t ELUL    = HebrewCalendar::ELUL;
207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const TestCase tests[] = {
209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //
210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // Most of these test cases were taken from the back of
211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // "Calendrical Calculations", with some extras added to help
212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // debug a few of the problems that cropped up in development.
213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //
214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // The months in this table are 1-based rather than 0-based,
215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // because it's easier to edit that way.
216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //
217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1507231.5,  0,  3174,   12,  10,  SUN,   0,  0,  0},
219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1660037.5,  0,  3593,    3,  25,  WED,   0,  0,  0},
220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1746893.5,  0,  3831,    1,   3,  WED,   0,  0,  0},
221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1770641.5,  0,  3896,    1,   9,  SUN,   0,  0,  0},
222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1892731.5,  0,  4230,    4,  18,  WED,   0,  0,  0},
223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1931579.5,  0,  4336,   10,   4,  MON,   0,  0,  0},
224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {1974851.5,  0,  4455,    2,  13,  SAT,   0,  0,  0},
225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2091164.5,  0,  4773,    9,   6,  SUN,   0,  0,  0},
226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2121509.5,  0,  4856,    9,  23,  SUN,   0,  0,  0},
227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2155779.5,  0,  4950,    8,   7,  FRI,   0,  0,  0},
228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2174029.5,  0,  5000,    7,   8,  SAT,   0,  0,  0},
229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2191584.5,  0,  5048,    8,  21,  FRI,   0,  0,  0},
230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2195261.5,  0,  5058,    9,   7,  SUN,   0,  0,  0},
231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2229274.5,  0,  5151,   11,   1,  SUN,   0,  0,  0},
232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2245580.5,  0,  5196,    5,   7,  WED,   0,  0,  0},
233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2266100.5,  0,  5252,    8,   3,  SAT,   0,  0,  0},
234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2288542.5,  0,  5314,    1,   1,  SAT,   0,  0,  0},
235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2290901.5,  0,  5320,    6,  27,  SAT,   0,  0,  0},
236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2323140.5,  0,  5408,   10,  20,  WED,   0,  0,  0},
237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334551.5,  0,  5440,    1,   1,  THU,   0,  0,  0},
238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334581.5,  0,  5440,    2,   1,  SAT,   0,  0,  0},
239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334610.5,  0,  5440,    3,   1,  SUN,   0,  0,  0},
240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334639.5,  0,  5440,    4,   1,  MON,   0,  0,  0},
241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334668.5,  0,  5440,    5,   1,  TUE,   0,  0,  0},
242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334698.5,  0,  5440,    6,   1,  THU,   0,  0,  0},
243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334728.5,  0,  5440,    7,   1,  SAT,   0,  0,  0},
244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334757.5,  0,  5440,    8,   1,  SUN,   0,  0,  0},
245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334787.5,  0,  5440,    9,   1,  TUE,   0,  0,  0},
246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334816.5,  0,  5440,   10,   1,  WED,   0,  0,  0},
247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334846.5,  0,  5440,   11,   1,  FRI,   0,  0,  0},
248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334848.5,  0,  5440,   11,   3,  SUN,   0,  0,  0},
249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2334934.5,  0,  5441,    1,   1,  TUE,   0,  0,  0},
250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2348020.5,  0,  5476,   12,   5,  FRI,   0,  0,  0},
251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2366978.5,  0,  5528,   11,   4,  SUN,   0,  0,  0},
252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2385648.5,  0,  5579,   12,  11,  MON,   0,  0,  0},
253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2392825.5,  0,  5599,    8,  12,  WED,   0,  0,  0},
254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2416223.5,  0,  5663,    8,  22,  SUN,   0,  0,  0},
255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2425848.5,  0,  5689,   12,  19,  SUN,   0,  0,  0},
256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2430266.5,  0,  5702,    1,   8,  MON,   0,  0,  0},
257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2430833.5,  0,  5703,    8,  14,  MON,   0,  0,  0},
258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2431004.5,  0,  5704,    1,   8,  THU,   0,  0,  0},
259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2448698.5,  0,  5752,    7,  12,  TUE,   0,  0,  0},
260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2450138.5,  0,  5756,    7,   5,  SUN,   0,  0,  0},
261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2465737.5,  0,  5799,    2,  12,  WED,   0,  0,  0},
262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2486076.5,  0,  5854,   12,   5,  SUN,   0,  0,  0},
263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // Test cases taken from a table of 14 "year types" in the Help file
265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // of the application "Hebrew Calendar"
266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2456187.5,  0,  5773,    1,   1,  MON,   0,  0,  0},
267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2459111.5,  0,  5781,    1,   1,  SAT,   0,  0,  0},
268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2453647.5,  0,  5766,    1,   1,  TUE,   0,  0,  0},
269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2462035.5,  0,  5789,    1,   1,  THU,   0,  0,  0},
270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2458756.5,  0,  5780,    1,   1,  MON,   0,  0,  0},
271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2460586.5,  0,  5785,    1,   1,  THU,   0,  0,  0},
272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2463864.5,  0,  5794,    1,   1,  SAT,   0,  0,  0},
273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2463481.5,  0,  5793,    1,   1,  MON,   0,  0,  0},
274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2470421.5,  0,  5812,    1,   1,  THU,   0,  0,  0},
275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2460203.5,  0,  5784,    1,   1,  SAT,   0,  0,  0},
276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2459464.5,  0,  5782,    1,   1,  TUE,   0,  0,  0},
277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2467142.5,  0,  5803,    1,   1,  MON,   0,  0,  0},
278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2455448.5,  0,  5771,    1,   1,  THU,   0,  0,  0},
279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // Test cases for JB#2327
280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // http://www.fourmilab.com/documents/calendar/
281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        // http://www.calendarhome.com/converter/
282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //      2452465.5, 2002, JULY, 10, 5762, AV, 1,
283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //      2452494.5, 2002, AUGUST, 8, 5762, AV, 30,
284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //      2452495.5, 2002, AUGUST, 9, 5762, ELUL, 1,
285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //      2452523.5, 2002, SEPTEMBER, 6, 5762, ELUL, 29,
286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //      2452524.5, 2002, SEPTEMBER, 7, 5763, TISHRI, 1,
287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2452465.5,  0,  5762,    AV+1,  1,  WED,   0,  0,  0},
289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2452494.5,  0,  5762,    AV+1, 30,  THU,   0,  0,  0},
290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2452495.5,  0,  5762,  ELUL+1,  1,  FRI,   0,  0,  0},
291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2452523.5,  0,  5762,  ELUL+1, 29,  FRI,   0,  0,  0},
292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        {2452524.5,  0,  5763, TISHRI+1,  1,  SAT,   0,  0,  0},
293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { -1,-1,-1,-1,-1,-1,-1,-1,-1 }
294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    Calendar *c = Calendar::createInstance("he_HE@calendar=hebrew", status);
29850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (failure(status, "Calendar::createInstance", TRUE)) return;
299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    c->setLenient(TRUE);
300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    doTestCases(tests, c);
301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Additional test cases for bugs found during development
304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //           G.YY/MM/DD  Era  Year  Month Day  WkDay Hour Min Sec
305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //{1013, 9, 8, 0,  4774,    1,   1,  TUE,   0,  0,  0},
306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //{1239, 9, 1, 0,  5000,    1,   1,  THU,   0,  0,  0},
307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //{1240, 9,18, 0,  5001,    1,   1,  TUE,   0,  0,  0},
308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    delete c;
311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid CalendarCaseTest::Indian() {
314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Months in indian calendar are 0-based. Here taking 1-based names:
315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t CHAITRA    = IndianCalendar::CHAITRA + 1;
316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t VAISAKHA   = IndianCalendar::VAISAKHA + 1;
317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t JYAISTHA   = IndianCalendar::JYAISTHA + 1;
318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t ASADHA     = IndianCalendar::ASADHA + 1;
319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t SRAVANA    = IndianCalendar::SRAVANA + 1 ;
320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t BHADRA     = IndianCalendar::BHADRA + 1 ;
321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t ASVINA     = IndianCalendar::ASVINA  + 1 ;
322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t KARTIKA    = IndianCalendar::KARTIKA + 1 ;
323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t AGRAHAYANA = IndianCalendar::AGRAHAYANA + 1 ;
324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t PAUSA      = IndianCalendar::PAUSA + 1 ;
325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t MAGHA      = IndianCalendar::MAGHA + 1 ;
326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const int32_t PHALGUNA   = IndianCalendar::PHALGUNA + 1 ;
327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static const TestCase tests[] = {
330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Test dates generated from:
331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // http://www.fourmilab.ch/documents/calendar/
332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // A huge list of test cases to make sure that computeTime and computeFields
334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // work properly for a wide range of data in the Indian civil calendar.
335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    //
336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Julian Day   Era Year     Month         Day  WkDay Hour Min Sec
337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {1770641.5,  0,    57,    ASVINA,       10,  SUN,   0,  0,  0},
338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {1892731.5,  0,   391,    PAUSA,        18,  WED,   0,  0,  0},
339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {1931579.5,  0,   498,    VAISAKHA,     30,  MON,   0,  0,  0},
340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {1974851.5,  0,   616,    KARTIKA,      19,  SAT,   0,  0,  0},
341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2091164.5,  0,   935,    VAISAKHA,      5,  SUN,   0,  0,  0},
342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2121509.5,  0,  1018,    JYAISTHA,      3,  SUN,   0,  0,  0},
343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2155779.5,  0,  1112,    CHAITRA,       2,  FRI,   0,  0,  0},
344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2174029.5,  0,  1161,    PHALGUNA,     20,  SAT,   0,  0,  0},
345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2191584.5,  0,  1210,    CHAITRA,      13,  FRI,   0,  0,  0},
346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2195261.5,  0,  1220,    VAISAKHA,      7,  SUN,   0,  0,  0},
347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2229274.5,  0,  1313,    JYAISTHA,     22,  SUN,   0,  0,  0},
348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2245580.5,  0,  1357,    MAGHA,        14,  WED,   0,  0,  0},
349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2266100.5,  0,  1414,    CHAITRA,      20,  SAT,   0,  0,  0},
350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2288542.5,  0,  1475,    BHADRA,       28,  SAT,   0,  0,  0},
351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2290901.5,  0,  1481,    PHALGUNA,     15,  SAT,   0,  0,  0},
352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2323140.5,  0,  1570,    JYAISTHA,     20,  WED,   0,  0,  0},
353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334551.5,  0,  1601,    BHADRA,       16,  THU,   0,  0,  0},
354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334581.5,  0,  1601,    ASVINA,       15,  SAT,   0,  0,  0},
355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334610.5,  0,  1601,    KARTIKA,      14,  SUN,   0,  0,  0},
356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334639.5,  0,  1601,    AGRAHAYANA,   13,  MON,   0,  0,  0},
357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334668.5,  0,  1601,    PAUSA,        12,  TUE,   0,  0,  0},
358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334698.5,  0,  1601,    MAGHA,        12,  THU,   0,  0,  0},
359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334728.5,  0,  1601,    PHALGUNA,     12,  SAT,   0,  0,  0},
360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334757.5,  0,  1602,    CHAITRA,      11,  SUN,   0,  0,  0},
361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334787.5,  0,  1602,    VAISAKHA,     10,  TUE,   0,  0,  0},
362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334816.5,  0,  1602,    JYAISTHA,      8,  WED,   0,  0,  0},
363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334846.5,  0,  1602,    ASADHA,        7,  FRI,   0,  0,  0},
364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334848.5,  0,  1602,    ASADHA,        9,  SUN,   0,  0,  0},
365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2348020.5,  0,  1638,    SRAVANA,       2,  FRI,   0,  0,  0},
366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2334934.5,  0,  1602,    ASVINA,        2,  TUE,   0,  0,  0},
367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2366978.5,  0,  1690,    JYAISTHA,     29,  SUN,   0,  0,  0},
368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2385648.5,  0,  1741,    SRAVANA,      11,  MON,   0,  0,  0},
369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2392825.5,  0,  1761,    CHAITRA,       6,  WED,   0,  0,  0},
370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2416223.5,  0,  1825,    CHAITRA,      29,  SUN,   0,  0,  0},
371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2425848.5,  0,  1851,    BHADRA,        3,  SUN,   0,  0,  0},
372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2430266.5,  0,  1863,    ASVINA,        7,  MON,   0,  0,  0},
373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2430833.5,  0,  1865,    CHAITRA,      29,  MON,   0,  0,  0},
374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2431004.5,  0,  1865,    ASVINA,       15,  THU,   0,  0,  0},
375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2448698.5,  0,  1913,    PHALGUNA,     27,  TUE,   0,  0,  0},
376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2450138.5,  0,  1917,    PHALGUNA,      6,  SUN,   0,  0,  0},
377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2465737.5,  0,  1960,    KARTIKA,      19,  WED,   0,  0,  0},
378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       {2486076.5,  0,  2016,    ASADHA,       27,  SUN,   0,  0,  0},
379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        { -1,-1,-1,-1,-1,-1,-1,-1,-1 }
380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    Calendar *c = Calendar::createInstance("hi_IN@calendar=indian", status);
38450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (failure(status, "Calendar::createInstance", TRUE)) return;
385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    c->setLenient(TRUE);
386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    doTestCases(tests, c);
387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    delete c;
389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}
390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
391c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid CalendarCaseTest::Coptic() {
392c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    static const TestCase tests[] = {
393c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        //      JD Era  Year  Month  Day WkDay  Hour Min Sec
394c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2401442.5,  1,  1579,    2,  20,  WED,    0,  0,  0}, // Gregorian: 20/10/1862
395c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402422.5,  1,  1581,   10,  29,  WED,    0,  0,  0}, // Gregorian: 05/07/1865
396c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402630.5,  1,  1582,    5,  22,  MON,    0,  0,  0}, // Gregorian: 29/01/1866
397c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402708.5,  1,  1582,    8,  10,  TUE,    0,  0,  0}, // Gregorian: 17/04/1866
398c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402971.5,  1,  1583,    4,  28,  SAT,    0,  0,  0}, // Gregorian: 05/01/1867
399c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2403344.5,  1,  1584,    5,   5,  MON,    0,  0,  0}, // Gregorian: 13/01/1868
400c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1721059.5,  0,   285,    5,   7,  SAT,    0,  0,  0}, // Gregorian: 01/01/0000
401c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1721425.5,  0,   284,    5,   8,  MON,    0,  0,  0}, // Gregorian: 01/01/0001
402c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1824663.5,  0,     2,   13,   6,  WED,    0,  0,  0}, // Gregorian: 29/08/0283
403c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1824664.5,  0,     1,    1,   1,  THU,    0,  0,  0}, // Gregorian: 30/08/0283
404c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1825029.5,  1,     1,    1,   1,  FRI,    0,  0,  0}, // Gregorian: 29/08/0284
405c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1825394.5,  1,     2,    1,   1,  SAT,    0,  0,  0}, // Gregorian: 29/08/0285
406c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1825759.5,  1,     3,    1,   1,  SUN,    0,  0,  0}, // Gregorian: 29/08/0286
407c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1826125.5,  1,     4,    1,   1,  TUE,    0,  0,  0}, // Gregorian: 30/08/0287
408c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1825028.5,  0,     1,   13,   5,  THU,    0,  0,  0}, // Gregorian: 28/08/0284
409c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1825393.5,  1,     1,   13,   5,  FRI,    0,  0,  0}, // Gregorian: 28/08/0285
410c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1825758.5,  1,     2,   13,   5,  SAT,    0,  0,  0}, // Gregorian: 28/08/0286
411c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1826123.5,  1,     3,   13,   5,  SUN,    0,  0,  0}, // Gregorian: 28/08/0287
412c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1826124.5,  1,     3,   13,   6,  MON,    0,  0,  0}, // Gregorian: 29/08/0287
413c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru          // above is first coptic leap year
414c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1826489.5,  1,     4,   13,   5,  TUE,    0,  0,  0}, // Gregorian: 28/08/0288
415c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299158.5,  1,  1299,    2,   6,  WED,    0,  0,  0}, // Gregorian: 13/10/1582
416c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299159.5,  1,  1299,    2,   7,  THU,    0,  0,  0}, // Gregorian: 14/10/1582
417c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299160.5,  1,  1299,    2,   8,  FRI,    0,  0,  0}, // Gregorian: 15/10/1582
418c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299161.5,  1,  1299,    2,   9,  SAT,    0,  0,  0}, // Gregorian: 16/10/1582
419c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
420c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2415020.5,  1,  1616,    4,  23,  MON,    0,  0,  0}, // Gregorian: 01/01/1900
421c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2453371.5,  1,  1721,    4,  23,  SAT,    0,  0,  0}, // Gregorian: 01/01/2005
422c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2555528.5,  1,  2000,   13,   5,  FRI,    0,  0,  0}, // Gregorian: 12/09/2284
423c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {       -1, -1,    -1,   -1,  -1,   -1,   -1, -1, -1}
424c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
425c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
426c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
427c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    Calendar *c = Calendar::createInstance("cop_EG@calendar=coptic", status);
42850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (failure(status, "Calendar::createInstance", TRUE)) return;
42950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
430c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    c->setLenient(TRUE);
431c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    doTestCases(tests, c);
432c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
433c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete c;
434c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
435c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
436c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruvoid CalendarCaseTest::Ethiopic() {
437c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    static TestCase tests[] = {
438c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        //      JD Era  Year  Month  Day WkDay  Hour Min Sec
439c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2401442.5,  1,  1855,    2,  20,  WED,    0,  0,  0}, // Gregorian: 29/10/1862
440c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402422.5,  1,  1857,   10,  29,  WED,    0,  0,  0}, // Gregorian: 05/07/1865
441c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402630.5,  1,  1858,    5,  22,  MON,    0,  0,  0}, // Gregorian: 29/01/1866
442c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402708.5,  1,  1858,    8,  10,  TUE,    0,  0,  0}, // Gregorian: 17/04/1866
443c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2402971.5,  1,  1859,    4,  28,  SAT,    0,  0,  0}, // Gregorian: 05/01/1867
444c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2403344.5,  1,  1860,    5,   5,  MON,    0,  0,  0}, // Gregorian: 13/01/1868
445c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1721059.5,  0,  5492,    5,   7,  SAT,    0,  0,  0}, // Gregorian: 01/01/0000
446c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1721425.5,  0,  5493,    5,   8,  MON,    0,  0,  0}, // Gregorian: 01/01/0001
447c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1723854.5,  0,  5499,   13,   6,  MON,    0,  0,  0}, // Gregorian: 27/08/0007
448c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
449c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1723855.5,  0,  5500,    1,   1,  TUE,    0,  0,  0}, // Gregorian: 28/08/0007
450c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1724220.5,  1,     1,    1,   1,  WED,    0,  0,  0}, // Gregorian: 27/08/0008
451c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1724585.5,  1,     2,    1,   1,  THU,    0,  0,  0}, // Gregorian: 27/08/0009
452c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1724950.5,  1,     3,    1,   1,  FRI,    0,  0,  0}, // Gregorian: 27/08/0010
453c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
454c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        //{1724536.5,  1,     4,    1,   1,  SUN,    0,  0,  0}, // Gregorian: 28/08/0011
455c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1725316.5,  1,     4,    1,   1,  SUN,    0,  0,  0}, // Gregorian: 28/08/0011 - dlf
456c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1724219.5,  0,  5500,   13,   5,  TUE,    0,  0,  0}, // Gregorian: 26/08/0008
457c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1724584.5,  1,     1,   13,   5,  WED,    0,  0,  0}, // Gregorian: 26/08/0009
458c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1724949.5,  1,     2,   13,   5,  THU,    0,  0,  0}, // Gregorian: 26/08/0010
459c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1725314.5,  1,     3,   13,   5,  FRI,    0,  0,  0}, // Gregorian: 26/08/0011
460c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1725315.5,  1,     3,   13,   6,  SAT,    0,  0,  0}, // Gregorian: 27/08/0011 - first ethiopic leap year
461c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        //{1725560.5,  1,     4,   13,   5,  SUN,    0,  0,  0}, // Gregorian: 26/08/0012 - dlf
462c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {1725680.5,  1,     4,   13,   5,  SUN,    0,  0,  0}, // Gregorian: 26/08/0012
463c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299158.5,  1,  1575,    2,   6,  WED,    0,  0,  0}, // Gregorian: 13/10/1582
464c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299159.5,  1,  1575,    2,   7,  THU,    0,  0,  0}, // Gregorian: 14/10/1582  Julian 04/10/1582
465c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
466c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299160.5,  1,  1575,    2,   8,  FRI,    0,  0,  0}, // Gregorian: 15/10/1582
467c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2299161.5,  1,  1575,    2,   9,  SAT,    0,  0,  0}, // Gregorian: 16/10/1582
468c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
469c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2415020.5,  1,  1892,    4,  23,  MON,    0,  0,  0}, // Gregorian: 01/01/1900
470c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2453371.5,  1,  1997,    4,  23,  SAT,    0,  0,  0}, // Gregorian: 01/01/2005
471c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {2454719.5,  1,  2000,   13,   5,  WED,    0,  0,  0}, // Gregorian: 10/09/2008
472c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        {       -1, -1,    -1,   -1,  -1,   -1,   -1, -1, -1}
473c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    };
474c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
475c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    UErrorCode status = U_ZERO_ERROR;
476c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    Calendar *c = Calendar::createInstance("am_ET@calendar=ethiopic", status);
47750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (failure(status, "Calendar::createInstance", TRUE)) return;
478c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    c->setLenient(TRUE);
479c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    doTestCases(tests, c);
480c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
481c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete c;
482c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
483c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    // Testing Amete Alem mode
484c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    int32_t i;
485c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    TestCase *tcase = tests;
486c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    for (i = 0; tcase[i].era >= 0; i++) {
487c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        if (tcase[i].era == 1) {
488c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            tcase[i].era = 0; // Change to Amete Alem era
489c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru            tcase[i].year += 5500; // Amete Mihret 1 = Amete Alem 5501
490c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru        }
491c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    }
492c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    c = Calendar::createInstance("am_ET@calendar=ethiopic-amete-alem", status);
49350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    if (failure(status, "Calendar::createInstance", TRUE)) return;
494c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    c->setLenient(TRUE);
495c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    doTestCases(tests, c);
496c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
497c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru    delete c;
498c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}
499c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
500c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
502