KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > joda > time > convert > TestCalendarConverter


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.convert;
17
18 import java.lang.reflect.Constructor JavaDoc;
19 import java.lang.reflect.Field JavaDoc;
20 import java.lang.reflect.Modifier JavaDoc;
21 import java.util.Arrays JavaDoc;
22 import java.util.Calendar JavaDoc;
23 import java.util.Date JavaDoc;
24 import java.util.GregorianCalendar JavaDoc;
25 import java.util.TimeZone JavaDoc;
26
27 import junit.framework.TestCase;
28 import junit.framework.TestSuite;
29
30 import org.joda.time.Chronology;
31 import org.joda.time.DateTimeZone;
32 import org.joda.time.TimeOfDay;
33 import org.joda.time.chrono.BuddhistChronology;
34 import org.joda.time.chrono.GJChronology;
35 import org.joda.time.chrono.GregorianChronology;
36 import org.joda.time.chrono.ISOChronology;
37 import org.joda.time.chrono.JulianChronology;
38
39 /**
40  * This class is a Junit unit test for CalendarConverter.
41  *
42  * @author Stephen Colebourne
43  */

44 public class TestCalendarConverter extends TestCase {
45
46     private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
47     private static final DateTimeZone MOSCOW = DateTimeZone.forID("Europe/Moscow");
48     private static Chronology JULIAN;
49     private static Chronology ISO;
50
51     public static void main(String JavaDoc[] args) {
52         junit.textui.TestRunner.run(suite());
53     }
54
55     public static TestSuite suite() {
56         return new TestSuite(TestCalendarConverter.class);
57     }
58
59     public TestCalendarConverter(String JavaDoc name) {
60         super(name);
61     }
62
63     protected void setUp() throws Exception JavaDoc {
64         JULIAN = JulianChronology.getInstance();
65         ISO = ISOChronology.getInstance();
66     }
67
68     //-----------------------------------------------------------------------
69
public void testSingleton() throws Exception JavaDoc {
70         Class JavaDoc cls = CalendarConverter.class;
71         assertEquals(false, Modifier.isPublic(cls.getModifiers()));
72         assertEquals(false, Modifier.isProtected(cls.getModifiers()));
73         assertEquals(false, Modifier.isPrivate(cls.getModifiers()));
74         
75         Constructor JavaDoc con = cls.getDeclaredConstructor((Class JavaDoc[]) null);
76         assertEquals(1, cls.getDeclaredConstructors().length);
77         assertEquals(true, Modifier.isProtected(con.getModifiers()));
78         
79         Field JavaDoc fld = cls.getDeclaredField("INSTANCE");
80         assertEquals(false, Modifier.isPublic(fld.getModifiers()));
81         assertEquals(false, Modifier.isProtected(fld.getModifiers()));
82         assertEquals(false, Modifier.isPrivate(fld.getModifiers()));
83     }
84
85     //-----------------------------------------------------------------------
86
public void testSupportedType() throws Exception JavaDoc {
87         assertEquals(Calendar JavaDoc.class, CalendarConverter.INSTANCE.getSupportedType());
88     }
89
90     //-----------------------------------------------------------------------
91
public void testGetInstantMillis_Object_Chronology() throws Exception JavaDoc {
92         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
93         cal.setTime(new Date JavaDoc(123L));
94         assertEquals(123L, CalendarConverter.INSTANCE.getInstantMillis(cal, JULIAN));
95         assertEquals(123L, cal.getTime().getTime());
96     }
97
98     //-----------------------------------------------------------------------
99
public void testGetChronology_Object_Zone() throws Exception JavaDoc {
100         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Paris"));
101         assertEquals(GJChronology.getInstance(MOSCOW), CalendarConverter.INSTANCE.getChronology(cal, MOSCOW));
102         
103         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
104         assertEquals(GJChronology.getInstance(), CalendarConverter.INSTANCE.getChronology(cal, (DateTimeZone) null));
105         
106         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
107         cal.setGregorianChange(new Date JavaDoc(0L));
108         assertEquals(GJChronology.getInstance(MOSCOW, 0L, 4), CalendarConverter.INSTANCE.getChronology(cal, MOSCOW));
109         
110         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
111         cal.setGregorianChange(new Date JavaDoc(Long.MAX_VALUE));
112         assertEquals(JulianChronology.getInstance(PARIS), CalendarConverter.INSTANCE.getChronology(cal, PARIS));
113         
114         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
115         cal.setGregorianChange(new Date JavaDoc(Long.MIN_VALUE));
116         assertEquals(GregorianChronology.getInstance(PARIS), CalendarConverter.INSTANCE.getChronology(cal, PARIS));
117         
118         Calendar JavaDoc uc = new MockUnknownCalendar(TimeZone.getTimeZone("Europe/Moscow"));
119         assertEquals(ISOChronology.getInstance(PARIS), CalendarConverter.INSTANCE.getChronology(uc, PARIS));
120         
121         try {
122             Calendar JavaDoc bc = (Calendar JavaDoc) Class.forName("sun.util.BuddhistCalendar").newInstance();
123             bc.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
124             assertEquals(BuddhistChronology.getInstance(PARIS), CalendarConverter.INSTANCE.getChronology(bc, PARIS));
125         } catch (ClassNotFoundException JavaDoc ex) {
126             // ignore
127
}
128     }
129
130     public void testGetChronology_Object_nullChronology() throws Exception JavaDoc {
131         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Paris"));
132         assertEquals(GJChronology.getInstance(PARIS), CalendarConverter.INSTANCE.getChronology(cal, (Chronology) null));
133         
134         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
135         cal.setGregorianChange(new Date JavaDoc(0L));
136         assertEquals(GJChronology.getInstance(MOSCOW, 0L, 4), CalendarConverter.INSTANCE.getChronology(cal, (Chronology) null));
137         
138         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
139         cal.setGregorianChange(new Date JavaDoc(Long.MAX_VALUE));
140         assertEquals(JulianChronology.getInstance(MOSCOW), CalendarConverter.INSTANCE.getChronology(cal, (Chronology) null));
141         
142         cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Moscow"));
143         cal.setGregorianChange(new Date JavaDoc(Long.MIN_VALUE));
144         assertEquals(GregorianChronology.getInstance(MOSCOW), CalendarConverter.INSTANCE.getChronology(cal, (Chronology) null));
145         
146         cal = new GregorianCalendar JavaDoc(new MockUnknownTimeZone());
147         assertEquals(GJChronology.getInstance(), CalendarConverter.INSTANCE.getChronology(cal, (Chronology) null));
148         
149         Calendar JavaDoc uc = new MockUnknownCalendar(TimeZone.getTimeZone("Europe/Moscow"));
150         assertEquals(ISOChronology.getInstance(MOSCOW), CalendarConverter.INSTANCE.getChronology(uc, (Chronology) null));
151         
152         try {
153             Calendar JavaDoc bc = (Calendar JavaDoc) Class.forName("sun.util.BuddhistCalendar").newInstance();
154             bc.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
155             assertEquals(BuddhistChronology.getInstance(MOSCOW), CalendarConverter.INSTANCE.getChronology(bc, (Chronology) null));
156         } catch (ClassNotFoundException JavaDoc ex) {
157             // ignore
158
}
159     }
160
161     public void testGetChronology_Object_Chronology() throws Exception JavaDoc {
162         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc(TimeZone.getTimeZone("Europe/Paris"));
163         assertEquals(JULIAN, CalendarConverter.INSTANCE.getChronology(cal, JULIAN));
164     }
165
166     //-----------------------------------------------------------------------
167
public void testGetPartialValues() throws Exception JavaDoc {
168         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
169         cal.setTime(new Date JavaDoc(12345678L));
170         TimeOfDay tod = new TimeOfDay();
171         int[] expected = ISO.get(tod, 12345678L);
172         int[] actual = CalendarConverter.INSTANCE.getPartialValues(tod, cal, ISO);
173         assertEquals(true, Arrays.equals(expected, actual));
174     }
175
176     //-----------------------------------------------------------------------
177
public void testToString() {
178         assertEquals("Converter[java.util.Calendar]", CalendarConverter.INSTANCE.toString());
179     }
180
181 }
182
Popular Tags