/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.test.descriptor; import static org.fest.assertions.Assertions.assertThat; import java.util.Calendar; import java.util.TimeZone; import org.hibernate.ogm.type.descriptor.impl.Iso8601CalendarTypeDescriptor; import org.junit.Test; /** * Unit test for {@link Iso8601CalendarTypeDescriptor}. * * @author Gunnar Morling */ public class Iso8601CalendarTypeDescriptorTest { @Test public void shouldFormatCalendarIntoStringWithDateAndTimeAndTimeZone() { assertThat( Iso8601CalendarTypeDescriptor.DATE_TIME.toString( christmasEvening() ) ).isEqualTo( "2013-12-24T18:30:52.311+01:00" ); } @Test public void shouldFormatCalendarIntoStringWithTimeAndTimeZone() { assertThat( Iso8601CalendarTypeDescriptor.TIME.toString( christmasEvening() ) ).isEqualTo( "18:30:52.311+01:00" ); } @Test public void shouldFormatCalendarIntoStringWithDateTimeZone() { assertThat( Iso8601CalendarTypeDescriptor.DATE.toString( christmasEvening() ) ).isEqualTo( "2013-12-24+01:00" ); } @Test public void shouldParseStringWithDateAndTimeAndTimeZoneIntoCalendar() { assertThat( Iso8601CalendarTypeDescriptor.DATE_TIME.fromString( "2013-12-24T18:30:52.311+01:00" ).getTimeInMillis() ) .isEqualTo( christmasEvening().getTimeInMillis() ); } @Test public void shouldParseStringWithTimeAndTimeZoneIntoCalendar() { assertThat( Iso8601CalendarTypeDescriptor.TIME.fromString( "18:30:52.311+01:00" ).getTimeInMillis() ) .isEqualTo( aTimeInTheEvening().getTimeInMillis() ); } @Test public void shouldParseStringWithDateAndTimeZoneIntoCalendar() { assertThat( Iso8601CalendarTypeDescriptor.DATE.fromString( "2013-12-24+01:00" ).getTimeInMillis() ) .isEqualTo( christmasDay().getTimeInMillis() ); } private Calendar christmasEvening() { Calendar christmasEvening = Calendar.getInstance( TimeZone.getTimeZone( "Europe/Berlin" ) ); christmasEvening.set( 2013, 11, 24, 18, 30, 52 ); christmasEvening.set( Calendar.MILLISECOND, 311 ); return christmasEvening; } private Calendar christmasDay() { Calendar christmas = Calendar.getInstance( TimeZone.getTimeZone( "Europe/Berlin" ) ); christmas.set( 2013, 11, 24, 0, 0, 0 ); christmas.set( Calendar.MILLISECOND, 0 ); return christmas; } private Calendar aTimeInTheEvening() { Calendar time = Calendar.getInstance( TimeZone.getTimeZone( "Europe/Berlin" ) ); time.set( 1970, 0, 1, 18, 30, 52 ); time.set( Calendar.MILLISECOND, 311 ); return time; } }