Skip to content

Commit 53d1a55

Browse files
committed
Merge branch 'dev-2.x' into add_non_regression_module_tests
# Conflicts: # application/src/test/java/org/opentripplanner/updater/trip/siri/SiriEtBuilder.java
2 parents b694d48 + 588afab commit 53d1a55

11 files changed

Lines changed: 188 additions & 23 deletions

File tree

application/src/test/java/org/opentripplanner/transit/service/ReplacementHelperTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static org.junit.Assert.assertNotNull;
77
import static org.junit.Assert.assertTrue;
88
import static org.opentripplanner.transit.model._data.FeedScopedIdForTestFactory.id;
9+
import static org.opentripplanner.updater.spi.UpdateResultAssertions.assertSuccess;
910

1011
import java.util.stream.StreamSupport;
1112
import org.junit.jupiter.api.Test;
@@ -136,7 +137,7 @@ private TripOnServiceDate createReplacementTrip(String oldId, String newId, Stri
136137
.buildEstimatedTimetableDeliveries();
137138

138139
var result = siri.applyEstimatedTimetable(createExtraJourney);
139-
assertEquals(1, result.successful());
140+
assertSuccess(result);
140141

141142
var service = env.transitService();
142143
return service.getTripOnServiceDate(id(newId));

application/src/test/java/org/opentripplanner/updater/trip/gtfs/moduletests/delay/DelayedTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void singleStopDelay() {
4343

4444
var result = rt.applyTripUpdate(tripUpdate);
4545

46-
assertEquals(1, result.successful());
46+
assertSuccess(result);
4747

4848
var tripData = env.tripData(TRIP_1_ID);
4949

application/src/test/java/org/opentripplanner/updater/trip/siri/SiriEtBuilder.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,23 @@ public SiriEtBuilder withLineRef(String lineRef) {
103103
return this;
104104
}
105105

106+
public SiriEtBuilder withOccupancy(OccupancyEnumeration occupancy) {
107+
evj.setOccupancy(occupancy);
108+
return this;
109+
}
110+
111+
public SiriEtBuilder withPredictionInaccurate(boolean predictionInaccurate) {
112+
evj.setPredictionInaccurate(predictionInaccurate);
113+
return this;
114+
}
115+
116+
public SiriEtBuilder withDestinationName(String destinationName) {
117+
var name = new NaturalLanguageStringStructure();
118+
name.setValue(destinationName);
119+
evj.getDestinationNames().add(name);
120+
return this;
121+
}
122+
106123
public SiriEtBuilder withExternalLineRef(String externalLineRef) {
107124
var ref = new LineRef();
108125
ref.setValue(externalLineRef);
@@ -169,11 +186,6 @@ public SiriEtBuilder withEstimatedCalls(
169186
return this;
170187
}
171188

172-
public SiriEtBuilder withOccupancy(OccupancyEnumeration occupancy) {
173-
evj.setOccupancy(occupancy);
174-
return this;
175-
}
176-
177189
public SiriEtBuilder withVehicleJourneyRef(String id) {
178190
var ref = new VehicleJourneyRef();
179191
ref.setValue(id);

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/cancellation/CancellationTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static com.google.common.truth.Truth.assertThat;
44
import static org.junit.jupiter.api.Assertions.assertEquals;
5+
import static org.opentripplanner.updater.spi.UpdateResultAssertions.assertSuccess;
56

67
import org.junit.jupiter.api.Test;
78
import org.opentripplanner.transit.model._data.TransitTestEnvironment;
@@ -58,7 +59,7 @@ void testCancelTrip() {
5859

5960
var result = siri.applyEstimatedTimetable(updates);
6061

61-
assertEquals(1, result.successful());
62+
assertSuccess(result);
6263
assertEquals(RealTimeState.CANCELED, env.tripData(TRIP_1_ID).realTimeState());
6364
}
6465

@@ -77,7 +78,7 @@ void testCancelTripWithMissingTimes() {
7778

7879
var result = siri.applyEstimatedTimetable(updates);
7980

80-
assertEquals(1, result.successful());
81+
assertSuccess(result);
8182
assertEquals(RealTimeState.CANCELED, env.tripData(TRIP_1_ID).realTimeState());
8283
}
8384

@@ -129,7 +130,7 @@ void testChangeQuayAndCancelAddedTrip() {
129130
)
130131
.buildEstimatedTimetableDeliveries();
131132
var creationResult = siri.applyEstimatedTimetable(creation);
132-
assertEquals(1, creationResult.successful());
133+
assertSuccess(creationResult);
133134
assertEquals(
134135
"ADDED | A 0:00:10 0:00:11 | B 0:00:20 0:00:21",
135136
env.tripData(ADDED_TRIP_ID).showTimetable()
@@ -168,7 +169,7 @@ private void changeQuayAndCancelTrip(SiriTestHelper siri, String tripId) {
168169
.buildEstimatedTimetableDeliveries();
169170

170171
var modificationResult = siri.applyEstimatedTimetable(modification);
171-
assertEquals(1, modificationResult.successful());
172+
assertSuccess(modificationResult);
172173
TransitTestEnvironment transitTestEnvironment = siri.realtimeTestEnvironment();
173174
assertEquals(
174175
"MODIFIED | A 0:00:15 0:00:15 | D 0:00:25 0:00:25",
@@ -191,6 +192,6 @@ private void changeQuayAndCancelTrip(SiriTestHelper siri, String tripId) {
191192

192193
var cancellationResult = siri.applyEstimatedTimetable(cancellation);
193194

194-
assertEquals(1, cancellationResult.successful());
195+
assertSuccess(cancellationResult);
195196
}
196197
}

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extracall/ExtraCallTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.opentripplanner.updater.spi.UpdateResultAssertions.assertFailure;
5+
import static org.opentripplanner.updater.spi.UpdateResultAssertions.assertSuccess;
56

67
import java.util.List;
78
import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ void testExtraCall() {
4243

4344
var result = siri.applyEstimatedTimetable(updates);
4445

45-
assertEquals(1, result.successful());
46+
assertSuccess(result);
4647
assertEquals(
4748
"MODIFIED | A [R] 0:00:15 0:00:15 | D [EC] 0:00:20 0:00:25 | B 0:00:33 0:00:33",
4849
env.tripData(TRIP_1_ID).showTimetable()
@@ -58,7 +59,7 @@ void testExtraCallMultipleTimes() {
5859
siri.applyEstimatedTimetable(updates);
5960
var result = siri.applyEstimatedTimetable(updates);
6061

61-
assertEquals(1, result.successful());
62+
assertSuccess(result);
6263
assertEquals(
6364
"MODIFIED | A [R] 0:00:15 0:00:15 | D [EC] 0:00:20 0:00:25 | B 0:00:33 0:00:33",
6465
env.tripData(TRIP_1_ID).showTimetable()
@@ -81,9 +82,9 @@ void testExtraCallAndCancellation() {
8182

8283
var cancellationResult = siri.applyEstimatedTimetable(cancellation);
8384

84-
assertEquals(1, cancellationResult.successful());
85+
assertSuccess(cancellationResult);
8586

86-
assertEquals(1, result.successful());
87+
assertSuccess(result);
8788
assertEquals(
8889
"CANCELED | A 0:00:10 0:00:11 | B 0:00:20 0:00:21",
8990
env.tripData(TRIP_1_ID).showTimetable()

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extrajourney/ExtraJourneyTest.java

Lines changed: 120 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.opentripplanner.transit.model.network.Route;
1818
import org.opentripplanner.transit.model.organization.Operator;
1919
import org.opentripplanner.transit.model.site.RegularStop;
20+
import org.opentripplanner.transit.model.timetable.OccupancyStatus;
2021
import org.opentripplanner.transit.model.timetable.RealTimeState;
2122
import org.opentripplanner.transit.model.timetable.Trip;
2223
import org.opentripplanner.transit.model.timetable.TripIdAndServiceDate;
@@ -25,6 +26,7 @@
2526
import org.opentripplanner.updater.trip.RealtimeTestConstants;
2627
import org.opentripplanner.updater.trip.SiriTestHelper;
2728
import org.opentripplanner.updater.trip.siri.SiriEtBuilder;
29+
import uk.org.siri.siri21.OccupancyEnumeration;
2830
import uk.org.siri.siri21.VehicleModesEnumeration;
2931

3032
class ExtraJourneyTest implements RealtimeTestConstants {
@@ -70,7 +72,7 @@ void testAddJourneyWithExistingRoute() {
7072

7173
var result = siri.applyEstimatedTimetable(updates);
7274

73-
assertEquals(1, result.successful());
75+
assertSuccess(result);
7476
assertEquals(
7577
"ADDED | C [R] 0:02 0:02 | D 0:04 0:04",
7678
env.tripData(ADDED_TRIP_ID).showTimetable()
@@ -117,7 +119,7 @@ void testAddJourneyWithNewRoute() {
117119
int numRoutes = env.transitService().listRoutes().size();
118120
var result = siri.applyEstimatedTimetable(updates);
119121

120-
assertEquals(1, result.successful());
122+
assertSuccess(result);
121123
assertEquals(
122124
"ADDED | C [R] 0:02 0:02 | D 0:04 0:04",
123125
env.tripData(ADDED_TRIP_ID).showTimetable()
@@ -252,6 +254,122 @@ void testReplaceJourneyWithoutEstimatedVehicleJourneyCode() {
252254
assertFailure(UpdateError.UpdateErrorType.UNKNOWN, result);
253255
}
254256

257+
/**
258+
* This tests the logic for intermediate stops, since the first and last stop have custom logic.
259+
*/
260+
@Test
261+
void testAddJourneyWithThreeStops() {
262+
var env = ENV_BUILDER.addTrip(TRIP_1_INPUT).build();
263+
var siri = SiriTestHelper.of(env);
264+
265+
var updates = siri
266+
.etBuilder()
267+
.withEstimatedVehicleJourneyCode(ADDED_TRIP_ID)
268+
.withIsExtraJourney(true)
269+
.withOperatorRef(OPERATOR_ID)
270+
.withLineRef(ROUTE_ID)
271+
.withRecordedCalls(builder -> builder.call(STOP_A).departAimedActual("00:01", "00:02"))
272+
.withEstimatedCalls(builder ->
273+
builder
274+
.call(STOP_B)
275+
.arriveAimedExpected("00:03", "00:04")
276+
.departAimedExpected("00:05", "00:06")
277+
.call(STOP_C)
278+
.arriveAimedExpected("00:07", "00:08")
279+
)
280+
.buildEstimatedTimetableDeliveries();
281+
282+
assertSuccess(siri.applyEstimatedTimetable(updates));
283+
assertEquals(
284+
"ADDED | A [R] 0:02 0:02 | B 0:04 0:06 | C 0:08 0:08",
285+
env.tripData(ADDED_TRIP_ID).showTimetable()
286+
);
287+
assertEquals(
288+
"SCHEDULED | A 0:01 0:01 | B 0:03 0:05 | C 0:07 0:07",
289+
env.tripData(ADDED_TRIP_ID).showScheduledTimetable()
290+
);
291+
}
292+
293+
@Test
294+
void testAddJourneyWithOccupancy() {
295+
var env = ENV_BUILDER.addTrip(TRIP_1_INPUT).build();
296+
var siri = SiriTestHelper.of(env);
297+
298+
var updates = createValidAddedJourney(siri)
299+
.withOccupancy(OccupancyEnumeration.SEATS_AVAILABLE)
300+
.buildEstimatedTimetableDeliveries();
301+
302+
assertSuccess(siri.applyEstimatedTimetable(updates));
303+
304+
var tripTimes = env.tripData(ADDED_TRIP_ID).tripTimes();
305+
assertEquals(OccupancyStatus.MANY_SEATS_AVAILABLE, tripTimes.getOccupancyStatus(0));
306+
assertEquals(OccupancyStatus.MANY_SEATS_AVAILABLE, tripTimes.getOccupancyStatus(1));
307+
}
308+
309+
@Test
310+
void testAddJourneyWithPredictionInaccurate() {
311+
var env = ENV_BUILDER.addTrip(TRIP_1_INPUT).build();
312+
var siri = SiriTestHelper.of(env);
313+
314+
var updates = createValidAddedJourney(siri)
315+
.withPredictionInaccurate(true)
316+
.buildEstimatedTimetableDeliveries();
317+
318+
assertSuccess(siri.applyEstimatedTimetable(updates));
319+
assertEquals(
320+
"ADDED | C [R,PI] 0:02 0:02 | D [PI] 0:04 0:04",
321+
env.tripData(ADDED_TRIP_ID).showTimetable()
322+
);
323+
}
324+
325+
@Test
326+
void testAddJourneyWithDestinationName() {
327+
var env = ENV_BUILDER.addTrip(TRIP_1_INPUT).build();
328+
var siri = SiriTestHelper.of(env);
329+
330+
var updates = createValidAddedJourney(siri)
331+
.withDestinationName("Hogwarts")
332+
.buildEstimatedTimetableDeliveries();
333+
334+
assertSuccess(siri.applyEstimatedTimetable(updates));
335+
336+
var trip = env.tripData(ADDED_TRIP_ID).trip();
337+
assertEquals("Hogwarts", trip.getHeadsign().toString());
338+
}
339+
340+
@Test
341+
void testReplacingJourneyHasReplacementLink() {
342+
var tripInput = TripInput.of(TRIP_1_ID)
343+
.withRoute(ROUTE)
344+
.withWithTripOnServiceDate(TRIP_1_ID)
345+
.addStop(STOP_A, "0:00:10", "0:00:11")
346+
.addStop(STOP_B, "0:00:20", "0:00:21");
347+
348+
var env = ENV_BUILDER.addTrip(tripInput).build();
349+
var siri = SiriTestHelper.of(env);
350+
351+
var updates = siri
352+
.etBuilder()
353+
.withEstimatedVehicleJourneyCode(ADDED_TRIP_ID)
354+
.withIsExtraJourney(true)
355+
.withVehicleJourneyRef(TRIP_1_ID)
356+
.withOperatorRef(OPERATOR_ID)
357+
.withLineRef(ROUTE_ID)
358+
.withRecordedCalls(builder -> builder.call(STOP_A).departAimedActual("00:01", "00:02"))
359+
.withEstimatedCalls(builder -> builder.call(STOP_C).arriveAimedExpected("00:03", "00:04"))
360+
.buildEstimatedTimetableDeliveries();
361+
362+
assertSuccess(siri.applyEstimatedTimetable(updates));
363+
364+
var addedTripOnDate = env.transitService().getTripOnServiceDate(id(ADDED_TRIP_ID));
365+
assertNotNull(addedTripOnDate);
366+
assertThat(addedTripOnDate.getReplacementFor()).hasSize(1);
367+
assertEquals(
368+
TRIP_1_ID,
369+
addedTripOnDate.getReplacementFor().getFirst().getTrip().getId().getId()
370+
);
371+
}
372+
255373
/**
256374
* First add a trip via extra journey, then send a regular update referencing the added trip.
257375
* The added trip should be updated with the new times.

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/extrajourney/ExtraThenCanceledJourneyTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,37 @@ void extraThenCanceledJourney() {
6262
);
6363
}
6464

65+
/**
66+
* TODO RT_VP: This is a non-regression test that captures the existing behavior.
67+
* We should verify that this behavior is acceptable/correct.
68+
*/
69+
@Test
70+
void testAddJourneyWithAllStopsCancelledIsImplicitlyCancelled() {
71+
var env = envBuilder.addTrip(TRIP_1_INPUT).build();
72+
var siri = SiriTestHelper.of(env);
73+
74+
var updates = siri
75+
.etBuilder()
76+
.withEstimatedVehicleJourneyCode(ADDED_TRIP_ID)
77+
.withIsExtraJourney(true)
78+
.withOperatorRef("operatorId")
79+
.withLineRef("routeId")
80+
.withRecordedCalls(builder ->
81+
builder.call(stopA).departAimedActual("11:00", "11:00").withIsCancellation(true)
82+
)
83+
.withEstimatedCalls(builder ->
84+
builder.call(stopB).arriveAimedExpected("11:10", "11:10").withIsCancellation(true)
85+
)
86+
.buildEstimatedTimetableDeliveries();
87+
88+
assertSuccess(siri.applyEstimatedTimetable(updates));
89+
// Individual stop [C] flags remain even though the trip is implicitly cancelled
90+
assertEquals(
91+
"CANCELED | A [C,R] 11:00 11:00 | B [C] 11:10 11:10",
92+
env.tripData(ADDED_TRIP_ID).showTimetable()
93+
);
94+
}
95+
6596
private List<EstimatedTimetableDeliveryStructure> addedJourney(SiriTestHelper siri) {
6697
return siriEtBuilder(siri).withIsExtraJourney(true).buildEstimatedTimetableDeliveries();
6798
}

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/update/DestinationDisplayTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.opentripplanner.updater.trip.siri.moduletests.update;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.opentripplanner.updater.spi.UpdateResultAssertions.assertSuccess;
45

56
import org.junit.jupiter.api.Test;
67
import org.opentripplanner.transit.model._data.TransitTestEnvironment;
@@ -52,7 +53,7 @@ void testUpdateJourneyWithDestinationDisplay() {
5253

5354
var result = siri.applyEstimatedTimetable(update);
5455

55-
assertEquals(1, result.successful());
56+
assertSuccess(result);
5657

5758
var tt = env.tripData(TRIP_1_ID).tripTimes();
5859
assertEquals("Updated A", tt.getHeadsign(0).toString());

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/update/QuayChangeTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void testChangeQuay() {
4444

4545
var result = siri.applyEstimatedTimetable(updates);
4646

47-
assertEquals(1, result.successful());
47+
assertSuccess(result);
4848
assertEquals(
4949
"MODIFIED | A [R] 0:00:15 0:00:15 | C 0:00:33 0:00:33",
5050
env.tripData(TRIP_1_ID).showTimetable()

application/src/test/java/org/opentripplanner/updater/trip/siri/moduletests/update/UpdatedTimesTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void testUpdateJourneyWithDatedVehicleJourneyRef() {
4040
.withDatedVehicleJourneyRef(TRIP_1_ID)
4141
.buildEstimatedTimetableDeliveries();
4242
var result = siri.applyEstimatedTimetable(updates);
43-
assertEquals(1, result.successful());
43+
assertSuccess(result);
4444
assertTripUpdated(env);
4545
assertEquals(
4646
"UPDATED | A 0:00:15 0:00:15 | B 0:00:25 0:00:25",
@@ -62,7 +62,7 @@ void testUpdateJourneyWithFramedVehicleJourneyRef() {
6262
)
6363
.buildEstimatedTimetableDeliveries();
6464
var result = siri.applyEstimatedTimetable(updates);
65-
assertEquals(1, result.successful());
65+
assertSuccess(result);
6666
assertTripUpdated(env);
6767
}
6868

0 commit comments

Comments
 (0)