17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2005-2010, International Business Machines Corporation and * 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. * 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.calendar; 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Date; 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Locale; 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.impl.LocaleUtility; 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.DateFormat; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.SimpleDateFormat; 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.Calendar; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.EthiopicCalendar; 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.GregorianCalendar; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.TimeZone; 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.util.ULocale; 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Tests for the <code>EthiopicCalendar</code> class. 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class EthiopicTest extends CalendarTest 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert{ 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static void main(String args[]) throws Exception { 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new EthiopicTest().run(args); 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** Constants to save typing. */ 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int MESKEREM = EthiopicCalendar.MESKEREM; 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int TEKEMT = EthiopicCalendar.TEKEMT; 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int HEDAR = EthiopicCalendar.HEDAR; 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int TAHSAS = EthiopicCalendar.TAHSAS; 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int TER = EthiopicCalendar.TER; 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int YEKATIT = EthiopicCalendar.YEKATIT; 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int MEGABIT = EthiopicCalendar.MEGABIT; 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int MIAZIA = EthiopicCalendar.MIAZIA; 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int GENBOT = EthiopicCalendar.GENBOT; 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int SENE = EthiopicCalendar.SENE; 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int HAMLE = EthiopicCalendar.HAMLE; 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int NEHASSE = EthiopicCalendar.NEHASSE; 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static final int PAGUMEN = EthiopicCalendar.PAGUMEN; 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* DY[20050507] I don't know what this is for yet: 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestRoll() { 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int[][] tests = new int[][] { 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // input roll by output 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // year month day field amount year month day 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, QIDAH, 2, MONTH, 1, 0001, HIJJAH, 2 }, // non-leap years 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, QIDAH, 2, MONTH, 2, 0001, MUHARRAM, 2 }, 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, QIDAH, 2, MONTH, -1, 0001, SHAWWAL, 2 }, 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, MUHARRAM, 2, MONTH, 12, 0001, MUHARRAM, 2 }, 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, MUHARRAM, 2, MONTH, 13, 0001, SAFAR, 2 }, 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, HIJJAH, 1, DATE, 30, 0001, HIJJAH, 2 }, // 29-day month 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0002, HIJJAH, 1, DATE, 31, 0002, HIJJAH, 2 }, // 30-day month 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Try some rolls that require other fields to be adjusted 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0001, MUHARRAM, 30, MONTH, 1, 0001, SAFAR, 29 }, 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 0002, HIJJAH, 30, YEAR, -1, 0001, HIJJAH, 29 }, 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = newCivil(); 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doRollAdd(ROLL, cal, tests); 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* Test dates from: 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * "The Amharic Letters of Emperor Theodore of Ethiopia to Queen Victoria and 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Her Special Envoy", David Appleyard, Girma Selasse Asfaw, Oxford University Press, 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * June 1 1979, ISBN: 0856726605, Longwood Pr Ltd 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Ethiopic Gregorian JD 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 20/02/1855 29/10/1862 2401443 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 29/10/1857 05/07/1865 2402423 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 22/05/1858 29/01/1866 2402631 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 10/08/1858 17/04/1866 2402709 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 28/04/1859 05/01/1867 2402972 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/05/1860 13/01/1868 2403345 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * -------------------------------------------------- 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * From the Calendrica applet: http://emr.cs.iit.edu/home/reingold/calendar-book/Calendrica.html 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Ethiopic Gregorian JD 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 07/05/-8 01/01/0000 1721060 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 08/05/-7 01/01/0001 1721426 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 06/13/-1 27/08/0007 1723855 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 01/01/0000 28/08/0007 1723856 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 01/01/0001 27/08/0008 1724221 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 01/01/0002 27/08/0009 1724586 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 01/01/0003 27/08/0010 1724951 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 01/01/0004 28/08/0011 1724537 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/13/0000 26/08/0008 1724220 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/13/0001 26/08/0009 1724585 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/13/0002 26/08/0010 1724950 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/13/0003 26/08/0011 1725315 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 06/13/0003 27/08/0011 1725316 first ethiopian leap year 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/13/0004 26/08/0012 1725561 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 06/02/1575 13/10/1582 2299159 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 07/02/1575 14/10/1582 2299160 Julian 04/10/1582 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 08/02/1575 15/10/1582 2299161 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 09/02/1575 16/10/1582 2299162 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 23/04/1892 01/01/1900 2415021 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 23/04/1997 01/01/2005 2453372 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * 05/13/2000 10/09/2008 2454720 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** A huge list of test cases to make sure that computeTime and computeFields 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * work properly for a wide range of data in the civil calendar. 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestCases() 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert final TestCase[] tests = { 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // The months in this table are 1-based rather than 0-based, 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // because it's easier to edit that way. 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Ethiopic 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Julian Day Era Year Month Day WkDay Hour Min Sec 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Dates from "Emporer Theodore..." 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2401442.5, 1, 1855, 2, 20, WED, 0, 0, 0), // Gregorian: 29/10/1862 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402422.5, 1, 1857, 10, 29, WED, 0, 0, 0), // Gregorian: 05/07/1865 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402630.5, 1, 1858, 5, 22, MON, 0, 0, 0), // Gregorian: 29/01/1866 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402708.5, 1, 1858, 8, 10, TUE, 0, 0, 0), // Gregorian: 17/04/1866 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402971.5, 1, 1859, 4, 28, SAT, 0, 0, 0), // Gregorian: 05/01/1867 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2403344.5, 1, 1860, 5, 5, MON, 0, 0, 0), // Gregorian: 13/01/1868 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Miscellaneous: 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* Skip these tests until JD bug fixed in the Gregorian calendar: 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * http://www.jtcsv.com/cgibin/icu-bugs/incoming?id=4406;page=2;user=guest 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1721059.5, 0, 5492, 5, 7, SAT, 0, 0, 0), // Gregorian: 01/01/0000 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1721425.5, 0, 5493, 5, 8, MON, 0, 0, 0), // Gregorian: 01/01/0001 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1723854.5, 0, 5499, 13, 6, MON, 0, 0, 0), // Gregorian: 27/08/0007 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1723855.5, 0, 5500, 1, 1, TUE, 0, 0, 0), // Gregorian: 28/08/0007 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724220.5, 1, 1, 1, 1, WED, 0, 0, 0), // Gregorian: 27/08/0008 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724585.5, 1, 2, 1, 1, THU, 0, 0, 0), // Gregorian: 27/08/0009 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724950.5, 1, 3, 1, 1, FRI, 0, 0, 0), // Gregorian: 27/08/0010 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new TestCase(1724536.5, 1, 4, 1, 1, SUN, 0, 0, 0), // Gregorian: 28/08/0011 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725316.5, 1, 4, 1, 1, SUN, 0, 0, 0), // Gregorian: 28/08/0011 - dlf 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724219.5, 0, 5500, 13, 5, TUE, 0, 0, 0), // Gregorian: 26/08/0008 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724584.5, 1, 1, 13, 5, WED, 0, 0, 0), // Gregorian: 26/08/0009 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724949.5, 1, 2, 13, 5, THU, 0, 0, 0), // Gregorian: 26/08/0010 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725314.5, 1, 3, 13, 5, FRI, 0, 0, 0), // Gregorian: 26/08/0011 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725315.5, 1, 3, 13, 6, SAT, 0, 0, 0), // Gregorian: 27/08/0011 - first ethiopic leap year 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new TestCase(1725560.5, 1, 4, 13, 5, SUN, 0, 0, 0), // Gregorian: 26/08/0012 - dlf 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725680.5, 1, 4, 13, 5, SUN, 0, 0, 0), // Gregorian: 26/08/0012 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299158.5, 1, 1575, 2, 6, WED, 0, 0, 0), // Gregorian: 13/10/1582 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299159.5, 1, 1575, 2, 7, THU, 0, 0, 0), // Gregorian: 14/10/1582 Julian 04/10/1582 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299160.5, 1, 1575, 2, 8, FRI, 0, 0, 0), // Gregorian: 15/10/1582 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299161.5, 1, 1575, 2, 9, SAT, 0, 0, 0), // Gregorian: 16/10/1582 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2415020.5, 1, 1892, 4, 23, MON, 0, 0, 0), // Gregorian: 01/01/1900 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2453371.5, 1, 1997, 4, 23, SAT, 0, 0, 0), // Gregorian: 01/01/2005 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2454719.5, 1, 2000, 13, 5, WED, 0, 0, 0), // Gregorian: 10/09/2008 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert final TestCase[] testsAmeteAlem = { 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // The months in this table are 1-based rather than 0-based, 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // because it's easier to edit that way. 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Ethiopic 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Julian Day Era Year Month Day WkDay Hour Min Sec 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Dates from "Emporer Theodore..." 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2401442.5, 0, 7355, 2, 20, WED, 0, 0, 0), // Gregorian: 29/10/1862 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402422.5, 0, 7357, 10, 29, WED, 0, 0, 0), // Gregorian: 05/07/1865 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402630.5, 0, 7358, 5, 22, MON, 0, 0, 0), // Gregorian: 29/01/1866 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402708.5, 0, 7358, 8, 10, TUE, 0, 0, 0), // Gregorian: 17/04/1866 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2402971.5, 0, 7359, 4, 28, SAT, 0, 0, 0), // Gregorian: 05/01/1867 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2403344.5, 0, 7360, 5, 5, MON, 0, 0, 0), // Gregorian: 13/01/1868 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Miscellaneous: 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /* Skip these tests until JD bug fixed in the Gregorian calendar: 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * http://www.jtcsv.com/cgibin/icu-bugs/incoming?id=4406;page=2;user=guest 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1721059.5, 0, 5492, 5, 7, SAT, 0, 0, 0), // Gregorian: 01/01/0000 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1721425.5, 0, 5493, 5, 8, MON, 0, 0, 0), // Gregorian: 01/01/0001 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1723854.5, 0, 5499, 13, 6, MON, 0, 0, 0), // Gregorian: 27/08/0007 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1723855.5, 0, 5500, 1, 1, TUE, 0, 0, 0), // Gregorian: 28/08/0007 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724220.5, 0, 5501, 1, 1, WED, 0, 0, 0), // Gregorian: 27/08/0008 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724585.5, 0, 5502, 1, 1, THU, 0, 0, 0), // Gregorian: 27/08/0009 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724950.5, 0, 5503, 1, 1, FRI, 0, 0, 0), // Gregorian: 27/08/0010 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new TestCase(1724536.5, 0, 5504, 1, 1, SUN, 0, 0, 0), // Gregorian: 28/08/0011 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725316.5, 0, 5504, 1, 1, SUN, 0, 0, 0), // Gregorian: 28/08/0011 - dlf 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724219.5, 0, 5500, 13, 5, TUE, 0, 0, 0), // Gregorian: 26/08/0008 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724584.5, 0, 5501, 13, 5, WED, 0, 0, 0), // Gregorian: 26/08/0009 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1724949.5, 0, 5502, 13, 5, THU, 0, 0, 0), // Gregorian: 26/08/0010 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725314.5, 0, 5503, 13, 5, FRI, 0, 0, 0), // Gregorian: 26/08/0011 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725315.5, 0, 5503, 13, 6, SAT, 0, 0, 0), // Gregorian: 27/08/0011 - first ethiopic leap year 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new TestCase(1725560.5, 0, 5504, 13, 5, SUN, 0, 0, 0), // Gregorian: 26/08/0012 - dlf 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(1725680.5, 0, 5504, 13, 5, SUN, 0, 0, 0), // Gregorian: 26/08/0012 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299158.5, 0, 7075, 2, 6, WED, 0, 0, 0), // Gregorian: 13/10/1582 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299159.5, 0, 7075, 2, 7, THU, 0, 0, 0), // Gregorian: 14/10/1582 Julian 04/10/1582 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299160.5, 0, 7075, 2, 8, FRI, 0, 0, 0), // Gregorian: 15/10/1582 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2299161.5, 0, 7075, 2, 9, SAT, 0, 0, 0), // Gregorian: 16/10/1582 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2415020.5, 0, 7392, 4, 23, MON, 0, 0, 0), // Gregorian: 01/01/1900 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2453371.5, 0, 7497, 4, 23, SAT, 0, 0, 0), // Gregorian: 01/01/2005 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestCase(2454719.5, 0, 7500, 13, 5, WED, 0, 0, 0), // Gregorian: 10/09/2008 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar testCalendar = new EthiopicCalendar(); 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testCalendar.setLenient(true); 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTestCases(tests, testCalendar); 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // Testing Amete Alem mode 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar testCalendarAmeteAlem = new EthiopicCalendar(); 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testCalendarAmeteAlem.setAmeteAlemEra(true); 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testCalendarAmeteAlem.setLenient(true); 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTestCases(testsAmeteAlem, testCalendarAmeteAlem); 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // basic check to see that we print out eras ok 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // eventually should modify to use locale strings and formatter appropriate to coptic calendar 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestEraStart() { 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd, yyyy GG"); 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fmt.setCalendar(new EthiopicCalendar()); 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(1, 0, 1); 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("Ethiopic Date", "Wed Jan 01, 0001 AD", fmt.format(cal)); 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.set(Calendar.ERA, 0); 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.set(Calendar.YEAR, 5500); 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("Ethiopic Date", "Tue Jan 01, 5500 BC", fmt.format(cal)); 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // The gregorian calendar gets off by two days when 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // the date gets low, unless the gregorian changeover is set to 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // very early. The funny thing is, it's ok for dates in the year 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // 283, but not in the year 7, and it claims to be ok until the year 4. 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // should track down when the dates start to differ... 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert GregorianCalendar gc = new GregorianCalendar(); 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert gc.setGregorianChange(new Date(Long.MIN_VALUE)); // act like proleptic Gregorian 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert gc.setTime(cal.getTime()); 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fmt.setCalendar(new GregorianCalendar()); 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert assertEquals("Gregorian Date", "Tue Aug 28, 0007 AD", fmt.format(gc)); 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestBasic() { 2577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(); 2587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.clear(); 2597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.set(1000, 0, 30); 2607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("1000/0/30-> " + 2617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(YEAR) + "/" + 2627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(MONTH) + "/" + 2637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(DATE)); 2647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.clear(); 2657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.set(1, 0, 30); 2667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("1/0/30 -> " + 2677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(YEAR) + "/" + 2687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(MONTH) + "/" + 2697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(DATE)); 2707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestJD(){ 2737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int jd = EthiopicCalendar.EthiopicToJD(1567,8,9); 2747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(); 2757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.clear(); 2767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.set(Calendar.JULIAN_DAY, jd); 2777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (cal.get(Calendar.EXTENDED_YEAR) == 1567 && 2787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(Calendar.MONTH) == 8 && 2797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.get(Calendar.DAY_OF_MONTH) == 9){ 2807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln("EthiopicCalendar.getDateFromJD tested"); 2817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("EthiopicCalendar.getDateFromJD failed"); 2837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /** 2877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Test limits of the Coptic calendar 2887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 2897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestLimits() { 2907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Calendar cal = Calendar.getInstance(); 2917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.set(2007, Calendar.JANUARY, 1); 2927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar ethiopic = new EthiopicCalendar(); 2937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doLimitsTest(ethiopic, null, cal.getTime()); 2947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTheoreticalLimitsTest(ethiopic, true); 2957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestCoverage() { 2997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(TimeZone) 3027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault()); 3037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with TimeZone"); 3057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(ULocale) 3107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(ULocale.getDefault()); 3117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with ULocale"); 3137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(Locale) 3187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(Locale.getDefault()); 3197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with Locale"); 3217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(TimeZone, Locale) 3267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault(), Locale.getDefault()); 3277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with TimeZone,Locale"); 3297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(TimeZone, ULocale) 3347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault(), ULocale.getDefault()); 3357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with TimeZone,ULocale"); 3377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(Date) 3427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(new Date()); 3437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with Date"); 3457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(int year, int month, int date) 3507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1); 3517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with year,month,date"); 3537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // new EthiopicCalendar(int year, int month, int date, int hour, int minute, int second) 3587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1, 1, 1, 1); 3597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if(cal == null){ 3607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("could not create EthiopicCalendar with year,month,date,hour,minute,second"); 3617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // setCivil/isCivil 3667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // operations on non-civil calendar 3677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = newAmeteAlemEraCalendar(); 3687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.setAmeteAlemEra(false); 3697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (cal.isAmeteAlemEra()) { 3707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("EthiopicCalendar calendar is old system"); 3717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Date now = new Date(); 3747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.setTime(now); 3757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Date then = cal.getTime(); 3777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (!now.equals(then)) { 3787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("get/set time failed with non-civil EthiopicCalendar calendar"); 3797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(then.toString()); 3827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.add(Calendar.MONTH, 1); 3847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.add(Calendar.DAY_OF_MONTH, 1); 3857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal.add(Calendar.YEAR, 1); 3867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(cal.getTime().toString()); 3887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 3897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 3917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // data 3927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1); 3937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Date time = cal.getTime(); 3947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] calendarLocales = { 3967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "am_ET", "gez_ET", "ti_ET" 3977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 3987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 3997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String[] formatLocales = { 4007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert "en", "am", "gez", "ti" 4017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 4027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int i = 0; i < calendarLocales.length; ++i) { 4037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String calLocName = calendarLocales[i]; 4047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Locale calLocale = LocaleUtility.getLocaleFromName(calLocName); 4057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert cal = new EthiopicCalendar(calLocale); 4067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (int j = 0; j < formatLocales.length; ++j) { 4087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String locName = formatLocales[j]; 4097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert Locale formatLocale = LocaleUtility.getLocaleFromName(locName); 4107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale); 4117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(calLocName + "/" + locName + " --> " + format.format(time)); 4127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static EthiopicCalendar newAmeteAlemEraCalendar() { 4187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar alemawiCalendar = new EthiopicCalendar(); 4197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert alemawiCalendar.setAmeteAlemEra(true); 4207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return alemawiCalendar; 4217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 4237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestAddSet() { 4247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert class TestAddSetItem { 4257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int startYear; 4267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int startMonth; // 0-based 4277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int startDay; // 1-based 4287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int fieldToChange; 4297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int fieldDelta; 4307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int endYear; 4317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int endMonth; 4327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private int endDay; 4337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert TestAddSetItem(int sYr, int sMo, int sDa, int field, int delta, int eYr, int eMo, int eDa) { 4347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert startYear = sYr; 4357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert startMonth = sMo; 4367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert startDay = sDa; 4377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fieldToChange = field; 4387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert fieldDelta = delta; 4397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert endYear = eYr; 4407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert endMonth = eMo; 4417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert endDay = eDa; 4427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getStartYear() { return startYear; } 4447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getStartMonth() { return startMonth; } 4457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getStartDay() { return startDay; } 4467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getField() { return fieldToChange; } 4477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getDelta() { return fieldDelta; } 4487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getEndYear() { return endYear; } 4497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getEndMonth() { return endMonth; } 4507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public int getEndDay() { return endDay; } 4517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert final TestAddSetItem[] tests = { 4537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 2000, 12, 1, Calendar.MONTH, +1, 2001, 0, 1 ), 4547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 2000, 12, 1, Calendar.MONTH, +9, 2001, 8, 1 ), 4557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 1999, 12, 2, Calendar.MONTH, +1, 2000, 0, 2 ), // 1999 is a leap year 4567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 1999, 12, 2, Calendar.MONTH, +9, 2000, 8, 2 ), 4577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 2001, 0, 1, Calendar.MONTH, -1, 2000, 12, 1 ), 4587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 2001, 0, 1, Calendar.MONTH, -6, 2000, 7, 1 ), 4597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 2000, 12, 1, Calendar.DATE, +8, 2001, 0, 4 ), 4607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 1999, 12, 1, Calendar.DATE, +8, 2000, 0, 3 ), // 1999 is a leap year 4617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new TestAddSetItem( 2000, 0, 1, Calendar.DATE, -1, 1999, 12, 6 ), 4627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 4637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert EthiopicCalendar testCalendar = new EthiopicCalendar(); 4647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for ( int i = 0; i < tests.length; i++ ) { 4657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert TestAddSetItem item = tests[i]; 4667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testCalendar.set( item.getStartYear(), item.getStartMonth(), item.getStartDay(), 9, 0 ); 4677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert testCalendar.add( item.getField(), item.getDelta() ); 4687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int endYear = testCalendar.get(Calendar.YEAR); 4697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int endMonth = testCalendar.get(Calendar.MONTH); 4707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int endDay = testCalendar.get(Calendar.DATE); 4717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if ( endYear != item.getEndYear() || endMonth != item.getEndMonth() || endDay != item.getEndDay() ) { 4727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("EToJD FAILS: field " + item.getField() + " delta " + item.getDelta() + 4737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert " expected yr " + item.getEndYear() + " mo " + item.getEndMonth() + " da " + item.getEndDay() + 4747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert " got yr " + endYear + " mo " + endMonth + " da " + endDay); 4757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 4787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 479