Search in sources :

Example 1 with TripDescriptorValidator

use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator in project gtfs-realtime-validator by CUTR-at-USF.

the class TripDescriptorValidatorTest method testE033.

/**
 * E033 - Alert informed_entity does not have any specifiers
 */
@Test
public void testE033() {
    TripDescriptorValidator tripDescriptorValidator = new TripDescriptorValidator();
    Map<ValidationRule, Integer> expected = new HashMap<>();
    GtfsRealtime.EntitySelector.Builder entitySelectorBuilder = GtfsRealtime.EntitySelector.newBuilder();
    // Add an informed_entity without any specifiers - 1 error
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.put(E033, 1);
    TestUtils.assertResults(expected, results);
    // Set stop_id as specifier - 0 errors
    entitySelectorBuilder.clear();
    entitySelectorBuilder.setStopId("1234");
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set informed_entity.route_id as specifier - 0 errors
    entitySelectorBuilder.clear();
    entitySelectorBuilder.setRouteId("A");
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set agency_id as specifier - 0 errors
    entitySelectorBuilder.clear();
    entitySelectorBuilder.setAgencyId("agency");
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set route_type as specifier - 0 errors
    entitySelectorBuilder.clear();
    entitySelectorBuilder.setRouteType(0);
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set trip_id as specifier - 0 errors
    entitySelectorBuilder.clear();
    entitySelectorBuilder.setTrip(GtfsRealtime.TripDescriptor.newBuilder().setTripId("1").setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED).build());
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set informed_entity.trip.route_id as specifier - 1 warning W006 for missing trip_id
    entitySelectorBuilder.clear();
    entitySelectorBuilder.setTrip(GtfsRealtime.TripDescriptor.newBuilder().setRouteId("A").setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED).build());
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.put(W006, 1);
    TestUtils.assertResults(expected, results);
    // Clear all entity selectors again and don't set any - 1 error
    entitySelectorBuilder.clear();
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    expected.put(E033, 1);
    TestUtils.assertResults(expected, results);
    clearAndInitRequiredFeedFields();
}
Also used : TripDescriptorValidator(edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator) HashMap(java.util.HashMap) ValidationRule(edu.usf.cutr.gtfsrtvalidator.lib.model.ValidationRule) Test(org.junit.Test) FeedMessageTest(edu.usf.cutr.gtfsrtvalidator.lib.test.FeedMessageTest)

Example 2 with TripDescriptorValidator

use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator in project gtfs-realtime-validator by CUTR-at-USF.

the class TripDescriptorValidatorTest method testE020.

/**
 * E020 - Invalid start_time format
 */
@Test
public void testE020() {
    TripDescriptorValidator tripIdValidator = new TripDescriptorValidator();
    Map<ValidationRule, Integer> expected = new HashMap<>();
    GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
    tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
    // Set valid trip_id = 1.1 that's in the Bull Runner GTFS data
    tripDescriptorBuilder.setTripId("1");
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    // No start_time - no errors
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set valid start_time - no errors
    tripDescriptorBuilder.setStartTime("00:20:00");
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set invalid start_time - 2 errors
    tripDescriptorBuilder.setStartTime("5:15:35");
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.put(E020, 2);
    TestUtils.assertResults(expected, results);
    clearAndInitRequiredFeedFields();
}
Also used : TripDescriptorValidator(edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator) HashMap(java.util.HashMap) ValidationRule(edu.usf.cutr.gtfsrtvalidator.lib.model.ValidationRule) Test(org.junit.Test) FeedMessageTest(edu.usf.cutr.gtfsrtvalidator.lib.test.FeedMessageTest)

Example 3 with TripDescriptorValidator

use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator in project gtfs-realtime-validator by CUTR-at-USF.

the class TripDescriptorValidatorTest method testE030.

/**
 * E030 - GTFS-rt alert trip_id does not belong to GTFS-rt alert route_id in GTFS trips.txt
 */
@Test
public void testE030() {
    TripDescriptorValidator tripDescriptorValidator = new TripDescriptorValidator();
    Map<ValidationRule, Integer> expected = new HashMap<>();
    // In bullrunner-gtfs.zip trips.txt, trip_id=1 belongs to route_id=A
    GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
    tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
    GtfsRealtime.EntitySelector.Builder entitySelectorBuilder = GtfsRealtime.EntitySelector.newBuilder();
    // Don't set route_id or trip_id (but set stop_id - we need at least one specifier) - 1 warning for missing trip_id
    entitySelectorBuilder.setStopId("1234");
    entitySelectorBuilder.setTrip(tripDescriptorBuilder.build());
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    // Missing trip_id
    expected.put(W006, 1);
    TestUtils.assertResults(expected, results);
    // Set trip_id but not route_id - no errors
    tripDescriptorBuilder.setTripId("1");
    entitySelectorBuilder.setTrip(tripDescriptorBuilder.build());
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set route_id but not trip_id - 1 warning for missing trip_id
    tripDescriptorBuilder.clear();
    entitySelectorBuilder.setRouteId("A");
    tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
    entitySelectorBuilder.setTrip(tripDescriptorBuilder.build());
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    // Missing trip_id
    expected.put(W006, 1);
    TestUtils.assertResults(expected, results);
    // Set route_id and trip_id to correct values according to GTFS trips.txt - no errors
    tripDescriptorBuilder.setTripId("1");
    entitySelectorBuilder.setRouteId("A");
    entitySelectorBuilder.setTrip(tripDescriptorBuilder.build());
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set route_id to something other than the correct value ("A") - 1 error
    tripDescriptorBuilder.setTripId("1");
    entitySelectorBuilder.setRouteId("B");
    entitySelectorBuilder.setTrip(tripDescriptorBuilder.build());
    alertBuilder.clearInformedEntity();
    alertBuilder.addInformedEntity(entitySelectorBuilder.build());
    feedEntityBuilder.setAlert(alertBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, bullRunnerGtfs, bullRunnerGtfsMetadata, feedMessageBuilder.build(), null, null);
    expected.put(E030, 1);
    TestUtils.assertResults(expected, results);
    clearAndInitRequiredFeedFields();
}
Also used : TripDescriptorValidator(edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator) HashMap(java.util.HashMap) ValidationRule(edu.usf.cutr.gtfsrtvalidator.lib.model.ValidationRule) Test(org.junit.Test) FeedMessageTest(edu.usf.cutr.gtfsrtvalidator.lib.test.FeedMessageTest)

Example 4 with TripDescriptorValidator

use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator in project gtfs-realtime-validator by CUTR-at-USF.

the class TripDescriptorValidatorTest method testW009StopTimeUpdate.

/**
 * W009 - schedule_relationship not populated (for StopTimeUpdate)
 */
@Test
public void testW009StopTimeUpdate() {
    TripDescriptorValidator tripDescriptorValidator = new TripDescriptorValidator();
    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.1");
    tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
    // tripDescriptor is a required field in tripUpdate
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    // Missing schedule_relationship for StopTimeUpdate - 1 warning
    stopTimeUpdateBuilder.setStopId("1000");
    tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    assertEquals(1, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.put(W009, 1);
    TestUtils.assertResults(expected, results);
    // Missing another schedule_relationship for StopTimeUpdate - however, we only flag one occurrence warning per trip, so still 1 warning
    stopTimeUpdateBuilder.setStopId("2000");
    tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    assertEquals(2, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.put(W009, 1);
    TestUtils.assertResults(expected, results);
    // Add schedule_relationship of SCHEDULED for StopTimeUpdates - no warnings
    tripUpdateBuilder.clearStopTimeUpdate();
    stopTimeUpdateBuilder.clear();
    stopTimeUpdateBuilder.setStopSequence(4);
    stopTimeUpdateBuilder.setStopId("1000");
    stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
    tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
    stopTimeUpdateBuilder.setStopSequence(5);
    stopTimeUpdateBuilder.setStopId("2000");
    stopTimeUpdateBuilder.setScheduleRelationship(GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED);
    tripUpdateBuilder.addStopTimeUpdate(stopTimeUpdateBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    assertEquals(2, feedMessageBuilder.getEntity(0).getTripUpdate().getStopTimeUpdateCount());
    results = tripDescriptorValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    clearAndInitRequiredFeedFields();
}
Also used : TripDescriptorValidator(edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator) HashMap(java.util.HashMap) ValidationRule(edu.usf.cutr.gtfsrtvalidator.lib.model.ValidationRule) GtfsRealtime(com.google.transit.realtime.GtfsRealtime) Test(org.junit.Test) FeedMessageTest(edu.usf.cutr.gtfsrtvalidator.lib.test.FeedMessageTest)

Example 5 with TripDescriptorValidator

use of edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator in project gtfs-realtime-validator by CUTR-at-USF.

the class TripDescriptorValidatorTest method testE023.

/**
 * E023 - start_time does not match GTFS initial arrival_time
 */
@Test
public void testE023() {
    /**
     * In testagency.txt, trip 1.2 has the following:
     *
     * trip_id,arrival_time,departure_time,stop_id,stop_sequence,shape_dist_traveled,pickup_type,drop_off_type
     * 1.2,00:20:00,00:20:00,A,1,,0,0
     * 1.2,00:30:00,00:30:00,B,2,,0,0
     *
     * So, initial arrival_time is 00:20:00.
     */
    TripDescriptorValidator tripIdValidator = new TripDescriptorValidator();
    Map<ValidationRule, Integer> expected = new HashMap<>();
    GtfsRealtime.TripDescriptor.Builder tripDescriptorBuilder = GtfsRealtime.TripDescriptor.newBuilder();
    tripDescriptorBuilder.setTripId("1.2");
    tripDescriptorBuilder.setScheduleRelationship(GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED);
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    // No start_time - no errors
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set valid start_time - no errors
    tripDescriptorBuilder.setStartTime("00:20:00");
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    TestUtils.assertResults(expected, results);
    // Set invalid start_time - 2 errors
    tripDescriptorBuilder.setStartTime("00:30:00");
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.put(E023, 2);
    TestUtils.assertResults(expected, results);
    // Set valid start_time, but with a trip_id that doesn't exist in GTFS data (to make sure no NPE - see #217) - no errors for E023, but 2 errors for E003 missing trip_id in GTFS)
    tripDescriptorBuilder.setStartTime("00:20:00");
    tripDescriptorBuilder.setTripId("100000000");
    tripUpdateBuilder.setTrip(tripDescriptorBuilder.build());
    vehiclePositionBuilder.setTrip(tripDescriptorBuilder.build());
    feedEntityBuilder.setTripUpdate(tripUpdateBuilder.build());
    feedEntityBuilder.setVehicle(vehiclePositionBuilder.build());
    feedMessageBuilder.setEntity(0, feedEntityBuilder.build());
    results = tripIdValidator.validate(MIN_POSIX_TIME, gtfsData, gtfsDataMetadata, feedMessageBuilder.build(), null, null);
    expected.clear();
    expected.put(E003, 2);
    TestUtils.assertResults(expected, results);
    clearAndInitRequiredFeedFields();
}
Also used : TripDescriptorValidator(edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator) HashMap(java.util.HashMap) ValidationRule(edu.usf.cutr.gtfsrtvalidator.lib.model.ValidationRule) Test(org.junit.Test) FeedMessageTest(edu.usf.cutr.gtfsrtvalidator.lib.test.FeedMessageTest)

Aggregations

ValidationRule (edu.usf.cutr.gtfsrtvalidator.lib.model.ValidationRule)14 FeedMessageTest (edu.usf.cutr.gtfsrtvalidator.lib.test.FeedMessageTest)14 TripDescriptorValidator (edu.usf.cutr.gtfsrtvalidator.lib.validation.rules.TripDescriptorValidator)14 HashMap (java.util.HashMap)14 Test (org.junit.Test)14 GtfsRealtime (com.google.transit.realtime.GtfsRealtime)1