rome/src/test/java/com/sun/syndication/unittest/TestDateParser.java
2013-10-03 22:32:00 +02:00

129 lines
4.5 KiB
Java

/*
* Copyright 2004-2005 Sun Microsystems, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.sun.syndication.unittest;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import junit.framework.TestCase;
import com.sun.syndication.io.impl.DateParser;
/**
*
* Start of tests for DateParser
*
* @author Nick Lothian
*
*/
public class TestDateParser extends TestCase {
public void testParse() {
final Calendar cal = new GregorianCalendar();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
// four-digit year
String sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
cal.setTime(DateParser.parseRFC822(sDate));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
assertEquals(0, cal.get(Calendar.MINUTE));
assertEquals(51, cal.get(Calendar.SECOND));
// two-digit year
sDate = "Tue, 19 Jul 05 23:00:51 GMT";
cal.setTime(DateParser.parseRFC822(sDate));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
assertEquals(0, cal.get(Calendar.MINUTE));
assertEquals(51, cal.get(Calendar.SECOND));
// four-digit year
sDate = "Tue, 19 Jul 2005 23:00:51 UT";
cal.setTime(DateParser.parseRFC822(sDate));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
assertEquals(0, cal.get(Calendar.MINUTE));
assertEquals(51, cal.get(Calendar.SECOND));
// two-digit year
sDate = "Tue, 19 Jul 05 23:00:51 UT";
cal.setTime(DateParser.parseRFC822(sDate));
assertEquals(2005, cal.get(Calendar.YEAR));
assertEquals(6, cal.get(Calendar.MONTH)); // month is zero-indexed
assertEquals(19, cal.get(Calendar.DAY_OF_MONTH));
assertEquals(3, cal.get(Calendar.DAY_OF_WEEK));
assertEquals(23, cal.get(Calendar.HOUR_OF_DAY));
assertEquals(0, cal.get(Calendar.MINUTE));
assertEquals(51, cal.get(Calendar.SECOND));
// RFC822
sDate = "Tue, 19 Jul 2005 23:00:51 GMT";
assertNotNull(DateParser.parseDate(sDate));
// RFC822
sDate = "Tue, 19 Jul 05 23:00:51 GMT";
assertNotNull(DateParser.parseDate(sDate));
final Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
c.set(2000, Calendar.JANUARY, 01, 0, 0, 0);
final Date expectedDate = c.getTime();
// W3C
sDate = "2000-01-01T00:00:00Z";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
// W3C
sDate = "2000-01-01T00:00Z";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
// W3C
sDate = "2000-01-01";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
// W3C
sDate = "2000-01";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
// W3C
sDate = "2000";
assertEquals(expectedDate.getTime() / 1000, DateParser.parseDate(sDate).getTime() / 1000);
// EXTRA
sDate = "18:10 2000/10/10";
assertNotNull(DateParser.parseDate(sDate));
// INVALID
sDate = "X20:10 2000-10-10";
assertNull(DateParser.parseDate(sDate));
}
}