From 3e92246ff852513584e3674286017d6a92b3f8b1 Mon Sep 17 00:00:00 2001 From: Antonio El Khoury Date: Sat, 21 Feb 2015 15:40:22 +0100 Subject: [PATCH] Navitia: Fix queryDepartures() for stop_area when equivs is set to true. --- .../pte/AbstractNavitiaProvider.java | 12 +++++++++-- .../pte/live/ParisProviderLiveTest.java | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java b/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java index c59c3b17..e391bd3d 100644 --- a/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java @@ -854,8 +854,16 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider queryUri.append(uri()); if (equivs) { - final String stopAreaId = getStopAreaId(stationId); - queryUri.append("stop_areas/" + stopAreaId + "/"); + final String header = stationId.substring(0, stationId.indexOf(":")); + if (header.equals("stop_point")) + { + final String stopAreaId = getStopAreaId(stationId); + queryUri.append("stop_areas/" + stopAreaId + "/"); + } + else if (header.equals("stop_area")) + { + queryUri.append("stop_areas/" + stationId + "/"); + } } else { diff --git a/enabler/test/de/schildbach/pte/live/ParisProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/ParisProviderLiveTest.java index 9c27f970..cd37afde 100644 --- a/enabler/test/de/schildbach/pte/live/ParisProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/ParisProviderLiveTest.java @@ -112,6 +112,27 @@ public class ParisProviderLiveTest extends AbstractProviderLiveTest print(result); } + @Test + public void queryDeparturesStopArea() throws Exception + { + final int maxDepartures = 5; + final QueryDeparturesResult result = queryDepartures("stop_area:RTP:SA:1958", maxDepartures, true); + assertEquals(QueryDeparturesResult.Status.OK, result.status); + assertTrue(result.stationDepartures.size() > 1); + int nbDepartures = 0; + int nbLines = 0; + for (final StationDepartures stationDepartures : result.stationDepartures) + { + nbDepartures += stationDepartures.departures.size(); + final List lines = stationDepartures.lines; + if (lines != null) + nbLines += lines.size(); + } + assertTrue(nbDepartures <= maxDepartures); + assertTrue(nbLines >= 2); + print(result); + } + @Test public void queryDeparturesEquivsTrue() throws Exception {