diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 97f1ec35..1d7c2cf4 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -458,6 +458,7 @@ public final class BahnProvider implements NetworkProvider + "(?:, ([^<]*))?" // message + "(?:(?:, )?(?:heute )?(Gl\\. " + ParserUtils.P_PLATFORM + ")(?:\\s*)?)?" // position + "(?:,
]*>[^<]*)?" // (ersatzzug message) + + "(?:,
[^<]*]*>[^<]*)?" // (ersatzzug message) , Pattern.DOTALL); private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)"); diff --git a/test/de/schildbach/pte/BahnProviderTest.java b/test/de/schildbach/pte/BahnProviderTest.java index 1c935c94..786f9722 100644 --- a/test/de/schildbach/pte/BahnProviderTest.java +++ b/test/de/schildbach/pte/BahnProviderTest.java @@ -66,6 +66,7 @@ public class BahnProviderTest + "
\n" // + "21:58 pünktl., Gl. 13"); + assertNotNull(m.group(4)); // onTime assertNotNull(m.group(7)); // position } @@ -81,6 +82,7 @@ public class BahnProviderTest + "
\n" // + "07:02 ca. +5, Fährt heute nur bis Düsseldorf Hbf, Gl. 10"); + assertNotNull(m.group(5)); // delay assertNotNull(m.group(6)); // message assertNotNull(m.group(7)); // position } @@ -97,6 +99,7 @@ public class BahnProviderTest + "
\n" // + "17:10 pünktl.heute Gl. 7 "); + assertNotNull(m.group(4)); // onTime assertNotNull(m.group(7)); // position } @@ -112,6 +115,7 @@ public class BahnProviderTest + "
\n" // + "19:57 pünktl., Änderung im Zuglauf!heute Gl. 7 "); + assertNotNull(m.group(4)); // onTime assertNotNull(m.group(6)); // message assertNotNull(m.group(7)); // position } @@ -162,6 +166,22 @@ public class BahnProviderTest assertNotNull(m.group(7)); // position } + @Test + public void departureWithErsatzzugMessage() + { + final Matcher m = assertFineDepartures("" // + + "\n" // + + "RB 93328\n" // + + "\n" // + + ">>\n" // + + "München Hbf Gl.27-36\n" // + + "
\n" // + + "14:49 pünktl., Gl. 1,
Ersatzzug fürRB 5416"); + + assertNotNull(m.group(4)); // onTime + assertNotNull(m.group(7)); // position + } + private void assertFineConnectionDetails(String s) { Matcher m = BahnProvider.P_CONNECTION_DETAILS_FINE.matcher(s); @@ -175,7 +195,7 @@ public class BahnProviderTest Matcher m = BahnProvider.P_DEPARTURES_FINE.matcher(s); assertTrue(m.matches()); - ParserUtils.printGroups(m); + // ParserUtils.printGroups(m); assertNotNull(m.group(1)); // line assertNotNull(m.group(2)); // destination