1   /*
2    * Copyright 2004-2005 Sun Microsystems, Inc.
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   */
17  package com.sun.syndication.unittest;
18  
19  import com.sun.syndication.io.impl.DateParser;
20  import junit.framework.TestCase;
21  
22  import java.util.Calendar;
23  import java.util.GregorianCalendar;
24  import java.util.TimeZone;
25  import java.util.Date;
26  
27  /***
28   *
29   * Start of tests for DateParser
30   *
31   * @author Nick Lothian
32   *
33   */
34  public class TestDateParser extends TestCase {
35      public void testParse() {
36          Calendar cal = new GregorianCalendar();
37          cal.setTimeZone(TimeZone.getTimeZone("GMT"));
38  
39          // four-digit year
40          String sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
41          cal.setTime(DateParser.parseRFC822(sDate));
42  
43          assertEquals(2005, cal.get(Calendar.YEAR));
44          assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
45          assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
46          assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
47          assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
48          assertEquals(0, cal.get(Calendar.MINUTE));
49          assertEquals(51, cal.get(Calendar.SECOND));
50  
51          // two-digit year
52          sDate = "Tue, 19 Jul 05 23:00:51 GMT";
53          cal.setTime(DateParser.parseRFC822(sDate));
54  
55          assertEquals(2005, cal.get(Calendar.YEAR));
56          assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
57          assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
58          assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
59          assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
60          assertEquals(0, cal.get(Calendar.MINUTE));
61          assertEquals(51, cal.get(Calendar.SECOND));
62  
63          // four-digit year
64          sDate = "Tue, 19 Jul 2005 23:00:51 UT";
65          cal.setTime(DateParser.parseRFC822(sDate));
66  
67          assertEquals(2005, cal.get(Calendar.YEAR));
68          assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
69          assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
70          assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
71          assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
72          assertEquals(0, cal.get(Calendar.MINUTE));
73          assertEquals(51, cal.get(Calendar.SECOND));
74  
75          // two-digit year
76          sDate = "Tue, 19 Jul 05 23:00:51 UT";
77          cal.setTime(DateParser.parseRFC822(sDate));
78  
79          assertEquals(2005, cal.get(Calendar.YEAR));
80          assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
81          assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
82          assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
83          assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
84          assertEquals(0, cal.get(Calendar.MINUTE));
85          assertEquals(51, cal.get(Calendar.SECOND));
86  
87          //RFC822
88          sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
89          assertNotNull(DateParser.parseDate(sDate));
90  
91          //RFC822
92          sDate = "Tue, 19 Jul 05 23:00:51 GMT";
93          assertNotNull(DateParser.parseDate(sDate));
94  
95          Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
96          c.set(2000,Calendar.JANUARY,01,0,0,0);
97          Date expectedDate = c.getTime();
98  
99          //W3C
100         sDate = "2000-01-01T00:00:00Z";
101         assertEquals(expectedDate.getTime()/1000,DateParser.parseDate(sDate).getTime()/1000);
102 
103         //W3C
104         sDate = "2000-01-01T00:00Z";
105         assertEquals(expectedDate.getTime()/1000,DateParser.parseDate(sDate).getTime()/1000);
106 
107         //W3C
108         sDate = "2000-01-01";
109         assertEquals(expectedDate.getTime()/1000,DateParser.parseDate(sDate).getTime()/1000);
110 
111         //W3C
112         sDate = "2000-01";
113         assertEquals(expectedDate.getTime()/1000,DateParser.parseDate(sDate).getTime()/1000);
114 
115         //W3C
116         sDate = "2000";
117         assertEquals(expectedDate.getTime()/1000,DateParser.parseDate(sDate).getTime()/1000);
118 
119         //EXTRA
120         sDate = "18:10 2000/10/10";
121         assertNotNull(DateParser.parseDate(sDate));
122 
123         //INVALID
124         sDate = "X20:10 2000-10-10";
125         assertNull(DateParser.parseDate(sDate));
126 
127     }
128 }