Просмотр исходного кода

Stabilizes CarrierMovementTest#testSameValueAsEqualsHashCode

The default constructor of java.util.Date depends on the
system clock.  If the clock should happen to tick while the
CarrierMovements in this test are initialized, two
movements we expect to be the same will be off by a millisecond.
Danil 8 лет назад
Родитель
Сommit
305db83f6e

+ 10
- 4
src/test/java/se/citerus/dddsample/domain/model/voyage/CarrierMovementTest.java Просмотреть файл

@@ -29,10 +29,16 @@ public class CarrierMovementTest {
29 29
 
30 30
   @Test
31 31
   public void testSameValueAsEqualsHashCode() {
32
-    CarrierMovement cm1 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(), new Date());
33
-    CarrierMovement cm2 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(), new Date());
34
-    CarrierMovement cm3 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(), new Date());
35
-    CarrierMovement cm4 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(), new Date());
32
+    long referenceTime = System.currentTimeMillis();
33
+
34
+    // One could, in theory, use the same Date(referenceTime) for all of these movements
35
+    // However, in practice, carrier movements will be initialized by different processes
36
+    // so we might have different Date that reference the same time, and we want to be
37
+    // certain that sameValueAs does the right thing in that case.
38
+    CarrierMovement cm1 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(referenceTime), new Date(referenceTime));
39
+    CarrierMovement cm2 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(referenceTime), new Date(referenceTime));
40
+    CarrierMovement cm3 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(referenceTime), new Date(referenceTime));
41
+    CarrierMovement cm4 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(referenceTime), new Date(referenceTime));
36 42
 
37 43
     assertThat(cm1.sameValueAs(cm2)).isTrue();
38 44
     assertThat(cm2.sameValueAs(cm3)).isFalse();