diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidator.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidator.java index 69950e37bf..92728f9f76 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidator.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidator.java @@ -84,6 +84,11 @@ public void validate(NoticeContainer noticeContainer) { } double maxShapeDist = maxShape.shapeDistTraveled(); + + if (maxShapeDist == 0) { + return; + } + double distanceInMeters = getDistanceMeters(maxShape.shapePtLatLon(), stop.stopLatLon()); if (maxStopTimeDist > maxShapeDist) { diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidatorTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidatorTest.java index 7b8efc84f5..13058850bc 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidatorTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TripAndShapeDistanceValidatorTest.java @@ -108,6 +108,24 @@ public void testTripDistanceExceedsShapeDistance() { assertThat(found).isTrue(); } + @Test + public void testTripDistanceExceedsShapeDistanceNoShapeDistance() { + List notices = + generateNotices( + createTripTable(2), + createStopTimesTable(1, 10.0), + createShapeTable(1, 0.0, 10.0), + createStopTable(1)); + boolean found = + notices.stream() + .anyMatch( + notice -> + notice + instanceof + TripAndShapeDistanceValidator.TripDistanceExceedsShapeDistanceNotice); + assertThat(found).isFalse(); + } + @Test public void testTripDistanceExceedsShapeDistanceWarning() { List notices =