package net.thucydides.core.matchers.dates; import com.google.common.collect.Sets; import org.joda.time.DateTime; import org.junit.Before; import org.junit.Test; import java.util.Date; import java.util.Set; import static net.thucydides.core.matchers.dates.DateMatchers.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.not; public class WhenMatchingDates { Date firstOfJanuary2000; Date januaryFirst2000; Date januaryFirst2001; Date januaryFirst2002; Date januaryFirst2003; Date januaryFirst1900; Date januaryFirst2100; @Before public void setupDates() { firstOfJanuary2000 = new DateTime(2000,01,01,12,0).toDate(); januaryFirst2000 = new DateTime(2000,01,01,12,0).toDate(); januaryFirst2001 = new DateTime(2001,01,01,12,0).toDate(); januaryFirst2002 = new DateTime(2002,01,01,12,0).toDate(); januaryFirst2003 = new DateTime(2003,01,01,12,0).toDate(); januaryFirst1900 = new DateTime(1900,01,01,12,0).toDate(); januaryFirst2100 = new DateTime(2100,01,01,12,0).toDate(); } @Test public void should_be_able_to_check_whether_two_dates_are_equal() { assertThat(firstOfJanuary2000, isSameAs(januaryFirst2000)); } @Test public void should_be_able_to_check_whether_two_dates_are_not_equal() { assertThat(januaryFirst2000, not(isSameAs(januaryFirst2001))); } @Test public void should_be_able_to_check_whether_a_date_is_before_another() { assertThat(januaryFirst2000, isBefore(januaryFirst2001)); } @Test public void should_be_able_to_check_whether_a_date_is_not_before_another() { assertThat(januaryFirst2001, not(isBefore(januaryFirst2000))); } @Test public void should_be_able_to_check_whether_a_date_is_after_another() { assertThat(januaryFirst2001, isAfter(januaryFirst2000)); } @Test public void should_be_able_to_check_whether_a_date_is_not_after_another() { assertThat(januaryFirst2000, not(isAfter(januaryFirst2001))); } @Test public void should_be_able_to_check_whether_a_date_is_between_two_dates() { assertThat(januaryFirst2001, isBetween(januaryFirst2000, januaryFirst2002)); } @Test public void a_date_on_the_boundary_is_considered_between_two_dates() { assertThat(januaryFirst2000, isBetween(januaryFirst2000, januaryFirst2002)); assertThat(januaryFirst2002, isBetween(januaryFirst2000, januaryFirst2002)); } @Test public void a_date_before_the_boundary_is_not_considered_between_two_dates() { assertThat(januaryFirst1900, not(isBetween(januaryFirst2000, januaryFirst2002))); } @Test public void a_date_after_the_boundary_is_not_considered_between_two_dates() { assertThat(januaryFirst2100, not(isBetween(januaryFirst2000, januaryFirst2002))); } @Test public void a_collection_of_dates_can_be_matched_against_another_collection_of_dates() { Set<Date> someDates = Sets.newHashSet(januaryFirst2000, januaryFirst2001, januaryFirst2002); Set<Date> someOtherDates = Sets.newHashSet(januaryFirst2000, januaryFirst2001, januaryFirst2002); assertThat(someDates, containsSameDatesAs(someOtherDates)); } @Test public void a_collection_of_dates_fails_to_match_against_another_collection_of_dates_if_the_dates_are_different() { Set<Date> someDates = Sets.newHashSet(januaryFirst2000, januaryFirst2001, januaryFirst2002); Set<Date> someOtherDates = Sets.newHashSet(januaryFirst2000, januaryFirst2001, januaryFirst2003); assertThat(someDates, not(containsSameDatesAs(someOtherDates))); } @Test public void a_collection_of_dates_fails_to_match_against_another_collection_of_dates_if_the_collection_sizes_are_different() { Set<Date> someDates = Sets.newHashSet(januaryFirst2000, januaryFirst2001, januaryFirst2002); Set<Date> someOtherDates = Sets.newHashSet(januaryFirst2000, januaryFirst2001); assertThat(someDates, not(containsSameDatesAs(someOtherDates))); } @Test public void should_be_able_to_check_whether_two_times_are_close_together() { assertThat(firstOfJanuary2000, isSameAs(januaryFirst2000)); } }