KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > joda > time > format > TestISODateTimeFormatParsing


1 /*
2  * Copyright 2001-2006 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.format;
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.DateTimeZone;
25
26 /**
27  * This class is a Junit unit test for ISODateTimeFormat parsing.
28  *
29  * @author Stephen Colebourne
30  */

31 public class TestISODateTimeFormatParsing extends TestCase {
32
33     private DateTimeZone originalDateTimeZone = null;
34     private TimeZone JavaDoc originalTimeZone = null;
35     private Locale JavaDoc originalLocale = null;
36
37     public static void main(String JavaDoc[] args) {
38         junit.textui.TestRunner.run(suite());
39     }
40
41     public static TestSuite suite() {
42         return new TestSuite(TestISODateTimeFormatParsing.class);
43     }
44
45     public TestISODateTimeFormatParsing(String JavaDoc name) {
46         super(name);
47     }
48
49     protected void setUp() throws Exception JavaDoc {
50         originalDateTimeZone = DateTimeZone.getDefault();
51         originalTimeZone = TimeZone.getDefault();
52         originalLocale = Locale.getDefault();
53         DateTimeZone.setDefault(DateTimeZone.forID("Europe/London"));
54         TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
55         Locale.setDefault(Locale.UK);
56     }
57
58     protected void tearDown() throws Exception JavaDoc {
59         DateTimeZone.setDefault(originalDateTimeZone);
60         TimeZone.setDefault(originalTimeZone);
61         Locale.setDefault(originalLocale);
62         originalDateTimeZone = null;
63         originalTimeZone = null;
64         originalLocale = null;
65     }
66
67     //-----------------------------------------------------------------------
68
public void test_dateParser() {
69         DateTimeFormatter parser = ISODateTimeFormat.dateParser();
70         assertParse(parser, true, "2006-06-09");
71         assertParse(parser, true, "2006-W27-3");
72         assertParse(parser, true, "2006-123");
73         assertParse(parser, true, "2006-06-09T+02:00");
74         assertParse(parser, true, "2006-W27-3T+02:00");
75         assertParse(parser, true, "2006-123T+02:00");
76         
77         assertParse(parser, false, "2006-06-09T10:20:30.040");
78         assertParse(parser, false, "2006-W27-3T10:20:30.040");
79         assertParse(parser, false, "2006-123T10:20:30.040");
80         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
81         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
82         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
83         
84         assertParse(parser, false, "T10:20:30.040");
85         assertParse(parser, false, "T10.5");
86         assertParse(parser, false, "T10:20:30.040+02:00");
87         assertParse(parser, false, "T10.5+02:00");
88         
89         assertParse(parser, false, "10:20:30.040");
90         assertParse(parser, false, "10.5");
91         assertParse(parser, false, "10:20:30.040+02:00");
92         assertParse(parser, false, "10.5+02:00");
93     }
94
95     //-----------------------------------------------------------------------
96
public void test_localDateParser() {
97         DateTimeFormatter parser = ISODateTimeFormat.localDateParser();
98         assertEquals(DateTimeZone.UTC, parser.getZone());
99         assertParse(parser, true, "2006-06-09");
100         assertParse(parser, true, "2006-W27-3");
101         assertParse(parser, true, "2006-123");
102         assertParse(parser, false, "2006-06-09T+02:00");
103         assertParse(parser, false, "2006-W27-3T+02:00");
104         assertParse(parser, false, "2006-123T+02:00");
105         
106         assertParse(parser, false, "2006-06-09T10:20:30.040");
107         assertParse(parser, false, "2006-W27-3T10:20:30.040");
108         assertParse(parser, false, "2006-123T10:20:30.040");
109         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
110         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
111         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
112         
113         assertParse(parser, false, "T10:20:30.040");
114         assertParse(parser, false, "T10.5");
115         assertParse(parser, false, "T10:20:30.040+02:00");
116         assertParse(parser, false, "T10.5+02:00");
117         
118         assertParse(parser, false, "10:20:30.040");
119         assertParse(parser, false, "10.5");
120         assertParse(parser, false, "10:20:30.040+02:00");
121         assertParse(parser, false, "10.5+02:00");
122     }
123
124     //-----------------------------------------------------------------------
125
public void test_dateElementParser() {
126         DateTimeFormatter parser = ISODateTimeFormat.dateElementParser();
127         assertParse(parser, true, "2006-06-09");
128         assertParse(parser, true, "2006-W27-3");
129         assertParse(parser, true, "2006-123");
130         assertParse(parser, false, "2006-06-09T+02:00");
131         assertParse(parser, false, "2006-W27-3T+02:00");
132         assertParse(parser, false, "2006-123T+02:00");
133         
134         assertParse(parser, false, "2006-06-09T10:20:30.040");
135         assertParse(parser, false, "2006-W27-3T10:20:30.040");
136         assertParse(parser, false, "2006-123T10:20:30.040");
137         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
138         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
139         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
140         
141         assertParse(parser, false, "T10:20:30.040");
142         assertParse(parser, false, "T10.5");
143         assertParse(parser, false, "T10:20:30.040+02:00");
144         assertParse(parser, false, "T10.5+02:00");
145         
146         assertParse(parser, false, "10:20:30.040");
147         assertParse(parser, false, "10.5");
148         assertParse(parser, false, "10:20:30.040+02:00");
149         assertParse(parser, false, "10.5+02:00");
150     }
151
152     //-----------------------------------------------------------------------
153
public void test_timeParser() {
154         DateTimeFormatter parser = ISODateTimeFormat.timeParser();
155         assertParse(parser, false, "2006-06-09");
156         assertParse(parser, false, "2006-W27-3");
157         assertParse(parser, false, "2006-123");
158         assertParse(parser, false, "2006-06-09T+02:00");
159         assertParse(parser, false, "2006-W27-3T+02:00");
160         assertParse(parser, false, "2006-123T+02:00");
161         
162         assertParse(parser, false, "2006-06-09T10:20:30.040");
163         assertParse(parser, false, "2006-W27-3T10:20:30.040");
164         assertParse(parser, false, "2006-123T10:20:30.040");
165         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
166         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
167         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
168         
169         assertParse(parser, true, "T10:20:30.040");
170         assertParse(parser, true, "T10.5");
171         assertParse(parser, true, "T10:20:30.040+02:00");
172         assertParse(parser, true, "T10.5+02:00");
173         
174         assertParse(parser, true, "10:20:30.040");
175         assertParse(parser, true, "10.5");
176         assertParse(parser, true, "10:20:30.040+02:00");
177         assertParse(parser, true, "10.5+02:00");
178     }
179
180     //-----------------------------------------------------------------------
181
public void test_localTimeParser() {
182         DateTimeFormatter parser = ISODateTimeFormat.localTimeParser();
183         assertEquals(DateTimeZone.UTC, parser.getZone());
184         assertParse(parser, false, "2006-06-09");
185         assertParse(parser, false, "2006-W27-3");
186         assertParse(parser, false, "2006-123");
187         assertParse(parser, false, "2006-06-09T+02:00");
188         assertParse(parser, false, "2006-W27-3T+02:00");
189         assertParse(parser, false, "2006-123T+02:00");
190         
191         assertParse(parser, false, "2006-06-09T10:20:30.040");
192         assertParse(parser, false, "2006-W27-3T10:20:30.040");
193         assertParse(parser, false, "2006-123T10:20:30.040");
194         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
195         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
196         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
197         
198         assertParse(parser, true, "T10:20:30.040");
199         assertParse(parser, true, "T10.5");
200         assertParse(parser, false, "T10:20:30.040+02:00");
201         assertParse(parser, false, "T10.5+02:00");
202         
203         assertParse(parser, true, "10:20:30.040");
204         assertParse(parser, true, "10.5");
205         assertParse(parser, false, "10:20:30.040+02:00");
206         assertParse(parser, false, "10.5+02:00");
207         
208         assertParse(parser, true, "00:00:10.512345678");
209         assertEquals(10512, parser.parseMillis("00:00:10.512345678"));
210     }
211
212     //-----------------------------------------------------------------------
213
public void test_timeElementParser() {
214         DateTimeFormatter parser = ISODateTimeFormat.timeElementParser();
215         assertParse(parser, false, "2006-06-09");
216         assertParse(parser, false, "2006-W27-3");
217         assertParse(parser, false, "2006-123");
218         assertParse(parser, false, "2006-06-09T+02:00");
219         assertParse(parser, false, "2006-W27-3T+02:00");
220         assertParse(parser, false, "2006-123T+02:00");
221         
222         assertParse(parser, false, "2006-06-09T10:20:30.040");
223         assertParse(parser, false, "2006-W27-3T10:20:30.040");
224         assertParse(parser, false, "2006-123T10:20:30.040");
225         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
226         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
227         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
228         
229         assertParse(parser, false, "T10:20:30.040");
230         assertParse(parser, false, "T10.5");
231         assertParse(parser, false, "T10:20:30.040+02:00");
232         assertParse(parser, false, "T10.5+02:00");
233         
234         assertParse(parser, true, "10:20:30.040");
235         assertParse(parser, true, "10.5");
236         assertParse(parser, false, "10:20:30.040+02:00");
237         assertParse(parser, false, "10.5+02:00");
238         
239         assertParse(parser, true, "00:00:10.512345678");
240         // result is offset by London DST in 1970-01-01
241
assertEquals(10512, parser.parseMillis("00:00:10.512345678") + DateTimeZone.getDefault().getOffset(0L));
242     }
243
244     //-----------------------------------------------------------------------
245
public void test_dateTimeParser() {
246         DateTimeFormatter parser = ISODateTimeFormat.dateTimeParser();
247         assertParse(parser, true, "2006-06-09");
248         assertParse(parser, true, "2006-W27-3");
249         assertParse(parser, true, "2006-123");
250         assertParse(parser, true, "2006-06-09T+02:00");
251         assertParse(parser, true, "2006-W27-3T+02:00");
252         assertParse(parser, true, "2006-123T+02:00");
253         
254         assertParse(parser, true, "2006-06-09T10:20:30.040");
255         assertParse(parser, true, "2006-W27-3T10:20:30.040");
256         assertParse(parser, true, "2006-123T10:20:30.040");
257         assertParse(parser, true, "2006-06-09T10:20:30.040+02:00");
258         assertParse(parser, true, "2006-W27-3T10:20:30.040+02:00");
259         assertParse(parser, true, "2006-123T10:20:30.040+02:00");
260         
261         assertParse(parser, true, "T10:20:30.040");
262         assertParse(parser, true, "T10.5");
263         assertParse(parser, true, "T10:20:30.040+02:00");
264         assertParse(parser, true, "T10.5+02:00");
265         
266         assertParse(parser, false, "10:20:30.040");
267         assertParse(parser, false, "10.5");
268         assertParse(parser, false, "10:20:30.040+02:00");
269         assertParse(parser, false, "10.5+02:00");
270     }
271
272     //-----------------------------------------------------------------------
273
public void test_dateOptionalTimeParser() {
274         DateTimeFormatter parser = ISODateTimeFormat.dateOptionalTimeParser();
275         assertParse(parser, true, "2006-06-09");
276         assertParse(parser, true, "2006-W27-3");
277         assertParse(parser, true, "2006-123");
278         assertParse(parser, true, "2006-06-09T+02:00");
279         assertParse(parser, true, "2006-W27-3T+02:00");
280         assertParse(parser, true, "2006-123T+02:00");
281         
282         assertParse(parser, true, "2006-06-09T10:20:30.040");
283         assertParse(parser, true, "2006-W27-3T10:20:30.040");
284         assertParse(parser, true, "2006-123T10:20:30.040");
285         assertParse(parser, true, "2006-06-09T10:20:30.040+02:00");
286         assertParse(parser, true, "2006-W27-3T10:20:30.040+02:00");
287         assertParse(parser, true, "2006-123T10:20:30.040+02:00");
288         
289         assertParse(parser, false, "T10:20:30.040");
290         assertParse(parser, false, "T10.5");
291         assertParse(parser, false, "T10:20:30.040+02:00");
292         assertParse(parser, false, "T10.5+02:00");
293         
294         assertParse(parser, false, "10:20:30.040");
295         assertParse(parser, false, "10.5");
296         assertParse(parser, false, "10:20:30.040+02:00");
297         assertParse(parser, false, "10.5+02:00");
298     }
299
300     //-----------------------------------------------------------------------
301
public void test_localDateOptionalTimeParser() {
302         DateTimeFormatter parser = ISODateTimeFormat.localDateOptionalTimeParser();
303         assertEquals(DateTimeZone.UTC, parser.getZone());
304         assertParse(parser, true, "2006-06-09");
305         assertParse(parser, true, "2006-W27-3");
306         assertParse(parser, true, "2006-123");
307         assertParse(parser, false, "2006-06-09T+02:00");
308         assertParse(parser, false, "2006-W27-3T+02:00");
309         assertParse(parser, false, "2006-123T+02:00");
310         
311         assertParse(parser, true, "2006-06-09T10:20:30.040");
312         assertParse(parser, true, "2006-W27-3T10:20:30.040");
313         assertParse(parser, true, "2006-123T10:20:30.040");
314         assertParse(parser, false, "2006-06-09T10:20:30.040+02:00");
315         assertParse(parser, false, "2006-W27-3T10:20:30.040+02:00");
316         assertParse(parser, false, "2006-123T10:20:30.040+02:00");
317         
318         assertParse(parser, false, "T10:20:30.040");
319         assertParse(parser, false, "T10.5");
320         assertParse(parser, false, "T10:20:30.040+02:00");
321         assertParse(parser, false, "T10.5+02:00");
322         
323         assertParse(parser, false, "10:20:30.040");
324         assertParse(parser, false, "10.5");
325         assertParse(parser, false, "10:20:30.040+02:00");
326         assertParse(parser, false, "10.5+02:00");
327     }
328
329     //-----------------------------------------------------------------------
330
private void assertParse(DateTimeFormatter parser, boolean expected, String JavaDoc str) {
331         if (expected) {
332             parser.parseMillis(str);
333         } else {
334             try {
335                 parser.parseMillis(str);
336                 fail();
337             } catch (IllegalArgumentException JavaDoc ex) {
338                 // expected
339
}
340         }
341     }
342
343 }
344
Popular Tags