KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > joda > time > TestChronology


1 /*
2  * Copyright 2001-2005 Stephen Colebourne
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.joda.time;
17
18 import java.util.Locale JavaDoc;
19 import java.util.TimeZone JavaDoc;
20
21 import junit.framework.TestCase;
22 import junit.framework.TestSuite;
23
24 import org.joda.time.chrono.BuddhistChronology;
25 import org.joda.time.chrono.CopticChronology;
26 import org.joda.time.chrono.EthiopicChronology;
27 import org.joda.time.chrono.GJChronology;
28 import org.joda.time.chrono.GregorianChronology;
29 import org.joda.time.chrono.ISOChronology;
30 import org.joda.time.chrono.IslamicChronology;
31 import org.joda.time.chrono.JulianChronology;
32 import org.joda.time.chrono.LenientChronology;
33 import org.joda.time.chrono.LimitChronology;
34 import org.joda.time.chrono.StrictChronology;
35 import org.joda.time.chrono.ZonedChronology;
36
37 /**
38  * This class is a Junit unit test for Chronology.
39  *
40  * @author Stephen Colebourne
41  */

42 public class TestChronology extends TestCase {
43     // Test in 2002/03 as time zones are more well known
44
// (before the late 90's they were all over the place)
45

46     private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
47     private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
48     
49     long y2002days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
50                      366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 +
51                      365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
52                      366 + 365;
53     long y2003days = 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
54                      366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 +
55                      365 + 365 + 366 + 365 + 365 + 365 + 366 + 365 + 365 + 365 +
56                      366 + 365 + 365;
57     
58     // 2002-06-09
59
private long TEST_TIME_NOW =
60             (y2002days + 31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY;
61             
62     // 2002-04-05
63
private long TEST_TIME1 =
64             (y2002days + 31L + 28L + 31L + 5L -1L) * DateTimeConstants.MILLIS_PER_DAY
65             + 12L * DateTimeConstants.MILLIS_PER_HOUR
66             + 24L * DateTimeConstants.MILLIS_PER_MINUTE;
67         
68     // 2003-05-06
69
private long TEST_TIME2 =
70             (y2003days + 31L + 28L + 31L + 30L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY
71             + 14L * DateTimeConstants.MILLIS_PER_HOUR
72             + 28L * DateTimeConstants.MILLIS_PER_MINUTE;
73     
74     private DateTimeZone originalDateTimeZone = null;
75     private TimeZone JavaDoc originalTimeZone = null;
76     private Locale JavaDoc originalLocale = null;
77
78     public static void main(String JavaDoc[] args) {
79         junit.textui.TestRunner.run(suite());
80     }
81
82     public static TestSuite suite() {
83         return new TestSuite(TestChronology.class);
84     }
85
86     public TestChronology(String JavaDoc name) {
87         super(name);
88     }
89
90     protected void setUp() throws Exception JavaDoc {
91         DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
92         originalDateTimeZone = DateTimeZone.getDefault();
93         originalTimeZone = TimeZone.getDefault();
94         originalLocale = Locale.getDefault();
95         DateTimeZone.setDefault(LONDON);
96         TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
97         Locale.setDefault(Locale.UK);
98     }
99
100     protected void tearDown() throws Exception JavaDoc {
101         DateTimeUtils.setCurrentMillisSystem();
102         DateTimeZone.setDefault(originalDateTimeZone);
103         TimeZone.setDefault(originalTimeZone);
104         Locale.setDefault(originalLocale);
105         originalDateTimeZone = null;
106         originalTimeZone = null;
107         originalLocale = null;
108     }
109
110     //-----------------------------------------------------------------------
111
public void testTest() {
112         assertEquals("2002-06-09T00:00:00.000Z", new Instant(TEST_TIME_NOW).toString());
113         assertEquals("2002-04-05T12:24:00.000Z", new Instant(TEST_TIME1).toString());
114         assertEquals("2003-05-06T14:28:00.000Z", new Instant(TEST_TIME2).toString());
115     }
116
117     //-----------------------------------------------------------------------
118
public void testGetISO() {
119         assertEquals(ISOChronology.getInstance(), Chronology.getISO());
120     }
121
122     public void testGetISOUTC() {
123         assertEquals(ISOChronology.getInstanceUTC(), Chronology.getISOUTC());
124     }
125
126     public void testGetISO_Zone() {
127         assertEquals(ISOChronology.getInstance(PARIS), Chronology.getISO(PARIS));
128         assertEquals(ISOChronology.getInstance(), Chronology.getISO(null));
129     }
130
131     //-----------------------------------------------------------------------
132
public void testGetGJ() {
133         assertEquals(GJChronology.getInstance(), Chronology.getGJ());
134     }
135
136     public void testGetGJUTC() {
137         assertEquals(GJChronology.getInstanceUTC(), Chronology.getGJUTC());
138     }
139
140     public void testGetGJ_Zone() {
141         assertEquals(GJChronology.getInstance(PARIS), Chronology.getGJ(PARIS));
142         assertEquals(GJChronology.getInstance(), Chronology.getGJ(null));
143     }
144
145     //-----------------------------------------------------------------------
146
public void testGetGregorian() {
147         assertEquals(GregorianChronology.getInstance(), Chronology.getGregorian());
148     }
149
150     public void testGetGregorianUTC() {
151         assertEquals(GregorianChronology.getInstanceUTC(), Chronology.getGregorianUTC());
152     }
153
154     public void testGetGregorian_Zone() {
155         assertEquals(GregorianChronology.getInstance(PARIS), Chronology.getGregorian(PARIS));
156         assertEquals(GregorianChronology.getInstance(), Chronology.getGregorian(null));
157     }
158
159     //-----------------------------------------------------------------------
160
public void testGetJulian() {
161         assertEquals(JulianChronology.getInstance(), Chronology.getJulian());
162     }
163
164     public void testGetJulianUTC() {
165         assertEquals(JulianChronology.getInstanceUTC(), Chronology.getJulianUTC());
166     }
167
168     public void testGetJulian_Zone() {
169         assertEquals(JulianChronology.getInstance(PARIS), Chronology.getJulian(PARIS));
170         assertEquals(JulianChronology.getInstance(), Chronology.getJulian(null));
171     }
172
173     //-----------------------------------------------------------------------
174
public void testGetBuddhist() {
175         assertEquals(BuddhistChronology.getInstance(), Chronology.getBuddhist());
176     }
177
178     public void testGetBuddhistUTC() {
179         assertEquals(BuddhistChronology.getInstanceUTC(), Chronology.getBuddhistUTC());
180     }
181
182     public void testGetBuddhist_Zone() {
183         assertEquals(BuddhistChronology.getInstance(PARIS), Chronology.getBuddhist(PARIS));
184         assertEquals(BuddhistChronology.getInstance(), Chronology.getBuddhist(null));
185     }
186
187     //-----------------------------------------------------------------------
188
public void testGetCoptic() {
189         assertEquals(CopticChronology.getInstance(), Chronology.getCoptic());
190     }
191
192     public void testGetCopticUTC() {
193         assertEquals(CopticChronology.getInstanceUTC(), Chronology.getCopticUTC());
194     }
195
196     public void testGetCoptic_Zone() {
197         assertEquals(CopticChronology.getInstance(PARIS), Chronology.getCoptic(PARIS));
198         assertEquals(CopticChronology.getInstance(), Chronology.getCoptic(null));
199     }
200
201     //-----------------------------------------------------------------------
202
public void testEqualsHashCode_ISO() {
203         Chronology chrono1 = ISOChronology.getInstanceUTC();
204         Chronology chrono2 = ISOChronology.getInstanceUTC();
205         Chronology chrono3 = ISOChronology.getInstance();
206         
207         assertEquals(true, chrono1.equals(chrono2));
208         assertEquals(false, chrono1.equals(chrono3));
209         
210         DateTime dt1 = new DateTime(0L, chrono1);
211         DateTime dt2 = new DateTime(0L, chrono2);
212         DateTime dt3 = new DateTime(0L, chrono3);
213         
214         assertEquals(true, dt1.equals(dt2));
215         assertEquals(false, dt1.equals(dt3));
216         
217         assertEquals(true, chrono1.hashCode() == chrono2.hashCode());
218         assertEquals(false, chrono1.hashCode() == chrono3.hashCode());
219     }
220
221     //-----------------------------------------------------------------------
222
public void testEqualsHashCode_Lenient() {
223         Chronology chrono1 = LenientChronology.getInstance(ISOChronology.getInstanceUTC());
224         Chronology chrono2 = LenientChronology.getInstance(ISOChronology.getInstanceUTC());
225         Chronology chrono3 = LenientChronology.getInstance(ISOChronology.getInstance());
226         
227         assertEquals(true, chrono1.equals(chrono2));
228         assertEquals(false, chrono1.equals(chrono3));
229         
230         DateTime dt1 = new DateTime(0L, chrono1);
231         DateTime dt2 = new DateTime(0L, chrono2);
232         DateTime dt3 = new DateTime(0L, chrono3);
233         
234         assertEquals(true, dt1.equals(dt2));
235         assertEquals(false, dt1.equals(dt3));
236         
237         assertEquals(true, chrono1.hashCode() == chrono2.hashCode());
238         assertEquals(false, chrono1.hashCode() == chrono3.hashCode());
239     }
240
241     //-----------------------------------------------------------------------
242
public void testEqualsHashCode_Strict() {
243         Chronology chrono1 = StrictChronology.getInstance(ISOChronology.getInstanceUTC());
244         Chronology chrono2 = StrictChronology.getInstance(ISOChronology.getInstanceUTC());
245         Chronology chrono3 = StrictChronology.getInstance(ISOChronology.getInstance());
246         
247         assertEquals(true, chrono1.equals(chrono2));
248         assertEquals(false, chrono1.equals(chrono3));
249         
250         DateTime dt1 = new DateTime(0L, chrono1);
251         DateTime dt2 = new DateTime(0L, chrono2);
252         DateTime dt3 = new DateTime(0L, chrono3);
253         
254         assertEquals(true, dt1.equals(dt2));
255         assertEquals(false, dt1.equals(dt3));
256         
257         assertEquals(true, chrono1.hashCode() == chrono2.hashCode());
258         assertEquals(false, chrono1.hashCode() == chrono3.hashCode());
259     }
260
261     //-----------------------------------------------------------------------
262
public void testEqualsHashCode_Limit() {
263         DateTime lower = new DateTime(0L);
264         DateTime higherA = new DateTime(1000000L);
265         DateTime higherB = new DateTime(2000000L);
266         
267         Chronology chrono1 = LimitChronology.getInstance(ISOChronology.getInstanceUTC(), lower, higherA);
268         Chronology chrono2A = LimitChronology.getInstance(ISOChronology.getInstanceUTC(), lower, higherA);
269         Chronology chrono2B = LimitChronology.getInstance(ISOChronology.getInstanceUTC(), lower, higherB);
270         Chronology chrono3 = LimitChronology.getInstance(ISOChronology.getInstance(), lower, higherA);
271         
272         assertEquals(true, chrono1.equals(chrono2A));
273         assertEquals(false, chrono1.equals(chrono2B));
274         assertEquals(false, chrono1.equals(chrono3));
275         
276         DateTime dt1 = new DateTime(0L, chrono1);
277         DateTime dt2A = new DateTime(0L, chrono2A);
278         DateTime dt2B = new DateTime(0L, chrono2B);
279         DateTime dt3 = new DateTime(0L, chrono3);
280         
281         assertEquals(true, dt1.equals(dt2A));
282         assertEquals(false, dt1.equals(dt2B));
283         assertEquals(false, dt1.equals(dt3));
284         
285         assertEquals(true, chrono1.hashCode() == chrono2A.hashCode());
286         assertEquals(false, chrono1.hashCode() == chrono2B.hashCode());
287         assertEquals(false, chrono1.hashCode() == chrono3.hashCode());
288     }
289
290     //-----------------------------------------------------------------------
291
public void testEqualsHashCode_Zoned() {
292         DateTimeZone zoneA = DateTimeZone.forID("Europe/Paris");
293         DateTimeZone zoneB = DateTimeZone.forID("Asia/Tokyo");
294         
295         Chronology chrono1 = ZonedChronology.getInstance(ISOChronology.getInstanceUTC(), zoneA);
296         Chronology chrono2 = ZonedChronology.getInstance(ISOChronology.getInstanceUTC(), zoneA);
297         Chronology chrono3 = ZonedChronology.getInstance(ISOChronology.getInstanceUTC(), zoneB);
298         
299         assertEquals(true, chrono1.equals(chrono2));
300         assertEquals(false, chrono1.equals(chrono3));
301         
302         DateTime dt1 = new DateTime(0L, chrono1);
303         DateTime dt2 = new DateTime(0L, chrono2);
304         DateTime dt3 = new DateTime(0L, chrono3);
305         
306         assertEquals(true, dt1.equals(dt2));
307         assertEquals(false, dt1.equals(dt3));
308         
309         assertEquals(true, chrono1.hashCode() == chrono2.hashCode());
310         assertEquals(false, chrono1.hashCode() == chrono3.hashCode());
311     }
312
313     //-----------------------------------------------------------------------
314
public void testToString() {
315         DateTimeZone paris = DateTimeZone.forID("Europe/Paris");
316         ISOChronology isoParis = ISOChronology.getInstance(paris);
317         
318         assertEquals("ISOChronology[Europe/Paris]", isoParis.toString());
319         assertEquals("GJChronology[Europe/Paris]", GJChronology.getInstance(paris).toString());
320         assertEquals("GregorianChronology[Europe/Paris]", GregorianChronology.getInstance(paris).toString());
321         assertEquals("JulianChronology[Europe/Paris]", JulianChronology.getInstance(paris).toString());
322         assertEquals("BuddhistChronology[Europe/Paris]", BuddhistChronology.getInstance(paris).toString());
323         assertEquals("CopticChronology[Europe/Paris]", CopticChronology.getInstance(paris).toString());
324         assertEquals("EthiopicChronology[Europe/Paris]", EthiopicChronology.getInstance(paris).toString());
325         assertEquals("IslamicChronology[Europe/Paris]", IslamicChronology.getInstance(paris).toString());
326         
327         assertEquals("LenientChronology[ISOChronology[Europe/Paris]]", LenientChronology.getInstance(isoParis).toString());
328         assertEquals("StrictChronology[ISOChronology[Europe/Paris]]", StrictChronology.getInstance(isoParis).toString());
329         assertEquals("LimitChronology[ISOChronology[Europe/Paris], NoLimit, NoLimit]", LimitChronology.getInstance(isoParis, null, null).toString());
330         assertEquals("ZonedChronology[ISOChronology[UTC], Europe/Paris]", ZonedChronology.getInstance(isoParis, paris).toString());
331     }
332
333 }
334
Popular Tags