fest-assert-2.x icon indicating copy to clipboard operation
fest-assert-2.x copied to clipboard

Date assertions `isInSameXXX` don't perform a chronogical comparison (as stated in javadoc) but a field by field comparison

Open joel-costigliola opened this issue 12 years ago • 0 comments

Let's see that on an example :

Date date = parseDatetime("2003-04-26T13:01:02"); // 0 ms
Date dateMinusOneMs = new Date(date.getTime() - 1);
// The assertion below fails as seconds fields are different 
// even though dates difference is only 1ms
// If we expect a chronological comparison then it should succeed
// If we expect a field by field comparison then it fails as expected
assertThat(date).isInSameSecondAs(dateMinusOneMs); 

I suggest to

  • rename isInSameSecondAs to isEqualToIgnoringMs
  • add new assertions for chronological comparison with isInSameSecondWindowAs
Date date = parseDatetime("2003-04-26T13:01:02"); // 0 ms
Date dateMinusOneMs = new Date(date.getTime() - 1);
// should fail
assertThat(date).isEqualToIgnoringMilliseconds(dateMinusOneMs); 
// should succeed
assertThat(date).isInSameSecondWindowAs(dateMinusOneMs); 

joel-costigliola avatar Feb 05 '13 20:02 joel-costigliola