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  
26  /***
27   *
28   * Start of tests for DateParser
29   *
30   * @author Nick Lothian
31   *
32   */
33  public class TestDateParser extends TestCase {
34      public void testParseRFC822() {
35          Calendar cal = new GregorianCalendar();
36          cal.setTimeZone(TimeZone.getTimeZone("GMT"));
37  
38          // four-digit year
39          String sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
40          cal.setTime(DateParser.parseRFC822(sDate));
41  
42          assertEquals(2005, cal.get(Calendar.YEAR));
43          assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
44          assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
45          assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
46          assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
47          assertEquals(0, cal.get(Calendar.MINUTE));
48          assertEquals(51, cal.get(Calendar.SECOND));
49  
50          // two-digit year
51          sDate = "Tue, 19 Jul 05 23:00:51 GMT";
52          cal.setTime(DateParser.parseRFC822(sDate));
53  
54          assertEquals(2005, cal.get(Calendar.YEAR));
55          assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
56          assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
57          assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
58          assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
59          assertEquals(0, cal.get(Calendar.MINUTE));
60          assertEquals(51, cal.get(Calendar.SECOND));
61  
62          //RFC822
63          sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
64          assertNotNull(DateParser.parseDate(sDate));
65  
66          //RFC822
67          sDate = "Tue, 19 Jul 05 23:00:51 GMT";
68          assertNotNull(DateParser.parseDate(sDate));
69  
70          //W3C
71          sDate = "2000-01-01T00:00:00Z";
72          assertNotNull(DateParser.parseDate(sDate));
73  
74          //EXTRA
75          sDate = "18:10 2000/10/10";
76          assertNotNull(DateParser.parseDate(sDate));
77  
78          //INVALID
79          sDate = "X20:10 2000-10-10";
80          assertNull(DateParser.parseDate(sDate));
81  
82      }
83  }