package br.com.caelum.vraptor.util;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import org.junit.Before;
import org.junit.Test;
public class ISO8601UtilTest {
private ISO8601Util iso8601;
@Before
public void setUp() throws Exception {
iso8601 = new ISO8601Util();
}
@Test
public void shouldParseDateExtendFormat() throws ParseException {
Calendar parseIso8601 = iso8601.toCalendar("1982-06-10");
Calendar date = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
date.set(1982, 5, 10, 0, 0, 0);
date.set(Calendar.MILLISECOND, 0);
assertThat(parseIso8601, is(date));
}
@Test
public void shouldParseDateBasicFormat() throws ParseException {
Calendar parseIso8601 = iso8601.toCalendar("19820610");
Calendar date = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
date.set(1982, 5, 10, 0, 0, 0);
date.set(Calendar.MILLISECOND, 0);
assertThat(parseIso8601, is(date));
}
@Test
public void shouldParseDateTimeExtendFormat() throws ParseException {
Calendar parseIso8601 = iso8601.toCalendar("1982-06-10T05:35:10.000-03:00");
Calendar date = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT-03:00"));
date.set(1982, 5, 10, 5, 35, 10);
date.set(Calendar.MILLISECOND, 0);
assertThat(parseIso8601, is(date));
}
@Test
public void shouldParseDateTimeBasicFormat() throws ParseException {
Calendar parseIso8601 = iso8601.toCalendar("19820610T05-03");
Calendar date = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT-03:00"));
date.set(1982, 5, 10, 5, 0, 0);
date.set(Calendar.MILLISECOND, 0);
assertThat(parseIso8601, is(date));
}
@Test
public void shouldParseDateTimeExtendFormatUTC() throws ParseException {
Calendar parseIso8601 = iso8601.toCalendar("1982-06-10T05:35:10Z");
Calendar date = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
date.set(1982, 5, 10, 5, 35, 10);
date.set(Calendar.MILLISECOND, 0);
assertThat(parseIso8601, is(date));
}
@Test(expected=ParseException.class)
public void expectParseExceptionOnDateWithBars() throws ParseException {
iso8601.toCalendar("1982/06/10");
}
@Test
public void shouldParseCalendarToIso8601AndReconverToCalendarBrasiliaZone() throws ParseException {
Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT-03:00"));
calendar.set(1982, 5, 10, 5, 00, 0);
calendar.set(Calendar.MILLISECOND, 123);
String iso8601Format = iso8601.fromCalendar(calendar);
assertThat(iso8601Format, is("1982-06-10T05:00:00.123-0300"));
Calendar reconvertCalendar = iso8601.toCalendar(iso8601Format);
assertThat(calendar, is(reconvertCalendar));
}
@Test
public void shouldParseCalendarToIso8601AndReconverToCalendarUTCZone() throws ParseException {
Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.set(1982, 5, 10, 5, 00, 0);
calendar.set(Calendar.MILLISECOND, 123);
String iso8601Format = iso8601.fromCalendar(calendar);
assertThat(iso8601Format, is("1982-06-10T05:00:00.123Z"));
Calendar reconvertCalendar = iso8601.toCalendar(iso8601Format);
assertThat(calendar, is(reconvertCalendar));
}
}