package com.fasterxml.jackson.databind.util;
import java.text.DateFormat;
import java.util.*;
import com.fasterxml.jackson.databind.BaseMapTest;
/**
* @see ISO8601DateFormat
*/
public class ISO8601DateFormatTest extends BaseMapTest
{
private ISO8601DateFormat df;
private Date date;
@Override
public void setUp()
{
Calendar cal = new GregorianCalendar(2007, 8 - 1, 13, 19, 51, 23);
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
cal.set(Calendar.MILLISECOND, 0);
date = cal.getTime();
df = new ISO8601DateFormat();
}
public void testFormat() {
String result = df.format(date);
assertEquals("2007-08-13T19:51:23Z", result);
}
public void testParse() throws Exception {
Date result = df.parse("2007-08-13T19:51:23Z");
assertEquals(date, result);
// Test parsing date-only values with and without a timezone designation
Date dateOnly = df.parse("2007-08-14");
Calendar cal = new GregorianCalendar(2007, 8-1, 14);
assertEquals(cal.getTime(), dateOnly);
dateOnly = df.parse("2007-08-14Z");
cal = new GregorianCalendar(2007, 8-1, 14);
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
assertEquals(cal.getTime(), dateOnly);
}
public void testPartialParse() throws Exception {
java.text.ParsePosition pos = new java.text.ParsePosition(0);
String timestamp = "2007-08-13T19:51:23Z";
Date result = df.parse(timestamp + "hello", pos);
assertEquals(date, result);
assertEquals(timestamp.length(), pos.getIndex());
}
public void testCloneObject() throws Exception {
DateFormat clone = (DateFormat)df.clone();
assertSame(df, clone);
}
public void testHashCodeEquals() throws Exception {
// for [databind#1130]
DateFormat defaultDF = StdDateFormat.instance;
defaultDF.hashCode();
assertTrue(defaultDF.equals(defaultDF));
}
}