/** * */ package com.processpuzzle.fundamental_types.domain; import static org.junit.Assert.*; import static org.junit.Assume.*; import static org.hamcrest.Matchers.*; import java.text.ParseException; import java.util.Date; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.processpuzzle.internalization.domain.ProcessPuzzleLocale; public class TimePointTest { private static final int SAMPLE_SECONDS = 25; private static final int SAMPLE_MINUTES = 33; private static final int SAMPLE_HOUR = 8; private static final int SAMPLE_DAY = 23; private static final int SAMPLE_YEAR = 2011; private static final int SAMPLE_MONTH = 03; private static final String DATE_AS_STRING = "2011.03.20"; private ProcessPuzzleLocale aLocale; @Before public void beforeEachTests() { Date date = new Date(); assumeThat( date, equalTo( date )); aLocale = new ProcessPuzzleLocale( "hu", "HU" ); } @Test public final void instantiation_whenDateWithPrecissionSpecified(){ TimePoint aTimePoint = new TimePoint( SAMPLE_YEAR, SAMPLE_MONTH, SAMPLE_DAY, SAMPLE_HOUR, SAMPLE_MINUTES, SAMPLE_SECONDS ); TimePoint newTimePoint = new TimePoint( aTimePoint.getValue(), TimePrecision.YEAR ); assertThat( newTimePoint.getYear(), equalTo( SAMPLE_YEAR )); assertThat( newTimePoint.getMonth(), equalTo( 0 )); assertThat( newTimePoint.getDay(), equalTo( 0 )); } @Test public final void instantiation_whenTimeIsSpecifiedAsString_UsesDefaultPrecission(){ TimePoint aTimePoint = new TimePoint( DATE_AS_STRING, aLocale ); assertThat( aTimePoint.getPrecision(), equalTo( TimePrecision.DAY )); } @Test public final void compareTo_whenLessThan_returnMinusOne() { TimePoint tPoint1 = new TimePoint( 2007, 03, 15 ); TimePoint tPoint2 = new TimePoint( 2007, 03, 02 ); assertEquals( -1, tPoint2.compareTo( tPoint1 ) ); } @Test public final void compareTo_whenGreaterThan_returnsPlusOne() { TimePoint tPoint1 = new TimePoint( 2007, 03, 15 ); TimePoint tPoint2 = new TimePoint( 2007, 03, 02 ); assertEquals( 1, tPoint1.compareTo( tPoint2 ) ); } @Test public final void compareTo_whenEquals_returnsZero() { TimePoint tPoint1 = new TimePoint( 2007, 03, 11 ); TimePoint tPoint2 = new TimePoint( 2007, 03, 11 ); assertEquals( 0, tPoint1.compareTo( tPoint2 ) ); } @Test public final void equals_whenInstantiatedWithSameDateObject_isTrue() { Date currentTime = new Date( System.currentTimeMillis() ); TimePoint timePointOne = new TimePoint( currentTime ); TimePoint timePointTwo = new TimePoint( currentTime ); assumeThat( timePointOne.getPrecision(), equalTo( TimePrecision.MILLISECOND )); assertThat( timePointOne, equalTo( timePointTwo ) ); assertThat( timePointTwo, equalTo( timePointOne )); } @Test public final void equals_whenInstantiatedWithSameDateValues_isTrue() { TimePoint timePointOne = new TimePoint( 2008, 4, 28 ); TimePoint timePointTwo = new TimePoint( 2008, 4, 28 ); assertThat( timePointOne, equalTo( timePointTwo ) ); assertThat( timePointTwo, equalTo( timePointOne )); } @Test public final void equals_whenInstantiatedWithSameTimeValues_isTrue() { TimePoint timePointOne = new TimePoint( 2008, 4, 28, 8, 32, 11 ); TimePoint timePointTwo = new TimePoint( 2008, 4, 28, 8, 32, 11 ); assumeThat( timePointOne.getPrecision(), equalTo( TimePrecision.SECOND )); assertThat( timePointOne, equalTo( timePointTwo ) ); assertThat( timePointTwo, equalTo( timePointOne )); } @Test public final void equals_whenTimeIsSpecifiedByString() { TimePoint timePointOne = new TimePoint( DATE_AS_STRING, aLocale ); TimePoint timePointTwo = new TimePoint( DATE_AS_STRING, aLocale ); assertThat( timePointOne.equals( timePointTwo ), is( true )); assertThat( timePointTwo.equals( timePointOne ), is( true )); } @Test public final void equals_ShouldEqualWithItself() { TimePoint tPoint = new TimePoint( 2007, 1, 1 ); assertThat( tPoint, equalTo( tPoint ) ); assertThat( tPoint.getPrecision(), equalTo( TimePrecision.DAY )); } @Test public final void equals_IsFalseWhenPrecisionDiffers() { TimePoint timeWithDayPrecision = new TimePoint( 2009, 5, 31 ); TimePoint timeWithHourPrecision = new TimePoint( 2009, 5, 31, 0, null ); assertThat( timeWithDayPrecision.equals( timeWithHourPrecision ), is( false )); } @Test public final void dayOfMonts_returnsDayPart() throws ParseException { TimePoint aTimePoint = new TimePoint( 1999, 1, 11 ); assertEquals( "The day of month is: ", 11, aTimePoint.dayOfMonth() ); } @Test public final void isLeapYear_determinesIfYearIsLeap() { TimePoint noneLeapYear = new TimePoint( 2007, 03, 11 ); TimePoint leapYear = new TimePoint( 2008, 01, 11 ); assertFalse( noneLeapYear.isLeapYear() ); assertTrue( leapYear.isLeapYear() ); } @After public void afterEachTest() throws Exception {} }