use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.StopTimeUpdateValidator in project gtfs-realtime-validator by CUTR-at-USF.
the class StopTimeUpdateValidatorTest method testE42.
/**
* E042 - arrival or departure provided for NO_DATA stop_time_update
*/
@Test
public void testE42() {
StopTimeUpdateValidator stopSequenceValidator = new StopTimeUpdateValidator();
Map<ValidationRule, Integer> expected = new HashMap<>();
GtfsRealtime.TripUpdate.StopTimeUpdate.Builder stopTimeUpdateBuilder = GtfsRealtime.TripUpdate.StopTimeUpdate.newBuilder();
GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1");
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
// tripDescriptor is a required field in tripUpdate
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
// One stop_time_update with schedule_relationship SCHEDULED and a departure - 0 errors
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setStopId("1.1");
stopTimeUpdateBuilder.setDeparture(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// One stop_time_update with schedule_relationship SCHEDULED and an arrival - 0 errors
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setStopId("1.1");
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// One stop_time_update with schedule_relationship NO_DATA and a departure - 1 error
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA);
stopTimeUpdateBuilder.setStopId("1.1");
stopTimeUpdateBuilder.setDeparture(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.put(E042, 1);
TestUtils.assertResults(expected, results);
// One stop_time_update with schedule_relationship NO_DATA and an arrival - 1 error
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA);
stopTimeUpdateBuilder.setStopId("1.1");
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.put(E042, 1);
TestUtils.assertResults(expected, results);
clearAndInitRequiredFeedFields();
}
use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.StopTimeUpdateValidator in project gtfs-realtime-validator by CUTR-at-USF.
the class StopTimeUpdateValidatorTest method testE051.
/**
* E051 - GTFS-rt stop_sequence not found in GTFS data
*/
@Test
public void testE051() {
/**
* bullrunner-gtfs.zip (bullRunnerGtfs) has the following in stop_times.txt:
*
* trip_id,arrival_time,departure_time,stop_id,stop_sequence
* 1,07:00:00,07:00:00,222,1
* 1,07:01:04,07:01:04,230,2
* 1,07:01:38,07:01:38,214,3
* 1,07:02:15,07:02:15,204,4
* 1,07:02:56,07:02:56,102,5
* 1,07:03:38,07:03:38,101,6
* 1,07:04:04,07:04:04,108,7
* 1,07:04:32,07:04:32,110,8
* 1,07:05:38,07:05:38,166,9
* 1,07:06:44,07:06:44,162,10
* 1,07:07:48,07:07:48,158,11
* 1,07:08:30,07:08:30,154,12
* 1,07:09:20,07:09:20,150,13
* 1,07:09:52,07:09:52,446,14
* 1,07:11:01,07:11:01,432,15
* 1,07:11:49,07:11:49,430,16
* 1,07:12:34,07:12:34,426,17
* 1,07:13:41,07:13:41,418,18
* 1,07:14:34,07:14:34,401,19
* 1,07:16:07,07:16:07,414,20
* 1,07:16:53,07:16:53,330,21
* 1,07:17:21,07:17:21,328,22
* 1,07:17:59,07:17:59,326,23
* 1,07:18:43,07:18:43,226,24
* 1,07:19:43,07:19:43,222,25
*/
StopTimeUpdateValidator stopSequenceValidator = new StopTimeUpdateValidator();
Map<ValidationRule, Integer> expected = new HashMap<>();
GtfsRealtime.TripUpdate.StopTimeUpdate.Builder stopTimeUpdateBuilder = GtfsRealtime.TripUpdate.StopTimeUpdate.newBuilder();
GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1");
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
// tripDescriptor is a required field in tripUpdate
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
// stop_sequence all correctly match GTFS - no errors
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(2);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(3);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(4);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(6);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(12);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(25);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// Last stop_sequence is wrong - 1 occurrence of E051
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(2);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(3);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(4);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(6);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(12);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
// Wrong stop_sequence (should be 25)
stopTimeUpdateBuilder.setStopSequence(26);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
expected.put(E051, 1);
TestUtils.assertResults(expected, results);
// Both stop_sequence and stop_id are included, with the last stop_sequence being wrong - 1 occurrence of E051
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(2);
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(3);
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(4);
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(6);
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(12);
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
// Wrong stop_sequence (should be 25)
stopTimeUpdateBuilder.setStopSequence(26);
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
expected.put(E051, 1);
TestUtils.assertResults(expected, results);
// Both stop_sequence and stop_id are included, with the wrong stop_sequence 0 at beginning of trip - 1 occurrence of E051
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
// Wrong stop_sequence (should be 1)
stopTimeUpdateBuilder.setStopSequence(0);
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(2);
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(3);
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(4);
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(6);
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(12);
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(25);
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
expected.put(E051, 1);
TestUtils.assertResults(expected, results);
// Both stop_sequence and stop_id are included, with the wrong stop_sequence 250 being added in the middle of trip - 1 occurrence of E051
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(2);
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(3);
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(4);
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
// Wrong stop_sequence (should be 6)
stopTimeUpdateBuilder.setStopSequence(250);
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(12);
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(25);
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
expected.put(E051, 1);
TestUtils.assertResults(expected, results);
// Only stop_sequence is included, with the wrong stop_sequence 250 being added in the middle of trip - 1 occurrence of E051
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(2);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(3);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(4);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
// Wrong stop_sequence (should be 6)
stopTimeUpdateBuilder.setStopSequence(250);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(12);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(25);
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
expected.put(E051, 1);
TestUtils.assertResults(expected, results);
clearAndInitRequiredFeedFields();
}
use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.StopTimeUpdateValidator in project gtfs-realtime-validator by CUTR-at-USF.
the class StopTimeUpdateValidatorTest method testE037.
/**
* E037 - Sequential stop_time_updates have the same stop_id
*/
@Test
public void testE037() {
StopTimeUpdateValidator stopSequenceValidator = new StopTimeUpdateValidator();
Map<ValidationRule, Integer> expected = new HashMap<>();
GtfsRealtime.TripUpdate.StopTimeUpdate.Builder stopTimeUpdateBuilder = GtfsRealtime.TripUpdate.StopTimeUpdate.newBuilder();
GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1234");
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
// tripDescriptor is a required field in tripUpdate
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
// stop_ids 1000, 2000 - no errors
stopTimeUpdateBuilder.setStopId("1000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("2000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 2
assertEquals(2, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// Add stop_sequence - no errors
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setStopId("1000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setStopId("2000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 2
assertEquals(2, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// Add stop_id 2000 twice (and to make sure we support it, no stop_sequence). So, repeating stop_ids 3000 - one error
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setStopId("1000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setStopId("2000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopId("2000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 3
assertEquals(3, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.put(E037, 1);
TestUtils.assertResults(expected, results);
// stop_id 2000 twice again, but include stop_sequence for last stop_time_update - one error
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopSequence(1);
stopTimeUpdateBuilder.setStopId("1000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(5);
stopTimeUpdateBuilder.setStopId("2000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopSequence(10);
stopTimeUpdateBuilder.setStopId("2000");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 3
assertEquals(3, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.put(E037, 1);
TestUtils.assertResults(expected, results);
clearAndInitRequiredFeedFields();
}
use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.StopTimeUpdateValidator in project gtfs-realtime-validator by CUTR-at-USF.
the class StopTimeUpdateValidatorTest method testE002noStopSequenceGtfsRt.
/**
* E002 - stop_time_updates for a given trip_id must be sorted by increasing stop_sequence
* <p>
* Tests the case when the GTFS-rt feed is missing the stop_sequence field
*/
@Test
public void testE002noStopSequenceGtfsRt() {
/**
* bullrunner-gtfs.zip (bullRunnerGtfs) has the following in stop_times.txt:
*
* trip_id,arrival_time,departure_time,stop_id,stop_sequence
* 1,07:00:00,07:00:00,222,1
* 1,07:01:04,07:01:04,230,2
* 1,07:01:38,07:01:38,214,3
* 1,07:02:15,07:02:15,204,4
* 1,07:02:56,07:02:56,102,5
* 1,07:03:38,07:03:38,101,6
* 1,07:04:04,07:04:04,108,7
* 1,07:04:32,07:04:32,110,8
* 1,07:05:38,07:05:38,166,9
* 1,07:06:44,07:06:44,162,10
* 1,07:07:48,07:07:48,158,11
* 1,07:08:30,07:08:30,154,12
* 1,07:09:20,07:09:20,150,13
* 1,07:09:52,07:09:52,446,14
* 1,07:11:01,07:11:01,432,15
* 1,07:11:49,07:11:49,430,16
* 1,07:12:34,07:12:34,426,17
* 1,07:13:41,07:13:41,418,18
* 1,07:14:34,07:14:34,401,19
* 1,07:16:07,07:16:07,414,20
* 1,07:16:53,07:16:53,330,21
* 1,07:17:21,07:17:21,328,22
* 1,07:17:59,07:17:59,326,23
* 1,07:18:43,07:18:43,226,24
* 1,07:19:43,07:19:43,222,25
*/
StopTimeUpdateValidator stopSequenceValidator = new StopTimeUpdateValidator();
Map<ValidationRule, Integer> expected = new HashMap<>();
GtfsRealtime.TripUpdate.StopTimeUpdate.Builder stopTimeUpdateBuilder = GtfsRealtime.TripUpdate.StopTimeUpdate.newBuilder();
GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1");
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
// stop_sequence and stop_id pairings all correctly match GTFS - no errors
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
// This trip visits a stop more than once, and we're not providing stop_sequence, so we'll get 1 E009 error
expected.put(E009, 1);
TestUtils.assertResults(expected, results);
// Swap the first and second update - 1 E002 error
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
// This trip visits a stop more than once, and we're not providing stop_sequence, so we'll get 1 E009 error
expected.put(E009, 1);
expected.put(E002, 1);
TestUtils.assertResults(expected, results);
// Repeat the prediction for stop_id 230 - 1 E002 error
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
// This trip visits a stop more than once, and we're not providing stop_sequence, so we'll get 1 E009 error
expected.put(E009, 1);
// We're repeating a stop_id back-to-back, so we'll get 1 E037 error
expected.put(E037, 1);
expected.put(E002, 1);
TestUtils.assertResults(expected, results);
// Put stop_id 154 out of order - 1 E002 error
tripUpdateBuilder.clearStopTimeUpdate();
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("230");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("214");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("204");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("102");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("101");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("162");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("222");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
stopTimeUpdateBuilder.setStopId("154");
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
// This trip visits a stop more than once, and we're not providing stop_sequence, so we'll get 1 E009 error
expected.put(E009, 1);
expected.put(E002, 1);
TestUtils.assertResults(expected, results);
clearAndInitRequiredFeedFields();
}
use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.StopTimeUpdateValidator in project gtfs-realtime-validator by CUTR-at-USF.
the class StopTimeUpdateValidatorTest method testE43.
/**
* E043 - stop_time_update doesn't have arrival or departure
*/
@Test
public void testE43() {
StopTimeUpdateValidator stopSequenceValidator = new StopTimeUpdateValidator();
Map<ValidationRule, Integer> expected = new HashMap<>();
GtfsRealtime.TripUpdate.StopTimeUpdate.Builder stopTimeUpdateBuilder = GtfsRealtime.TripUpdate.StopTimeUpdate.newBuilder();
GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1");
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
// tripDescriptor is a required field in tripUpdate
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
// One stop_time_update without arrival or departure - 1 error
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setStopId("1.1");
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.put(E043, 1);
TestUtils.assertResults(expected, results);
// One stop_time_update without arrival or departure, but schedule_relationship SKIPPED - 0 errors
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SKIPPED);
stopTimeUpdateBuilder.setStopId("1.1");
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// One stop_time_update without arrival or departure, but schedule_relationship NO_DATA - 0 errors
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA);
stopTimeUpdateBuilder.setStopId("1.1");
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// One stop_time_update with arrival - 0 errors
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setStopId("1.1");
stopTimeUpdateBuilder.setArrival(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
// One stop_time_update with departure - 0 errors
stopTimeUpdateBuilder.clear();
stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
stopTimeUpdateBuilder.setStopId("1.1");
stopTimeUpdateBuilder.setDeparture(GtfsRealtime.TripUpdate.StopTimeEvent.newBuilder().setDelay(60).build());
tripUpdateBuilder.clearStopTimeUpdate();
tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.CANCELED);
tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
// StopTimeUpdate count should be 1
assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
results = stopSequenceValidator.validate(TimestampUtils.MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
expected.clear();
TestUtils.assertResults(expected, results);
clearAndInitRequiredFeedFields();
}
Aggregations