|
|
@@ -15,11 +15,9 @@ import java.util.*;
|
|
15
|
15
|
|
|
16
|
16
|
public class CargoTest extends TestCase {
|
|
17
|
17
|
|
|
18
|
|
- private List<HandlingEvent> events;
|
|
19
|
18
|
private Voyage voyage;
|
|
20
|
19
|
|
|
21
|
20
|
protected void setUp() throws Exception {
|
|
22
|
|
- events = new ArrayList<HandlingEvent>();
|
|
23
|
21
|
|
|
24
|
22
|
voyage = new Voyage.Builder(new VoyageNumber("0123"), STOCKHOLM).
|
|
25
|
23
|
addMovement(HAMBURG, new Date(), new Date()).
|
|
|
@@ -28,14 +26,14 @@ public class CargoTest extends TestCase {
|
|
28
|
26
|
build();
|
|
29
|
27
|
}
|
|
30
|
28
|
|
|
31
|
|
- public void testConstruction() throws Exception {
|
|
32
|
|
- final TrackingId trackingId = new TrackingId("XYZ");
|
|
33
|
|
- final Date arrivalDeadline = toDate("2009-03-13");
|
|
34
|
|
- final RouteSpecification routeSpecification = new RouteSpecification(
|
|
|
29
|
+ public void testConstruction() {
|
|
|
30
|
+ TrackingId trackingId = new TrackingId("XYZ");
|
|
|
31
|
+ Date arrivalDeadline = toDate("2009-03-13");
|
|
|
32
|
+ RouteSpecification routeSpecification = new RouteSpecification(
|
|
35
|
33
|
STOCKHOLM, MELBOURNE, arrivalDeadline
|
|
36
|
34
|
);
|
|
37
|
35
|
|
|
38
|
|
- final Cargo cargo = new Cargo(trackingId, routeSpecification);
|
|
|
36
|
+ Cargo cargo = new Cargo(trackingId, routeSpecification);
|
|
39
|
37
|
|
|
40
|
38
|
assertEquals(NOT_ROUTED, cargo.delivery().routingStatus());
|
|
41
|
39
|
assertEquals(NOT_RECEIVED, cargo.delivery().transportStatus());
|
|
|
@@ -47,7 +45,7 @@ public class CargoTest extends TestCase {
|
|
47
|
45
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), new RouteSpecification(STOCKHOLM, MELBOURNE, new Date()));
|
|
48
|
46
|
final Itinerary good = new Itinerary();
|
|
49
|
47
|
final Itinerary bad = new Itinerary();
|
|
50
|
|
- final RouteSpecification acceptOnlyGood = new RouteSpecification(cargo.origin(), cargo.routeSpecification().destination(), new Date()) {
|
|
|
48
|
+ final RouteSpecification acceptOnlyGood = new RouteSpecification(cargo.routeSpecification().origin(), cargo.routeSpecification().destination(), new Date()) {
|
|
51
|
49
|
@Override
|
|
52
|
50
|
public boolean isSatisfiedBy(Itinerary itinerary) {
|
|
53
|
51
|
return itinerary == good;
|
|
|
@@ -114,6 +112,8 @@ public class CargoTest extends TestCase {
|
|
114
|
112
|
assertFalse(cargo.delivery().isUnloadedAtDestination());
|
|
115
|
113
|
|
|
116
|
114
|
// Adding an event unrelated to unloading at final destination
|
|
|
115
|
+
|
|
|
116
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
117
|
117
|
events.add(
|
|
118
|
118
|
new HandlingEvent(cargo, new Date(10), new Date(), HandlingEvent.Type.RECEIVE, HANGZOU));
|
|
119
|
119
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
|
@@ -167,6 +167,7 @@ public class CargoTest extends TestCase {
|
|
167
|
167
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), new RouteSpecification(STOCKHOLM, MELBOURNE, new Date()));
|
|
168
|
168
|
|
|
169
|
169
|
HandlingEvent he = new HandlingEvent(cargo, toDate("2007-12-01"), new Date(), HandlingEvent.Type.RECEIVE, STOCKHOLM);
|
|
|
170
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
170
|
171
|
events.add(he);
|
|
171
|
172
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
172
|
173
|
|
|
|
@@ -175,7 +176,7 @@ public class CargoTest extends TestCase {
|
|
175
|
176
|
|
|
176
|
177
|
private Cargo populateCargoClaimedMelbourne() throws Exception {
|
|
177
|
178
|
final Cargo cargo = populateCargoOffMelbourne();
|
|
178
|
|
-
|
|
|
179
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
179
|
180
|
events.add(new HandlingEvent(cargo, toDate("2007-12-09"), new Date(), HandlingEvent.Type.CLAIM, MELBOURNE));
|
|
180
|
181
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
181
|
182
|
|
|
|
@@ -185,7 +186,7 @@ public class CargoTest extends TestCase {
|
|
185
|
186
|
private Cargo populateCargoOffHongKong() throws Exception {
|
|
186
|
187
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), new RouteSpecification(STOCKHOLM, MELBOURNE, new Date()));
|
|
187
|
188
|
|
|
188
|
|
-
|
|
|
189
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
189
|
190
|
events.add(new HandlingEvent(cargo, toDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, STOCKHOLM, voyage));
|
|
190
|
191
|
events.add(new HandlingEvent(cargo, toDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, HAMBURG, voyage));
|
|
191
|
192
|
|
|
|
@@ -199,6 +200,7 @@ public class CargoTest extends TestCase {
|
|
199
|
200
|
private Cargo populateCargoOnHamburg() throws Exception {
|
|
200
|
201
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), new RouteSpecification(STOCKHOLM, MELBOURNE, new Date()));
|
|
201
|
202
|
|
|
|
203
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
202
|
204
|
events.add(new HandlingEvent(cargo, toDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, STOCKHOLM, voyage));
|
|
203
|
205
|
events.add(new HandlingEvent(cargo, toDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, HAMBURG, voyage));
|
|
204
|
206
|
events.add(new HandlingEvent(cargo, toDate("2007-12-03"), new Date(), HandlingEvent.Type.LOAD, HAMBURG, voyage));
|
|
|
@@ -210,6 +212,7 @@ public class CargoTest extends TestCase {
|
|
210
|
212
|
private Cargo populateCargoOffMelbourne() throws Exception {
|
|
211
|
213
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), new RouteSpecification(STOCKHOLM, MELBOURNE, new Date()));
|
|
212
|
214
|
|
|
|
215
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
213
|
216
|
events.add(new HandlingEvent(cargo, toDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, STOCKHOLM, voyage));
|
|
214
|
217
|
events.add(new HandlingEvent(cargo, toDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, HAMBURG, voyage));
|
|
215
|
218
|
|
|
|
@@ -226,6 +229,7 @@ public class CargoTest extends TestCase {
|
|
226
|
229
|
private Cargo populateCargoOnHongKong() throws Exception {
|
|
227
|
230
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), new RouteSpecification(STOCKHOLM, MELBOURNE, new Date()));
|
|
228
|
231
|
|
|
|
232
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
229
|
233
|
events.add(new HandlingEvent(cargo, toDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, STOCKHOLM, voyage));
|
|
230
|
234
|
events.add(new HandlingEvent(cargo, toDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, HAMBURG, voyage));
|
|
231
|
235
|
|
|
|
@@ -248,56 +252,47 @@ public class CargoTest extends TestCase {
|
|
248
|
252
|
//A cargo with no handling events is not misdirected
|
|
249
|
253
|
assertFalse(cargo.delivery().isMisdirected());
|
|
250
|
254
|
|
|
251
|
|
- Collection<HandlingEvent> handlingEvents = new ArrayList<HandlingEvent>();
|
|
252
|
|
-
|
|
253
|
255
|
//Happy path
|
|
254
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, SHANGHAI));
|
|
255
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, SHANGHAI, voyage));
|
|
256
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, ROTTERDAM, voyage));
|
|
257
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(70), new Date(80), HandlingEvent.Type.LOAD, ROTTERDAM, voyage));
|
|
258
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(90), new Date(100), HandlingEvent.Type.UNLOAD, GOTHENBURG, voyage));
|
|
259
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(110), new Date(120), HandlingEvent.Type.CLAIM, GOTHENBURG));
|
|
260
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(130), new Date(140), HandlingEvent.Type.CUSTOMS, GOTHENBURG));
|
|
261
|
|
-
|
|
262
|
|
- events.addAll(handlingEvents);
|
|
|
256
|
+ List<HandlingEvent> events = new ArrayList<HandlingEvent>();
|
|
|
257
|
+ events.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, SHANGHAI));
|
|
|
258
|
+ events.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, SHANGHAI, voyage));
|
|
|
259
|
+ events.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, ROTTERDAM, voyage));
|
|
|
260
|
+ events.add(new HandlingEvent(cargo, new Date(70), new Date(80), HandlingEvent.Type.LOAD, ROTTERDAM, voyage));
|
|
|
261
|
+ events.add(new HandlingEvent(cargo, new Date(90), new Date(100), HandlingEvent.Type.UNLOAD, GOTHENBURG, voyage));
|
|
|
262
|
+ events.add(new HandlingEvent(cargo, new Date(110), new Date(120), HandlingEvent.Type.CLAIM, GOTHENBURG));
|
|
|
263
|
+ events.add(new HandlingEvent(cargo, new Date(130), new Date(140), HandlingEvent.Type.CUSTOMS, GOTHENBURG));
|
|
|
264
|
+
|
|
263
|
265
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
264
|
266
|
assertFalse(cargo.delivery().isMisdirected());
|
|
265
|
267
|
|
|
266
|
268
|
//Try a couple of failing ones
|
|
267
|
269
|
|
|
268
|
270
|
cargo = setUpCargoWithItinerary(SHANGHAI, ROTTERDAM, GOTHENBURG);
|
|
269
|
|
- handlingEvents = new ArrayList<HandlingEvent>();
|
|
270
|
|
-
|
|
271
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.RECEIVE, HANGZOU));
|
|
272
|
|
- events.addAll(handlingEvents);
|
|
|
271
|
+ events.add(new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.RECEIVE, HANGZOU));
|
|
273
|
272
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
274
|
273
|
|
|
275
|
274
|
assertTrue(cargo.delivery().isMisdirected());
|
|
276
|
275
|
|
|
277
|
276
|
|
|
278
|
277
|
cargo = setUpCargoWithItinerary(SHANGHAI, ROTTERDAM, GOTHENBURG);
|
|
279
|
|
- handlingEvents = new ArrayList<HandlingEvent>();
|
|
280
|
278
|
|
|
281
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, SHANGHAI));
|
|
282
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, SHANGHAI, voyage));
|
|
283
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, ROTTERDAM, voyage));
|
|
284
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(70), new Date(80), HandlingEvent.Type.LOAD, ROTTERDAM, voyage));
|
|
|
279
|
+ events.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, SHANGHAI));
|
|
|
280
|
+ events.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, SHANGHAI, voyage));
|
|
|
281
|
+ events.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, ROTTERDAM, voyage));
|
|
|
282
|
+ events.add(new HandlingEvent(cargo, new Date(70), new Date(80), HandlingEvent.Type.LOAD, ROTTERDAM, voyage));
|
|
285
|
283
|
|
|
286
|
|
- events.addAll(handlingEvents);
|
|
287
|
284
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
288
|
285
|
|
|
289
|
286
|
assertTrue(cargo.delivery().isMisdirected());
|
|
290
|
287
|
|
|
291
|
288
|
|
|
292
|
289
|
cargo = setUpCargoWithItinerary(SHANGHAI, ROTTERDAM, GOTHENBURG);
|
|
293
|
|
- handlingEvents = new ArrayList<HandlingEvent>();
|
|
294
|
290
|
|
|
295
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, SHANGHAI));
|
|
296
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, SHANGHAI, voyage));
|
|
297
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, ROTTERDAM, voyage));
|
|
298
|
|
- handlingEvents.add(new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.CLAIM, ROTTERDAM));
|
|
|
291
|
+ events.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, SHANGHAI));
|
|
|
292
|
+ events.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, SHANGHAI, voyage));
|
|
|
293
|
+ events.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, ROTTERDAM, voyage));
|
|
|
294
|
+ events.add(new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.CLAIM, ROTTERDAM));
|
|
299
|
295
|
|
|
300
|
|
- events.addAll(handlingEvents);
|
|
301
|
296
|
cargo.deriveDeliveryProgress(HandlingHistory.fromEvents(events));
|
|
302
|
297
|
|
|
303
|
298
|
assertTrue(cargo.delivery().isMisdirected());
|