]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-52_1/main/tests/core/src/com/ibm/icu/dev/test/calendar/PersianTest.java
Clean up imports.
[Dictionary.git] / jars / icu4j-52_1 / main / tests / core / src / com / ibm / icu / dev / test / calendar / PersianTest.java
1 /*
2  *******************************************************************************
3  * Copyright (C) 2012, International Business Machines Corporation and         *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 package com.ibm.icu.dev.test.calendar;
8 import java.util.Date;
9
10 import com.ibm.icu.util.Calendar;
11 import com.ibm.icu.util.ULocale;
12
13 public class PersianTest extends CalendarTest {
14
15     public static void main(String args[]) throws Exception {
16         new PersianTest().run(args);
17     }
18
19     /**
20      * Test basic mapping to and from Gregorian.
21      */
22     public void TestMapping() {
23         final int[] DATA = {
24             // (Note: months are 1-based)
25             2011, 1, 11, 1389, 10, 21,
26             1986, 2, 25, 1364, 12, 6, 
27             1934, 3, 14, 1312, 12, 23,
28
29             2090, 3, 19, 1468, 12, 29,
30             2007, 2, 22, 1385, 12, 3,
31             1969, 12, 31, 1348, 10, 10,
32             1945, 11, 12, 1324, 8, 21,
33             1925, 3, 31, 1304, 1, 11,
34
35             1996, 3, 19, 1374, 12, 29,
36             1996, 3, 20, 1375, 1, 1,
37             1997, 3, 20, 1375, 12, 30,
38             1997, 3, 21, 1376, 1, 1,
39
40             2008, 3, 19, 1386, 12, 29,
41             2008, 3, 20, 1387, 1, 1,
42             2004, 3, 19, 1382, 12, 29,
43             2004, 3, 20, 1383, 1, 1,
44
45             2006, 3, 20, 1384, 12, 29,
46             2006, 3, 21, 1385, 1, 1,
47
48             2005, 4, 20, 1384, 1, 31,
49             2005, 4, 21, 1384, 2, 1,
50             2005, 5, 21, 1384, 2, 31,
51             2005, 5, 22, 1384, 3, 1,
52             2005, 6, 21, 1384, 3, 31,
53             2005, 6, 22, 1384, 4, 1,
54             2005, 7, 22, 1384, 4, 31,
55             2005, 7, 23, 1384, 5, 1,
56             2005, 8, 22, 1384, 5, 31,
57             2005, 8, 23, 1384, 6, 1,
58             2005, 9, 22, 1384, 6, 31,
59             2005, 9, 23, 1384, 7, 1,
60             2005, 10, 22, 1384, 7, 30,
61             2005, 10, 23, 1384, 8, 1,
62             2005, 11, 21, 1384, 8, 30,
63             2005, 11, 22, 1384, 9, 1,
64             2005, 12, 21, 1384, 9, 30,
65             2005, 12, 22, 1384, 10, 1,
66             2006, 1, 20, 1384, 10, 30,
67             2006, 1, 21, 1384, 11, 1,
68             2006, 2, 19, 1384, 11, 30,
69             2006, 2, 20, 1384, 12, 1,
70             2006, 3, 20, 1384, 12, 29,
71             2006, 3, 21, 1385, 1, 1,
72
73             // The 2820-year cycle arithmetical algorithm would fail this one.
74             2025, 3, 21, 1404, 1, 1,
75         };
76
77         Calendar cal = Calendar.getInstance(new ULocale("fa_IR@calendar=persian"));
78         StringBuilder buf = new StringBuilder();
79
80         logln("Gregorian -> Persian");
81
82         Calendar grego = Calendar.getInstance();
83         grego.clear();
84         for (int i = 0; i < DATA.length;) {
85             grego.set(DATA[i++], DATA[i++] - 1, DATA[i++]);
86             Date date = grego.getTime();
87             cal.setTime(date);
88             int y = cal.get(Calendar.YEAR);
89             int m = cal.get(Calendar.MONTH) + 1; // 0-based -> 1-based
90             int d = cal.get(Calendar.DAY_OF_MONTH);
91             int yE = DATA[i++]; // Expected y, m, d
92             int mE = DATA[i++]; // 1-based
93             int dE = DATA[i++];
94             buf.setLength(0);
95             buf.append(date + " -> ");
96             buf.append(y + "/" + m + "/" + d);
97             if (y == yE && m == mE && d == dE) {
98                 logln("OK: " + buf.toString());
99             } else {
100                 errln("Fail: " + buf.toString() + ", expected " + yE + "/" + mE + "/" + dE);
101             }
102         }
103
104         logln("Persian -> Gregorian");
105         for (int i = 0; i < DATA.length;) {
106             grego.set(DATA[i++], DATA[i++] - 1, DATA[i++]);
107             Date dexp = grego.getTime();
108             int cyear = DATA[i++];
109             int cmonth = DATA[i++];
110             int cdayofmonth = DATA[i++];
111             cal.clear();
112             cal.set(Calendar.YEAR, cyear);
113             cal.set(Calendar.MONTH, cmonth - 1);
114             cal.set(Calendar.DAY_OF_MONTH, cdayofmonth);
115             Date date = cal.getTime();
116             buf.setLength(0);
117             buf.append(cyear + "/" + cmonth + "/" + cdayofmonth);
118             buf.append(" -> " + date);
119             if (date.equals(dexp)) {
120                 logln("OK: " + buf.toString());
121             } else {
122                 errln("Fail: " + buf.toString() + ", expected " + dexp);
123             }
124         }
125     }
126 }