|
|
@@ -6,12 +6,14 @@ import java.text.DateFormat;
|
|
6
|
6
|
import java.text.ParseException;
|
|
7
|
7
|
import java.text.SimpleDateFormat;
|
|
8
|
8
|
import java.util.Date;
|
|
|
9
|
+import java.util.Collection;
|
|
|
10
|
+import java.util.ArrayList;
|
|
9
|
11
|
|
|
10
|
12
|
public class CargoTest extends TestCase {
|
|
11
|
|
- private final Location stockholm = new Location(new UnLocode("SE","STO"), "Stockholm");
|
|
12
|
|
- private final Location melbourne = new Location(new UnLocode("AU","MEL"), "Melbourne");
|
|
13
|
|
- private final Location hongkong = new Location(new UnLocode("CN","HKG"), "Hongkong");
|
|
14
|
|
- private final Location hamburg = new Location(new UnLocode("DE","HAM"), "Hamburg");
|
|
|
13
|
+ private final Location stockholm = new Location(new UnLocode("SE", "STO"), "Stockholm");
|
|
|
14
|
+ private final Location melbourne = new Location(new UnLocode("AU", "MEL"), "Melbourne");
|
|
|
15
|
+ private final Location hongkong = new Location(new UnLocode("CN", "HKG"), "Hongkong");
|
|
|
16
|
+ private final Location hamburg = new Location(new UnLocode("DE", "HAM"), "Hamburg");
|
|
15
|
17
|
|
|
16
|
18
|
// TODO:
|
|
17
|
19
|
// it seems that events are not added to the system by cargo.deliveryHistory().addEvent(),
|
|
|
@@ -20,13 +22,12 @@ public class CargoTest extends TestCase {
|
|
20
|
22
|
// read-only from the cargo end. // PeBa
|
|
21
|
23
|
|
|
22
|
24
|
|
|
23
|
|
-
|
|
24
|
25
|
public void testlastKnownLocationUnknownWhenNoEvents() throws Exception {
|
|
25
|
26
|
Cargo cargo = new Cargo(new TrackingId("XYZ"), stockholm, melbourne);
|
|
26
|
27
|
|
|
27
|
28
|
assertEquals(Location.UNKNOWN, cargo.lastKnownLocation());
|
|
28
|
29
|
}
|
|
29
|
|
-
|
|
|
30
|
+
|
|
30
|
31
|
public void testlastKnownLocationReceived() throws Exception {
|
|
31
|
32
|
Cargo cargo = populateCargoReceivedStockholm();
|
|
32
|
33
|
|
|
|
@@ -38,7 +39,7 @@ public class CargoTest extends TestCase {
|
|
38
|
39
|
|
|
39
|
40
|
assertEquals(melbourne, cargo.lastKnownLocation());
|
|
40
|
41
|
}
|
|
41
|
|
-
|
|
|
42
|
+
|
|
42
|
43
|
public void testlastKnownLocationUnloaded() throws Exception {
|
|
43
|
44
|
Cargo cargo = populateCargoOffHongKong();
|
|
44
|
45
|
|
|
|
@@ -62,7 +63,7 @@ public class CargoTest extends TestCase {
|
|
62
|
63
|
|
|
63
|
64
|
assertFalse(cargo.hasArrived());
|
|
64
|
65
|
}
|
|
65
|
|
-
|
|
|
66
|
+
|
|
66
|
67
|
public void testEquality() throws Exception {
|
|
67
|
68
|
Cargo c1 = new Cargo(new TrackingId("ABC"), stockholm, hongkong);
|
|
68
|
69
|
Cargo c2 = new Cargo(new TrackingId("CBA"), stockholm, hongkong);
|
|
|
@@ -84,26 +85,26 @@ public class CargoTest extends TestCase {
|
|
84
|
85
|
|
|
85
|
86
|
return cargo;
|
|
86
|
87
|
}
|
|
87
|
|
-
|
|
|
88
|
+
|
|
88
|
89
|
private Cargo populateCargoClaimedMelbourne() throws Exception {
|
|
89
|
90
|
final Cargo cargo = populateCargoOffMelbourne();
|
|
90
|
91
|
|
|
91
|
92
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-09"), new Date(), HandlingEvent.Type.CLAIM, melbourne));
|
|
92
|
|
-
|
|
|
93
|
+
|
|
93
|
94
|
return cargo;
|
|
94
|
95
|
}
|
|
95
|
|
-
|
|
|
96
|
+
|
|
96
|
97
|
private Cargo populateCargoOffHongKong() throws Exception {
|
|
97
|
98
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), stockholm, melbourne);
|
|
98
|
99
|
|
|
99
|
100
|
final CarrierMovement stockholmToHamburg = new CarrierMovement(
|
|
100
|
|
- new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
|
101
|
+ new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
101
|
102
|
|
|
102
|
103
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, stockholm, stockholmToHamburg));
|
|
103
|
104
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, hamburg, stockholmToHamburg));
|
|
104
|
105
|
|
|
105
|
106
|
final CarrierMovement hamburgToHongKong = new CarrierMovement(
|
|
106
|
|
- new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
|
107
|
+ new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
107
|
108
|
|
|
108
|
109
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-03"), new Date(), HandlingEvent.Type.LOAD, hamburg, hamburgToHongKong));
|
|
109
|
110
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-04"), new Date(), HandlingEvent.Type.UNLOAD, hongkong, hamburgToHongKong));
|
|
|
@@ -115,13 +116,13 @@ public class CargoTest extends TestCase {
|
|
115
|
116
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), stockholm, melbourne);
|
|
116
|
117
|
|
|
117
|
118
|
final CarrierMovement stockholmToHamburg = new CarrierMovement(
|
|
118
|
|
- new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
|
119
|
+ new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
119
|
120
|
|
|
120
|
121
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, stockholm, stockholmToHamburg));
|
|
121
|
122
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, hamburg, stockholmToHamburg));
|
|
122
|
123
|
|
|
123
|
124
|
final CarrierMovement hamburgToHongKong = new CarrierMovement(
|
|
124
|
|
- new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
|
125
|
+ new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
125
|
126
|
|
|
126
|
127
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-03"), new Date(), HandlingEvent.Type.LOAD, hamburg, hamburgToHongKong));
|
|
127
|
128
|
|
|
|
@@ -132,19 +133,19 @@ public class CargoTest extends TestCase {
|
|
132
|
133
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), stockholm, melbourne);
|
|
133
|
134
|
|
|
134
|
135
|
final CarrierMovement stockholmToHamburg = new CarrierMovement(
|
|
135
|
|
- new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
|
136
|
+ new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
136
|
137
|
|
|
137
|
138
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, stockholm, stockholmToHamburg));
|
|
138
|
139
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, hamburg, stockholmToHamburg));
|
|
139
|
140
|
|
|
140
|
141
|
final CarrierMovement hamburgToHongKong = new CarrierMovement(
|
|
141
|
|
- new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
|
142
|
+ new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
142
|
143
|
|
|
143
|
144
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-03"), new Date(), HandlingEvent.Type.LOAD, hamburg, hamburgToHongKong));
|
|
144
|
145
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-04"), new Date(), HandlingEvent.Type.UNLOAD, hongkong, hamburgToHongKong));
|
|
145
|
146
|
|
|
146
|
147
|
final CarrierMovement hongKongToMelbourne = new CarrierMovement(
|
|
147
|
|
- new CarrierMovementId("CAR_001"), hongkong, melbourne);
|
|
|
148
|
+ new CarrierMovementId("CAR_001"), hongkong, melbourne);
|
|
148
|
149
|
|
|
149
|
150
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-05"), new Date(), HandlingEvent.Type.LOAD, hongkong, hongKongToMelbourne));
|
|
150
|
151
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-07"), new Date(), HandlingEvent.Type.UNLOAD, melbourne, hongKongToMelbourne));
|
|
|
@@ -156,25 +157,90 @@ public class CargoTest extends TestCase {
|
|
156
|
157
|
final Cargo cargo = new Cargo(new TrackingId("XYZ"), stockholm, melbourne);
|
|
157
|
158
|
|
|
158
|
159
|
final CarrierMovement stockholmToHamburg = new CarrierMovement(
|
|
159
|
|
- new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
|
160
|
+ new CarrierMovementId("CAR_001"), stockholm, hamburg);
|
|
160
|
161
|
|
|
161
|
162
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-01"), new Date(), HandlingEvent.Type.LOAD, stockholm, stockholmToHamburg));
|
|
162
|
163
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-02"), new Date(), HandlingEvent.Type.UNLOAD, hamburg, stockholmToHamburg));
|
|
163
|
164
|
|
|
164
|
165
|
final CarrierMovement hamburgToHongKong = new CarrierMovement(
|
|
165
|
|
- new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
|
166
|
+ new CarrierMovementId("CAR_001"), hamburg, hongkong);
|
|
166
|
167
|
|
|
167
|
168
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-03"), new Date(), HandlingEvent.Type.LOAD, hamburg, hamburgToHongKong));
|
|
168
|
169
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-04"), new Date(), HandlingEvent.Type.UNLOAD, hongkong, hamburgToHongKong));
|
|
169
|
170
|
|
|
170
|
171
|
final CarrierMovement hongKongToMelbourne = new CarrierMovement(
|
|
171
|
|
- new CarrierMovementId("CAR_001"), hongkong, melbourne);
|
|
|
172
|
+ new CarrierMovementId("CAR_001"), hongkong, melbourne);
|
|
172
|
173
|
|
|
173
|
174
|
cargo.deliveryHistory().addEvent(new HandlingEvent(cargo, getDate("2007-12-05"), new Date(), HandlingEvent.Type.LOAD, hongkong, hongKongToMelbourne));
|
|
174
|
175
|
|
|
175
|
176
|
return cargo;
|
|
176
|
177
|
}
|
|
177
|
178
|
|
|
|
179
|
+ public void testCargoOnTrack() throws Exception {
|
|
|
180
|
+
|
|
|
181
|
+ Location shanghai = new Location(new UnLocode("CN", "SHA"), "Shanghai");
|
|
|
182
|
+ Location rotterdam = new Location(new UnLocode("NL", "RTM"), "Rotterdam");
|
|
|
183
|
+ Location goteborg = new Location(new UnLocode("SE", "GOT"), "Goteborg");
|
|
|
184
|
+ Location hangzhou = new Location(new UnLocode("CN", "HGH"), "Hangzhou");
|
|
|
185
|
+ Location nyc = new Location(new UnLocode("US", "NYC"), "New York");
|
|
|
186
|
+ Location longBeach = new Location(new UnLocode("US", "LGB"), "Long Beach");
|
|
|
187
|
+
|
|
|
188
|
+ Cargo cargo = new Cargo(new TrackingId("CARGO1")); //Immutable things go into the constructor
|
|
|
189
|
+
|
|
|
190
|
+ //Mutable things in setters
|
|
|
191
|
+ cargo.setOrigin(shanghai);
|
|
|
192
|
+ cargo.setDestination(goteborg);
|
|
|
193
|
+
|
|
|
194
|
+
|
|
|
195
|
+ Itinerary itinerary = new Itinerary(
|
|
|
196
|
+ new Leg(new CarrierMovementId("ABC"), shanghai, rotterdam),
|
|
|
197
|
+ new Leg(new CarrierMovementId("DEF"), rotterdam, goteborg)
|
|
|
198
|
+ );
|
|
|
199
|
+
|
|
|
200
|
+ CarrierMovement abc = new CarrierMovement(new CarrierMovementId("ABC"), shanghai, rotterdam);
|
|
|
201
|
+ CarrierMovement def = new CarrierMovement(new CarrierMovementId("DEF"), rotterdam, goteborg);
|
|
|
202
|
+ CarrierMovement ghi = new CarrierMovement(new CarrierMovementId("GHI"), rotterdam, nyc);
|
|
|
203
|
+ CarrierMovement jkl = new CarrierMovement(new CarrierMovementId("JKL"), shanghai, longBeach);
|
|
|
204
|
+
|
|
|
205
|
+ cargo.assignItinerary(itinerary);
|
|
|
206
|
+
|
|
|
207
|
+ Collection<HandlingEvent> handlingEvents = new ArrayList<HandlingEvent>();
|
|
|
208
|
+
|
|
|
209
|
+ //Happy path
|
|
|
210
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(10), new Date(20), HandlingEvent.Type.RECEIVE, shanghai));
|
|
|
211
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(30), new Date(40), HandlingEvent.Type.LOAD, shanghai, abc));
|
|
|
212
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(50), new Date(60), HandlingEvent.Type.UNLOAD, rotterdam, abc));
|
|
|
213
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(70), new Date(80), HandlingEvent.Type.LOAD, rotterdam, def));
|
|
|
214
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(90), new Date(100), HandlingEvent.Type.UNLOAD, goteborg, def));
|
|
|
215
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(110), new Date(120), HandlingEvent.Type.CLAIM, goteborg));
|
|
|
216
|
+ handlingEvents.add(new HandlingEvent(cargo, new Date(130), new Date(140), HandlingEvent.Type.CUSTOMS, goteborg));
|
|
|
217
|
+
|
|
|
218
|
+ cargo.deliveryHistory().addAllEvents(handlingEvents);
|
|
|
219
|
+ assertFalse(cargo.isMisdirected());
|
|
|
220
|
+
|
|
|
221
|
+ /*
|
|
|
222
|
+ TODO: FIX THIS!
|
|
|
223
|
+ //Customs event changes nothing
|
|
|
224
|
+ //TODO: Is this OK?
|
|
|
225
|
+
|
|
|
226
|
+ //Received at the wrong location
|
|
|
227
|
+ event = new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.RECEIVE, hangzhou);
|
|
|
228
|
+ assertFalse(itinerary.isExpected(event));
|
|
|
229
|
+
|
|
|
230
|
+ //Loaded to onto the wrong ship, correct location
|
|
|
231
|
+ event = new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.LOAD, rotterdam, ghi);
|
|
|
232
|
+ assertFalse(itinerary.isExpected(event));
|
|
|
233
|
+
|
|
|
234
|
+ //Unloaded from the wrong ship in the wrong location
|
|
|
235
|
+ event = new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.UNLOAD, longBeach, jkl);
|
|
|
236
|
+ assertFalse(itinerary.isExpected(event));
|
|
|
237
|
+
|
|
|
238
|
+ event = new HandlingEvent(cargo, new Date(), new Date(), HandlingEvent.Type.CLAIM, rotterdam);
|
|
|
239
|
+ assertFalse(itinerary.isExpected(event));
|
|
|
240
|
+ */
|
|
|
241
|
+
|
|
|
242
|
+ }
|
|
|
243
|
+
|
|
178
|
244
|
/**
|
|
179
|
245
|
* Parse an ISO 8601 (YYYY-MM-DD) String to Date
|
|
180
|
246
|
*
|