alexruiz / fest-assert-2.x

FEST Fluent Assertions 2.x
http://fest.easytesting.org
Apache License 2.0
402 stars 69 forks source link

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

Open joel-costigliola opened 11 years ago

joel-costigliola commented 11 years ago

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

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);