@Test
public void iso8601withMillisecondsAndOffset() throws Exception {

    Calendar fromJson = calendarAdapter().fromJson("\"2014-04-30T10:53:48.000+02:00\"");
    assertThat(fromJson).isNotNull();
    assertThat(fromJson.isSet(Calendar.MILLISECOND)).isTrue();
    assertThat(fromJson.isSet(Calendar.SECOND)).isTrue();
    assertThat(fromJson.isSet(Calendar.MINUTE)).isTrue();
    assertThat(fromJson.isSet(Calendar.HOUR)).isTrue();
    assertThat(fromJson.isSet(Calendar.DAY_OF_MONTH)).isTrue();
    assertThat(fromJson.isSet(Calendar.MONTH)).isTrue();
    assertThat(fromJson.isSet(Calendar.YEAR)).isTrue();
    assertThat(fromJson.get(Calendar.YEAR)).isEqualTo(2014);
    assertThat(fromJson.get(Calendar.MONTH)).isEqualTo(Calendar.APRIL);
    assertThat(fromJson.get(Calendar.DAY_OF_MONTH)).isEqualTo(30);
    // FIXME on travis
    // FIXME this currently fails due to the fact that travis servers have different time zones
    //assertThat(fromJson.get(Calendar.HOUR_OF_DAY)).isEqualTo(10);
    assertThat(fromJson.get(Calendar.MINUTE)).isEqualTo(53);
    assertThat(fromJson.get(Calendar.SECOND)).isEqualTo(48);
    assertThat(fromJson.getTimeZone()).isEqualTo(TimeZone.getTimeZone("CET"));
}