From 0d0fb891830b9531a46f5b93613e9f5b50609af1 Mon Sep 17 00:00:00 2001 From: Jingsi Lu Date: Wed, 9 Oct 2024 12:12:16 -0400 Subject: [PATCH 1/5] Changed Fares Transfers to Fare Transfers Changed Frequency-Based Service to Frequencies Changed logic of Pathway Signs to "One signposted_as value OR one reversed_signposted_as in pathways.txt" --- .../report/model/FeedMetadata.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java index 38f9d78f8b..313e06a8ea 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java @@ -58,10 +58,12 @@ public class FeedMetadata { private final List> FILE_BASED_FEATURES = List.of( new Pair<>(new FeatureMetadata("Pathway Connections", "Pathways"), GtfsPathway.FILENAME), + new Pair<>(new FeatureMetadata("Pathway Signs", "Pathways"), GtfsPathway.FILENAME), + new Pair<>(new FeatureMetadata("Pathway Details", "Pathways"), GtfsPathway.FILENAME), new Pair<>(new FeatureMetadata("Levels", "Pathways"), GtfsLevel.FILENAME), new Pair<>(new FeatureMetadata("Transfers", null), GtfsTransfer.FILENAME), new Pair<>(new FeatureMetadata("Shapes", null), GtfsShape.FILENAME), - new Pair<>(new FeatureMetadata("Frequency-Based Service", null), GtfsFrequency.FILENAME), + new Pair<>(new FeatureMetadata("Frequencies", null), GtfsFrequency.FILENAME), new Pair<>(new FeatureMetadata("Feed Information", null), GtfsFeedInfo.FILENAME), new Pair<>(new FeatureMetadata("Attributions", null), GtfsAttribution.FILENAME), new Pair<>(new FeatureMetadata("Translations", null), GtfsTranslation.FILENAME), @@ -69,8 +71,7 @@ public class FeedMetadata { new Pair<>(new FeatureMetadata("Fare Products", "Fares"), GtfsFareProduct.FILENAME), new Pair<>(new FeatureMetadata("Fare Media", "Fares"), GtfsFareMedia.FILENAME), new Pair<>(new FeatureMetadata("Zone-Based Fares", "Fares"), GtfsArea.FILENAME), - new Pair<>( - new FeatureMetadata("Fares Transfers", "Fares"), GtfsFareTransferRule.FILENAME), + new Pair<>(new FeatureMetadata("Fare Transfers", "Fares"), GtfsFareTransferRule.FILENAME), new Pair<>(new FeatureMetadata("Time-Based Fares", "Fares"), GtfsTimeframe.FILENAME), new Pair<>( new FeatureMetadata("Booking Rules", "Flexible Services"), GtfsBookingRules.FILENAME), @@ -181,8 +182,9 @@ private void loadSpecFeaturesBasedOnFieldPresence(GtfsFeedContainer feedContaine loadBikeAllowanceFeature(feedContainer); loadLocationTypesFeature(feedContainer); loadTraversalTimeFeature(feedContainer); - loadPathwayDirectionsFeature(feedContainer); - loadPathwayExtraFeature(feedContainer); + loadPathwaySignsFeature(feedContainer); + loadPathwayDetailsFeature(feedContainer); + loadPathwayConnectionsFeature(feedContainer); loadRouteBasedFaresFeature(feedContainer); loadContinuousStopsFeature(feedContainer); loadZoneBasedDemandResponsiveTransitFeature(feedContainer); @@ -285,18 +287,20 @@ private void loadRouteBasedFaresFeature(GtfsFeedContainer feedContainer) { || hasAtLeastOneRecordInFile(feedContainer, GtfsNetwork.FILENAME)); } - private void loadPathwayDirectionsFeature(GtfsFeedContainer feedContainer) { + private void loadPathwaySignsFeature(GtfsFeedContainer feedContainer) { specFeatures.put( new FeatureMetadata("Pathway Signs", "Pathways"), hasAtLeastOneRecordForFields( - feedContainer, - GtfsPathway.FILENAME, - List.of( - GtfsPathway::hasSignpostedAs, - (Function) GtfsPathway::hasReversedSignpostedAs))); + feedContainer, + GtfsPathway.FILENAME, + List.of((Function) GtfsPathway::hasSignpostedAs)) + || hasAtLeastOneRecordForFields( + feedContainer, + GtfsPathway.FILENAME, + List.of((Function) GtfsPathway::hasReversedSignpostedAs))); } - private void loadPathwayExtraFeature(GtfsFeedContainer feedContainer) { + private void loadPathwayDetailsFeature(GtfsFeedContainer feedContainer) { specFeatures.put( new FeatureMetadata("Pathway Details", "Pathways"), hasAtLeastOneRecordForFields( @@ -317,6 +321,14 @@ private void loadPathwayExtraFeature(GtfsFeedContainer feedContainer) { List.of((Function) GtfsPathway::hasStairCount))); } + + private void loadPathwayConnectionsFeature(GtfsFeedContainer feedContainer) { + specFeatures.put( + new FeatureMetadata("Pathway Connections", "Pathways"), + hasAtLeastOneRecordInFile(feedContainer, GtfsPathway.FILENAME)); + } + + private void loadTraversalTimeFeature(GtfsFeedContainer feedContainer) { specFeatures.put( new FeatureMetadata("In-station Traversal Time", "Pathways"), From 01486aac46e62f8002ff9e131e7d5cf2a9ab4fdc Mon Sep 17 00:00:00 2001 From: Jingsi Lu Date: Wed, 9 Oct 2024 14:05:33 -0400 Subject: [PATCH 2/5] formatted code --- .../gtfsvalidator/report/model/FeedMetadata.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java index 5b3efc7565..87218332f2 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadata.java @@ -325,14 +325,12 @@ private void loadPathwayDetailsFeature(GtfsFeedContainer feedContainer) { List.of((Function) GtfsPathway::hasStairCount))); } - private void loadPathwayConnectionsFeature(GtfsFeedContainer feedContainer) { specFeatures.put( - new FeatureMetadata("Pathway Connections", "Pathways"), - hasAtLeastOneRecordInFile(feedContainer, GtfsPathway.FILENAME)); + new FeatureMetadata("Pathway Connections", "Pathways"), + hasAtLeastOneRecordInFile(feedContainer, GtfsPathway.FILENAME)); } - private void loadTraversalTimeFeature(GtfsFeedContainer feedContainer) { specFeatures.put( new FeatureMetadata("In-station Traversal Time", "Pathways"), From e3810b2e4393331e54e2429d9b2bbded7ad231a4 Mon Sep 17 00:00:00 2001 From: Jingsi Lu Date: Wed, 9 Oct 2024 14:50:49 -0400 Subject: [PATCH 3/5] fixed broken tests --- .../gtfsvalidator/report/model/FeedMetadataTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java index 254b2bc3f5..d29c500a3c 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java @@ -331,7 +331,7 @@ public void containsFrequencyBasedTripFeatureTest() throws IOException, Interrup "trip_id, start_time, end_time, headway_secs\n" + "dummy1, 01:01:01, 01:01:02, 1\n"; createDataFile(GtfsFrequency.FILENAME, content); validateSpecFeature( - "Frequency-Based Service", + "Frequencies", true, ImmutableList.of(GtfsFrequencyTableDescriptor.class, GtfsAgencyTableDescriptor.class)); } @@ -341,7 +341,7 @@ public void omitsFrequencyBasedTripFeatureTest() throws IOException, Interrupted String content = "trip_id, start_time, end_time, headway_secs\n"; createDataFile(GtfsFrequency.FILENAME, content); validateSpecFeature( - "Frequency-Based Service", + "Frequencies", false, ImmutableList.of(GtfsFrequencyTableDescriptor.class, GtfsAgencyTableDescriptor.class)); } From daa8426e06a8fb2f11e2cc814af19f7c0e83cacd Mon Sep 17 00:00:00 2001 From: Jingsi Lu Date: Tue, 15 Oct 2024 14:02:41 -0400 Subject: [PATCH 4/5] added tests for Pathway Signs and Pathway Details --- .../report/model/FeedMetadataTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java index d29c500a3c..a476009345 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java @@ -250,6 +250,53 @@ public void omitsRouteColorsFeatureTest5() throws IOException, InterruptedExcept ImmutableList.of(GtfsRouteTableDescriptor.class, GtfsAgencyTableDescriptor.class)); } + @Test + public void containsPathwaySignsFeatureTest() throws IOException, InterruptedException { + String pathwayContent = + "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional,signposted_as,reversed_signposted_as\n" + + "pathway1,stop1,stop2,1,1,sign1,rsign1\n" + + "pathway2,stop2,stop3,2,0,sign2,rsign2\n"; + createDataFile("pathways.txt", pathwayContent); + validateSpecFeature( + "Pathway Signs", + true, + ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); + } + + @Test + public void omitsPathwaySignsFeatureTest() throws IOException, InterruptedException { + String pathwayContent = + "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"; + createDataFile("pathways.txt", pathwayContent); + validateSpecFeature( + "Pathway Signs", + false, + ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); + } + + @Test + public void containsPathwayDetailsFeatureTest() throws IOException, InterruptedException { + String pathwayContent = + "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional,traversal_time,max_slope\n" + + "pathway1,stop1,stop2,1,1,120,0\n" + + "pathway2,stop2,stop3,2,0,300,1.1\n"; + createDataFile("pathways.txt", pathwayContent); + validateSpecFeature( + "Pathway Details", + true, + ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); + } + + @Test + public void omitsPathwayDetailsFeatureTest() throws IOException, InterruptedException { + String pathwayContent = + "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"; + createDataFile("pathways.txt", pathwayContent); + validateSpecFeature( + "Pathway Details", + false, + ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); + } @Test public void containsPathwayConnectionFeatureTest() throws IOException, InterruptedException { String pathwayContent = From 55fe49b95f093f3a85a495b28bb5a9c844a3da9c Mon Sep 17 00:00:00 2001 From: Jingsi Lu Date: Tue, 15 Oct 2024 14:03:22 -0400 Subject: [PATCH 5/5] formatted code --- .../report/model/FeedMetadataTest.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java index a476009345..9f6698da68 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/report/model/FeedMetadataTest.java @@ -265,8 +265,7 @@ public void containsPathwaySignsFeatureTest() throws IOException, InterruptedExc @Test public void omitsPathwaySignsFeatureTest() throws IOException, InterruptedException { - String pathwayContent = - "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"; + String pathwayContent = "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"; createDataFile("pathways.txt", pathwayContent); validateSpecFeature( "Pathway Signs", @@ -277,26 +276,26 @@ public void omitsPathwaySignsFeatureTest() throws IOException, InterruptedExcept @Test public void containsPathwayDetailsFeatureTest() throws IOException, InterruptedException { String pathwayContent = - "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional,traversal_time,max_slope\n" - + "pathway1,stop1,stop2,1,1,120,0\n" - + "pathway2,stop2,stop3,2,0,300,1.1\n"; + "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional,traversal_time,max_slope\n" + + "pathway1,stop1,stop2,1,1,120,0\n" + + "pathway2,stop2,stop3,2,0,300,1.1\n"; createDataFile("pathways.txt", pathwayContent); validateSpecFeature( - "Pathway Details", - true, - ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); + "Pathway Details", + true, + ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); } @Test public void omitsPathwayDetailsFeatureTest() throws IOException, InterruptedException { - String pathwayContent = - "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"; + String pathwayContent = "pathway_id,from_stop_id,to_stop_id,pathway_mode,is_bidirectional\n"; createDataFile("pathways.txt", pathwayContent); validateSpecFeature( - "Pathway Details", - false, - ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); + "Pathway Details", + false, + ImmutableList.of(GtfsPathwayTableDescriptor.class, GtfsAgencyTableDescriptor.class)); } + @Test public void containsPathwayConnectionFeatureTest() throws IOException, InterruptedException { String pathwayContent =