From c4bde467fc22f54e9f47a0716d69077649998e35 Mon Sep 17 00:00:00 2001 From: Sachin Goel Date: Mon, 23 Dec 2024 15:06:15 -0800 Subject: [PATCH] fix: sync `RailwayClass` enum with `RailAccessParser` Set These two data structures need to stay in sync so that the rail routing service operates as expected. The values in `RailwayClass` are used for styling the ways The values in `RailAccessParser` are used for routing over those ways. Summary of changes: - `NARROW_GAUGE` - removed - `MONORAIL` - added - `PROPOSED` - added --- .../geofabrik/railway_routing/ev/RailwayClass.java | 2 +- .../parsers/OSMRailwayClassParserTest.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/geofabrik/railway_routing/ev/RailwayClass.java b/src/main/java/de/geofabrik/railway_routing/ev/RailwayClass.java index be530b9..3741caf 100644 --- a/src/main/java/de/geofabrik/railway_routing/ev/RailwayClass.java +++ b/src/main/java/de/geofabrik/railway_routing/ev/RailwayClass.java @@ -7,7 +7,7 @@ * This enum defines the railway class of an edge. It maps the railway=* key of OSM to an enum. All edges that do not fit get OTHER as value. */ public enum RailwayClass { - OTHER, RAIL, SUBWAY, TRAM, NARROW_GAUGE, LIGHT_RAIL, FUNICULAR, CONSTRUCTION; + OTHER, RAIL, SUBWAY, TRAM, LIGHT_RAIL, FUNICULAR, CONSTRUCTION, MONORAIL, PROPOSED; public static final String KEY = "railway_class"; diff --git a/src/test/java/de/geofabrik/railway_routing/parsers/OSMRailwayClassParserTest.java b/src/test/java/de/geofabrik/railway_routing/parsers/OSMRailwayClassParserTest.java index 0cb9212..89dc3de 100644 --- a/src/test/java/de/geofabrik/railway_routing/parsers/OSMRailwayClassParserTest.java +++ b/src/test/java/de/geofabrik/railway_routing/parsers/OSMRailwayClassParserTest.java @@ -57,7 +57,7 @@ void railwayClass() { way = new ReaderWay(29L); way.setTag("railway", "narrow_gauge"); parser.handleWayTags(edgeId, edgeIntAccess, way, relFlags); - assertEquals(RailwayClass.NARROW_GAUGE, classEnc.getEnum(false, edgeId, edgeIntAccess)); + assertEquals(RailwayClass.OTHER, classEnc.getEnum(false, edgeId, edgeIntAccess)); edgeIntAccess = new ArrayEdgeIntAccess(1); way = new ReaderWay(29L); @@ -76,6 +76,18 @@ void railwayClass() { way.setTag("railway", "construction"); parser.handleWayTags(edgeId, edgeIntAccess, way, relFlags); assertEquals(RailwayClass.CONSTRUCTION, classEnc.getEnum(false, edgeId, edgeIntAccess)); + + edgeIntAccess = new ArrayEdgeIntAccess(1); + way = new ReaderWay(29L); + way.setTag("railway", "proposed"); + parser.handleWayTags(edgeId, edgeIntAccess, way, relFlags); + assertEquals(RailwayClass.PROPOSED, classEnc.getEnum(false, edgeId, edgeIntAccess)); + + edgeIntAccess = new ArrayEdgeIntAccess(1); + way = new ReaderWay(29L); + way.setTag("railway", "monorail"); + parser.handleWayTags(edgeId, edgeIntAccess, way, relFlags); + assertEquals(RailwayClass.MONORAIL, classEnc.getEnum(false, edgeId, edgeIntAccess)); } }