/**
* Copyright (c) 2009 - 2012 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package org.candlepin.resource.util;
import static org.junit.Assert.*;
import org.candlepin.common.exceptions.BadRequestException;
import org.junit.Test;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* ResourceDateParserTest
*/
public class ResourceDateParserTest {
@Test(expected = BadRequestException.class)
public void errorFromAndToPlusDays() {
ResourceDateParser.getFromDate("2012/01/01", "2012/10/10", "3");
}
@Test(expected = BadRequestException.class)
public void errorFromPlusDays() {
ResourceDateParser.getFromDate("2012/01/01", null, "3");
}
@Test(expected = BadRequestException.class)
public void errorToPlusDays() {
ResourceDateParser.getFromDate(null, "2012/01/01", "3");
}
@Test
public void onlyDays() {
Calendar cal = Calendar.getInstance();
// the 3 here should match the value given to getFromDate
// below.
cal.add(Calendar.DATE, -3);
int expected = cal.get(Calendar.DATE);
Date from = ResourceDateParser.getFromDate(null, null, "3");
cal.setTime(from);
assertEquals(expected, cal.get(Calendar.DATE));
}
@Test
public void allEmpty() {
assertNull(ResourceDateParser.getFromDate(null, null, null));
assertNull(ResourceDateParser.getFromDate("", "", ""));
assertNull(ResourceDateParser.getFromDate(null, null, ""));
assertNull(ResourceDateParser.getFromDate(" ", " ", " "));
assertNull(ResourceDateParser.getFromDate("", "", null));
}
@Test
public void fromAndTo() {
Date from = ResourceDateParser.getFromDate("2012-01-01",
"2012-01-10", null);
Calendar cal = Calendar.getInstance();
cal.setTime(from);
assertEquals(1, cal.get(Calendar.DATE));
}
@Test(expected = NumberFormatException.class)
public void nonNumberForDays() {
ResourceDateParser.getFromDate(null, null, "ABC");
}
@Test
public void parseDate() {
Date parsed = ResourceDateParser.parseDateString("2012-05-29");
Calendar cal = Calendar.getInstance();
cal.setTime(parsed);
// adding one because get returns 0 based month's which to me
// is confusing, January should always be 1 not 0 :)
assertEquals(5, cal.get(Calendar.MONTH) + 1);
assertEquals(29, cal.get(Calendar.DATE));
assertEquals(2012, cal.get(Calendar.YEAR));
}
@Test
public void parseDateTime() {
Date parsed = ResourceDateParser.parseDateString("1997-07-16T19:20:30-00:00");
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cal.setTime(parsed);
// adding one because get returns 0 based month's which to me
// is confusing, January should always be 1 not 0 :)
assertEquals(7, cal.get(Calendar.MONTH) + 1);
assertEquals(16, cal.get(Calendar.DATE));
assertEquals(1997, cal.get(Calendar.YEAR));
assertEquals(7, cal.get(Calendar.HOUR));
assertEquals(20, cal.get(Calendar.MINUTE));
assertEquals(30, cal.get(Calendar.SECOND));
}
@Test
public void nullParseDate() {
assertEquals(null, ResourceDateParser.parseDateString(null));
assertEquals(null, ResourceDateParser.parseDateString(""));
assertEquals(null, ResourceDateParser.parseDateString(" "));
}
@Test(expected = BadRequestException.class)
public void parseDateError() {
ResourceDateParser.parseDateString("2012/13/64");
}
}