diff --git a/src/de/schildbach/pte/SbbProvider.java b/src/de/schildbach/pte/SbbProvider.java index d76c44cc..09833dbd 100644 --- a/src/de/schildbach/pte/SbbProvider.java +++ b/src/de/schildbach/pte/SbbProvider.java @@ -223,7 +223,7 @@ public class SbbProvider implements NetworkProvider + "([^\n<]*?)<.*?" // departure + "]*>\n(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n)?.*?" // departureDate + "]*>(?:(\\d{2}:\\d{2})| ).*?" // departureTime - + "]*>\\s*(.+?)?\\s*.*?" // departurePosition + + "]*>\n(?:]*>\n)?(.+?)?\\s*(?:]*>\n\n)?.*?" // departurePosition + "\\s*(.*?)\\s*|" // line + "\n(\\d+) Min\\.).*?" // min @@ -232,7 +232,7 @@ public class SbbProvider implements NetworkProvider + "([^\n<]*?)<.*?" // arrival + "]*>\n(?:.., (\\d{2}\\.\\d{2}\\.\\d{2})\n)?.*?" // arrivalDate + "]*>(?:(\\d{2}:\\d{2})| ).*?" // arrivalTime - + "]*>\\s*(.+?)?\\s*.*?" // arrivalPosition + + "]*>\n(?:]*>\n)?(.+?)?\\s*(?:]*>\n\n)?.*?" // arrivalPosition , Pattern.DOTALL); private QueryConnectionsResult queryConnections(final String uri, final CharSequence page) throws IOException diff --git a/test/de/schildbach/pte/SbbProviderTest.java b/test/de/schildbach/pte/SbbProviderTest.java index 31f6dff8..f80e09a1 100644 --- a/test/de/schildbach/pte/SbbProviderTest.java +++ b/test/de/schildbach/pte/SbbProviderTest.java @@ -17,8 +17,8 @@ package de.schildbach.pte; -import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; import java.util.regex.Matcher; @@ -113,6 +113,51 @@ public class SbbProviderTest + ""); } + @Test + public void tripWithPrognosisInPosition() + { + assertFineConnectionDetails("\n" // + + "\n" // + + "\"Umgebungskarte:\n" // + + "\n" // + + "\n" // + + "Spiez\n" // + + "\n" // + + "\n" // + + "ab15:54\n" // + + "4 \n" // + + "\n" // + + "\n" // + + "\"IC
\n" // + + "\n" // + + "IC 1080\n" // + + "\n" // + + "\n" // + + "\n" // + + "
\n" // + + "
\n" // + + "1. \"Hohe\n" // + + "
\n" // + + "
\n" // + + "2. \"Hohe\n" // + + "
\n" // + + "
\n" // + + "\n" // + + "\n" // + + "InterCity, \"Restaurant\" \"Minibar\" \"Reservierung FZ BZ RZ \n" // + + "\n" // + + "\"Umgebungskarte:\n" // + + "\n" // + + "Basel SBB\n" // + + "\n" // + + "\n" // + + "an17:32\n" // + + "\n" // + + "12 \"Gleiswechsel!\"\n" // + + "\n" // + + ""); + } + @Test public void footwayFromStationToStation() { @@ -197,6 +242,8 @@ public class SbbProviderTest // ParserUtils.printGroups(m); assertNotNull(m.group(2)); // departure + assertTrue(m.group(5) == null || m.group(5).length() < 10); // departurePosition assertNotNull(m.group(10)); // arrival + assertTrue(m.group(13) == null || m.group(13).length() < 10); // arrivalPosition } }