KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > lang > time > FastDateFormatTest


1 /*
2  * Copyright 2002-2005 The Apache Software Foundation.
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.apache.commons.lang.time;
17
18 import java.text.SimpleDateFormat JavaDoc;
19 import java.util.Calendar JavaDoc;
20 import java.util.Date JavaDoc;
21 import java.util.GregorianCalendar JavaDoc;
22 import java.util.Locale JavaDoc;
23 import java.util.TimeZone JavaDoc;
24
25 import junit.framework.Test;
26 import junit.framework.TestCase;
27 import junit.framework.TestSuite;
28 import junit.textui.TestRunner;
29
30 /**
31  * Unit tests {@link org.apache.commons.lang.time.FastDateFormat}.
32  *
33  * @author Sean Schofield
34  * @author <a HREF="mailto:ggregory@seagullsw.com">Gary Gregory</a>
35  * @author Fredrik Westermarck
36  * @since 2.0
37  * @version $Id: FastDateFormatTest.java 161244 2005-04-14 06:16:36Z ggregory $
38  */

39 public class FastDateFormatTest extends TestCase {
40
41     public FastDateFormatTest(String JavaDoc name) {
42         super(name);
43     }
44
45     public static void main(String JavaDoc[] args) {
46         TestRunner.run(suite());
47     }
48
49     public static Test suite() {
50         TestSuite suite = new TestSuite(FastDateFormatTest.class);
51         suite.setName("FastDateFormat Tests");
52
53         return suite;
54     }
55
56     protected void setUp() throws Exception JavaDoc {
57         super.setUp();
58     }
59
60     protected void tearDown() throws Exception JavaDoc {
61         super.tearDown();
62     }
63
64     public void test_getInstance() {
65         FastDateFormat format1 = FastDateFormat.getInstance();
66         FastDateFormat format2 = FastDateFormat.getInstance();
67         assertSame(format1, format2);
68         assertEquals(new SimpleDateFormat JavaDoc().toPattern(), format1.getPattern());
69     }
70
71     public void test_getInstance_String() {
72         FastDateFormat format1 = FastDateFormat.getInstance("MM/DD/yyyy");
73         FastDateFormat format2 = FastDateFormat.getInstance("MM-DD-yyyy");
74         FastDateFormat format3 = FastDateFormat.getInstance("MM-DD-yyyy");
75
76         assertTrue(format1 != format2); // -- junit 3.8 version -- assertFalse(format1 == format2);
77
assertSame(format2, format3);
78         assertEquals("MM/DD/yyyy", format1.getPattern());
79         assertEquals(TimeZone.getDefault(), format1.getTimeZone());
80         assertEquals(TimeZone.getDefault(), format2.getTimeZone());
81         assertEquals(false, format1.getTimeZoneOverridesCalendar());
82         assertEquals(false, format2.getTimeZoneOverridesCalendar());
83     }
84
85     public void test_getInstance_String_TimeZone() {
86         Locale JavaDoc realDefaultLocale = Locale.getDefault();
87         TimeZone JavaDoc realDefaultZone = TimeZone.getDefault();
88         try {
89             Locale.setDefault(Locale.US);
90             TimeZone.setDefault(TimeZone.getTimeZone("America/New_York"));
91
92             FastDateFormat format1 = FastDateFormat.getInstance("MM/DD/yyyy",
93                     TimeZone.getTimeZone("Atlantic/Reykjavik"));
94             FastDateFormat format2 = FastDateFormat.getInstance("MM/DD/yyyy");
95             FastDateFormat format3 = FastDateFormat.getInstance("MM/DD/yyyy", TimeZone.getDefault());
96             FastDateFormat format4 = FastDateFormat.getInstance("MM/DD/yyyy", TimeZone.getDefault());
97             FastDateFormat format5 = FastDateFormat.getInstance("MM-DD-yyyy", TimeZone.getDefault());
98             FastDateFormat format6 = FastDateFormat.getInstance("MM-DD-yyyy");
99
100             assertTrue(format1 != format2); // -- junit 3.8 version -- assertFalse(format1 == format2);
101
assertEquals(TimeZone.getTimeZone("Atlantic/Reykjavik"), format1.getTimeZone());
102             assertEquals(true, format1.getTimeZoneOverridesCalendar());
103             assertEquals(TimeZone.getDefault(), format2.getTimeZone());
104             assertEquals(false, format2.getTimeZoneOverridesCalendar());
105             assertSame(format3, format4);
106             assertTrue(format3 != format5); // -- junit 3.8 version -- assertFalse(format3 == format5);
107
assertTrue(format4 != format6); // -- junit 3.8 version -- assertFalse(format3 == format5);
108

109         } finally {
110             Locale.setDefault(realDefaultLocale);
111             TimeZone.setDefault(realDefaultZone);
112         }
113     }
114
115     public void test_getInstance_String_Locale() {
116         Locale JavaDoc realDefaultLocale = Locale.getDefault();
117         try {
118             Locale.setDefault(Locale.US);
119             FastDateFormat format1 = FastDateFormat.getInstance("MM/DD/yyyy", Locale.GERMANY);
120             FastDateFormat format2 = FastDateFormat.getInstance("MM/DD/yyyy");
121             FastDateFormat format3 = FastDateFormat.getInstance("MM/DD/yyyy", Locale.GERMANY);
122
123             assertTrue(format1 != format2); // -- junit 3.8 version -- assertFalse(format1 == format2);
124
assertSame(format1, format3);
125             assertSame(Locale.GERMANY, format1.getLocale());
126
127         } finally {
128             Locale.setDefault(realDefaultLocale);
129         }
130     }
131
132     public void test_getInstance_String_TimeZone_Locale() {
133         Locale JavaDoc realDefaultLocale = Locale.getDefault();
134         TimeZone JavaDoc realDefaultZone = TimeZone.getDefault();
135         try {
136             Locale.setDefault(Locale.US);
137             TimeZone.setDefault(TimeZone.getTimeZone("America/New_York"));
138
139             FastDateFormat format1 = FastDateFormat.getInstance("MM/DD/yyyy",
140                     TimeZone.getTimeZone("Atlantic/Reykjavik"), Locale.GERMANY);
141             FastDateFormat format2 = FastDateFormat.getInstance("MM/DD/yyyy", Locale.GERMANY);
142             FastDateFormat format3 = FastDateFormat.getInstance("MM/DD/yyyy",
143                     TimeZone.getDefault(), Locale.GERMANY);
144
145             assertTrue(format1 != format2); // -- junit 3.8 version -- assertNotSame(format1, format2);
146
assertEquals(TimeZone.getTimeZone("Atlantic/Reykjavik"), format1.getTimeZone());
147             assertEquals(TimeZone.getDefault(), format2.getTimeZone());
148             assertEquals(TimeZone.getDefault(), format3.getTimeZone());
149             assertEquals(true, format1.getTimeZoneOverridesCalendar());
150             assertEquals(false, format2.getTimeZoneOverridesCalendar());
151             assertEquals(true, format3.getTimeZoneOverridesCalendar());
152             assertEquals(Locale.GERMANY, format1.getLocale());
153             assertEquals(Locale.GERMANY, format2.getLocale());
154             assertEquals(Locale.GERMANY, format3.getLocale());
155
156         } finally {
157             Locale.setDefault(realDefaultLocale);
158             TimeZone.setDefault(realDefaultZone);
159         }
160     }
161
162     public void testFormat() {
163         Locale JavaDoc realDefaultLocale = Locale.getDefault();
164         TimeZone JavaDoc realDefaultZone = TimeZone.getDefault();
165         try {
166             Locale.setDefault(Locale.US);
167             TimeZone.setDefault(TimeZone.getTimeZone("America/New_York"));
168             FastDateFormat fdf = null;
169             SimpleDateFormat JavaDoc sdf = null;
170
171             GregorianCalendar JavaDoc cal1 = new GregorianCalendar JavaDoc(2003, 0, 10, 15, 33, 20);
172             GregorianCalendar JavaDoc cal2 = new GregorianCalendar JavaDoc(2003, 6, 10, 9, 00, 00);
173             Date JavaDoc date1 = cal1.getTime();
174             Date JavaDoc date2 = cal2.getTime();
175             long millis1 = date1.getTime();
176             long millis2 = date2.getTime();
177
178             fdf = FastDateFormat.getInstance("yyyy-MM-dd'T'HH:mm:ss");
179             sdf = new SimpleDateFormat JavaDoc("yyyy-MM-dd'T'HH:mm:ss");
180             assertEquals(sdf.format(date1), fdf.format(date1));
181             assertEquals("2003-01-10T15:33:20", fdf.format(date1));
182             assertEquals("2003-01-10T15:33:20", fdf.format(cal1));
183             assertEquals("2003-01-10T15:33:20", fdf.format(millis1));
184             assertEquals("2003-07-10T09:00:00", fdf.format(date2));
185             assertEquals("2003-07-10T09:00:00", fdf.format(cal2));
186             assertEquals("2003-07-10T09:00:00", fdf.format(millis2));
187
188             fdf = FastDateFormat.getInstance("Z");
189             assertEquals("-0500", fdf.format(date1));
190             assertEquals("-0500", fdf.format(cal1));
191             assertEquals("-0500", fdf.format(millis1));
192
193             fdf = FastDateFormat.getInstance("Z");
194             assertEquals("-0400", fdf.format(date2));
195             assertEquals("-0400", fdf.format(cal2));
196             assertEquals("-0400", fdf.format(millis2));
197
198             fdf = FastDateFormat.getInstance("ZZ");
199             assertEquals("-05:00", fdf.format(date1));
200             assertEquals("-05:00", fdf.format(cal1));
201             assertEquals("-05:00", fdf.format(millis1));
202
203             fdf = FastDateFormat.getInstance("ZZ");
204             assertEquals("-04:00", fdf.format(date2));
205             assertEquals("-04:00", fdf.format(cal2));
206             assertEquals("-04:00", fdf.format(millis2));
207
208             String JavaDoc pattern = "GGGG GGG GG G yyyy yyy yy y MMMM MMM MM M" +
209                 " dddd ddd dd d DDDD DDD DD D EEEE EEE EE E aaaa aaa aa a zzzz zzz zz z";
210             fdf = FastDateFormat.getInstance(pattern);
211             sdf = new SimpleDateFormat JavaDoc(pattern);
212             assertEquals(sdf.format(date1), fdf.format(date1));
213             assertEquals(sdf.format(date2), fdf.format(date2));
214
215         } finally {
216             Locale.setDefault(realDefaultLocale);
217             TimeZone.setDefault(realDefaultZone);
218         }
219     }
220
221     /**
222      * Test case for {@link FastDateFormat#getDateInstance(int, java.util.Locale)}.
223      */

224     public void testShortDateStyleWithLocales() {
225         Locale JavaDoc usLocale = Locale.US;
226         Locale JavaDoc swedishLocale = new Locale JavaDoc("sv", "SE");
227         Calendar JavaDoc cal = Calendar.getInstance();
228         cal.set(2004, 1, 3);
229         FastDateFormat fdf = FastDateFormat.getDateInstance(FastDateFormat.SHORT, usLocale);
230         assertEquals("2/3/04", fdf.format(cal));
231
232         fdf = FastDateFormat.getDateInstance(FastDateFormat.SHORT, swedishLocale);
233         assertEquals("2004-02-03", fdf.format(cal));
234
235     }
236
237     /**
238      * Tests that pre-1000AD years get padded with yyyy
239      */

240     public void testLowYearPadding() {
241         Calendar JavaDoc cal = Calendar.getInstance();
242         FastDateFormat format = FastDateFormat.getInstance("yyyy/MM/DD");
243
244         cal.set(1,0,1);
245         assertEquals("0001/01/01", format.format(cal));
246         cal.set(10,0,1);
247         assertEquals("0010/01/01", format.format(cal));
248         cal.set(100,0,1);
249         assertEquals("0100/01/01", format.format(cal));
250         cal.set(999,0,1);
251         assertEquals("0999/01/01", format.format(cal));
252     }
253     /**
254      * testLowYearPadding showed that the date was buggy
255      * This test confirms it, getting 366 back as a date
256      */

257      // TODO: Fix this problem
258
public void testSimpleDate() {
259         Calendar JavaDoc cal = Calendar.getInstance();
260         FastDateFormat format = FastDateFormat.getInstance("yyyy/MM/dd");
261
262         cal.set(2004,11,31);
263         assertEquals("2004/12/31", format.format(cal));
264         cal.set(999,11,31);
265         assertEquals("0999/12/31", format.format(cal));
266         cal.set(1,2,2);
267         assertEquals("0001/03/02", format.format(cal));
268     }
269 }
270
Popular Tags