KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > retrotranslator > runtime > format > DateTimeConversionTestCase


1 /***
2  * Retrotranslator: a Java bytecode transformer that translates Java classes
3  * compiled with JDK 5.0 into classes that can be run on JVM 1.4.
4  *
5  * Copyright (c) 2005 - 2007 Taras Puchko
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the copyright holders nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  */

32 package net.sf.retrotranslator.runtime.format;
33
34 import java.text.*;
35 import java.util.*;
36 import net.sf.retrotranslator.tests.BaseTestCase;
37
38 /**
39  * @author Taras Puchko
40  */

41 public class DateTimeConversionTestCase extends BaseTestCase {
42
43     public void testFormat_Flags() throws Exception JavaDoc {
44         assertFormat(" null null", "%7tH %1tT", null, null);
45         assertDate(" 05", "%4tC", "0567-01-04");
46         assertTime("00:07:08 ", "%-10tT", "00:07:08.093");
47         assertTime(" 00:07:08", "%10tT", "00:07:08.093");
48         assertFormatException(MissingFormatWidthException.class, "%-tT", "x");
49         assertFormatException(MissingFormatWidthException.class, "%-tT", new Date());
50         assertFormatException(FormatFlagsConversionMismatchException.class, "%#tT", new Date());
51         assertFormatException(IllegalFormatPrecisionException.class, "%10.2tT", new Date());
52         assertFormatException(IllegalFormatPrecisionException.class, "%#-10.1tT", "x");
53     }
54
55     public void testFormat_Time() throws Exception JavaDoc {
56         assertTime("00", "%tH", "00:07:08.093");
57         assertTime("14", "%tH", "14:15:45.178");
58
59         assertTime("12", "%tI", "00:07:08.093");
60         assertTime("02", "%tI", "14:15:45.178");
61
62         assertTime("0", "%tk", "00:07:08.093");
63         assertTime("14", "%tk", "14:15:45.178");
64
65         assertTime("12", "%tl", "00:07:08.093");
66         assertTime("2", "%tl", "14:15:45.178");
67
68         assertTime("07", "%tM", "00:07:08.093");
69         assertTime("15", "%tM", "14:15:45.178");
70
71         assertTime("08", "%tS", "00:07:08.093");
72         assertTime("45", "%tS", "14:15:45.178");
73
74         assertTime("093", "%tL", "00:07:08.093");
75         assertTime("178", "%tL", "14:15:45.178");
76
77         assertTime("093000000", "%tN", "00:07:08.093");
78         assertTime("178000000", "%tN", "14:15:45.178");
79
80         assertTime("am", "%tp", "00:07:08.093");
81         assertTime("pm", "%tp", "14:15:45.178");
82
83         assertTime("AM", "%Tp", "00:07:08.093");
84         assertTime("PM", "%Tp", "14:15:45.178");
85
86         assertDateTime("1234567", "%ts", new Date(1234567890));
87         assertDateTime("1234567890", "%tQ", new Date(1234567890));
88
89         assertTime("00:07", "%tR", "00:07:08.093");
90         assertTime("14:15", "%tR", "14:15:45.178");
91
92         assertTime("00:07:08", "%tT", "00:07:08.093");
93         assertTime("14:15:45", "%tT", "14:15:45.178");
94
95         assertTime("12:07:08 AM", "%tr", "00:07:08.093");
96         assertTime("02:15:45 PM", "%tr", "14:15:45.178");
97     }
98
99     public void testFormat_Date() throws Exception JavaDoc {
100         assertPatternDate("MMMM", "%tB", "2006-01-03", false);
101         assertPatternDate("MMMM", "%tB", "2006-07-07", false);
102
103         assertDate("JANVIER", "%TB", "2006-01-03");
104         assertDate("JUILLET", "%TB", "2006-07-07");
105
106         assertPatternDate("MMM", "%tb", "2006-01-05", false);
107         assertPatternDate("MMM", "%tb", "2006-07-09", false);
108
109         assertPatternDate("MMM", "%Tb", "2006-01-05", true);
110         assertPatternDate("MMM", "%Tb", "2006-07-09", true);
111
112         assertPatternDate("MMM", "%th", "2006-04-05", false);
113         assertPatternDate("MMM", "%th", "2006-09-09", false);
114
115         assertPatternDate("MMM", "%Th", "2006-04-05", true);
116         assertPatternDate("MMM", "%Th", "2006-09-09", true);
117
118         assertPatternDate("EEEE", "%tA", "2006-01-03", false);
119         assertPatternDate("EEEE", "%tA", "2006-07-07", false);
120
121         assertDate("MARDI", "%TA", "2006-01-03");
122         assertDate("VENDREDI", "%TA", "2006-07-07");
123
124         assertPatternDate("EEE", "%ta", "2006-01-04", false);
125         assertPatternDate("EEE", "%ta", "2006-07-08", false);
126
127         assertPatternDate("EEE", "%Ta", "2006-01-04", true);
128         assertPatternDate("EEE", "%Ta", "2006-07-08", true);
129
130         assertDate("20", "%tC", "2006-01-04");
131         assertDate("01", "%tC", "0123-01-04");
132         assertDate("123", "%tC", "12345-07-08");
133
134         assertDate("2006", "%tY", "2006-01-04");
135         assertDate("0123", "%tY", "0123-01-04");
136         assertDate("12345", "%tY", "12345-07-08");
137
138         assertDate("06", "%ty", "2006-01-04");
139         assertDate("03", "%ty", "0003-01-04");
140         assertDate("45", "%ty", "12345-07-08");
141
142         assertDate("004", "%tj", "2006-01-04");
143         assertDate("076", "%tj", "0003-03-17");
144         assertDate("366", "%tj", "2000-12-31");
145
146         assertDate("01", "%tm", "2006-01-04");
147         assertDate("03", "%tm", "0003-03-17");
148         assertDate("12", "%tm", "2000-12-31");
149
150         assertDate("04", "%td", "2006-01-04");
151         assertDate("17", "%td", "0003-03-17");
152         assertDate("31", "%td", "2000-12-31");
153
154         assertDate("4", "%te", "2006-01-04");
155         assertDate("17", "%te", "0003-03-17");
156         assertDate("31", "%te", "2000-12-31");
157
158         assertDate("11/12/04", "%tD", "0004-11-12");
159         assertDate("01/03/06", "%tD", "2006-01-03");
160         assertDate("07/08/05", "%tD", "12005-07-08");
161
162         assertDate("0004-11-12", "%tF", "0004-11-12");
163         assertDate("2006-01-03", "%tF", "2006-01-03");
164         assertDate("12005-07-08", "%tF", "12005-07-08");
165     }
166
167     public void testFormat_TimeZone() throws Exception JavaDoc {
168         TimeZone defaultTimeZone = TimeZone.getDefault();
169         try {
170             assertTimeZone("Asia/Katmandu", "+0545", "NPT", "NPT");
171             assertTimeZone("GMT+02:00", "+0200", "GMT+02:00", "GMT+02:00");
172             assertTimeZone("Europe/Helsinki", "+0200", "EET", "EEST");
173             assertTimeZone("Africa/Casablanca", "+0000", "WET", "WET");
174             assertTimeZone("America/Los_Angeles", "-0800", "PST", "PDT");
175             assertTimeZone("America/New_York", "-0500", "EST", "EDT");
176             TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
177             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
178             format.setTimeZone(TimeZone.getTimeZone("America/New_York"));
179             Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("America/Los_Angeles"));
180             calendar.setTime(format.parse("2006-05-08 02:25:45"));
181             assertFormat("2006-05-07 23:25:45", "%tF %tT", calendar, calendar);
182         } finally {
183             TimeZone.setDefault(defaultTimeZone);
184         }
185     }
186
187     private void assertTime(String JavaDoc expected, String JavaDoc format, String JavaDoc time) throws Exception JavaDoc {
188         assertDateTime(expected, format, parse("2006-01-03 " + time));
189     }
190
191     private void assertDate(String JavaDoc expected, String JavaDoc format, String JavaDoc date) throws Exception JavaDoc {
192         assertDateTime(expected, format, parseDate(date));
193     }
194
195     private void assertPatternDate(String JavaDoc pattern, String JavaDoc format, String JavaDoc date, boolean upperCase) throws Exception JavaDoc {
196         Date parsedDate = parseDate(date);
197         String JavaDoc expected = format(parsedDate, pattern);
198         if (upperCase) {
199             expected = expected.toUpperCase();
200         }
201         assertDateTime(expected, format, parsedDate);
202     }
203
204     private void assertTimeZone(String JavaDoc id, String JavaDoc numeric, String JavaDoc standard, String JavaDoc daylight) throws Exception JavaDoc {
205         TimeZone.setDefault(TimeZone.getTimeZone(id));
206         Date winter = parse("2006-01-03 00:07:08.093");
207         Date summer = parse("2006-04-07 14:15:45.178");
208         assertDateTime(numeric, "%tz", winter);
209         assertDateTime(numeric, "%tz", summer);
210         assertDateTime(standard, "%tZ", winter);
211         assertDateTime(daylight, "%tZ", summer);
212         assertDateTime(format(winter, "EEE MMM") + " 03 00:07:08 " + standard + " 2006", "%tc", winter);
213         assertDateTime(format(summer, "EEE MMM") + " 07 14:15:45 " + daylight + " 2006", "%tc", summer);
214     }
215
216     private void assertDateTime(String JavaDoc expected, String JavaDoc format, Date date) {
217         Calendar calendar = new GregorianCalendar();
218         calendar.setTime(date);
219         for (Object JavaDoc argument : new Object JavaDoc[]{date.getTime(), date, calendar}) {
220             assertFormat(expected, format, argument);
221         }
222     }
223
224     private static Date parseDate(String JavaDoc date) throws ParseException {
225         return parse(date + " 00:07:08.093");
226     }
227
228     private static Date parse(String JavaDoc dateTime) throws ParseException {
229         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(dateTime);
230     }
231
232     private static String JavaDoc format(Date date, String JavaDoc pattern) {
233         return new SimpleDateFormat(pattern, Locale.FRANCE).format(date);
234     }
235
236 }
Popular Tags