diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java
index ddc5f59b..62809778 100644
--- a/src/de/schildbach/pte/BahnProvider.java
+++ b/src/de/schildbach/pte/BahnProvider.java
@@ -442,7 +442,7 @@ public final class BahnProvider implements NetworkProvider
return uri.toString();
}
- private static final Pattern P_DEPARTURES_COARSE = Pattern.compile("", Pattern.DOTALL);
+ private static final Pattern P_DEPARTURES_COARSE = Pattern.compile("", Pattern.DOTALL);
static final Pattern P_DEPARTURES_FINE = Pattern.compile("" //
+ "fpTime=\"(\\d{1,2}:\\d{2})\" fpDate=\"(\\d{2}\\.\\d{2}\\.\\d{2})\" \n" // time, date
+ "delay=\"(?:-|k\\.A\\.?|cancel|\\+?\\s*(\\d+))\" \n" // delay
@@ -497,7 +497,7 @@ public final class BahnProvider implements NetworkProvider
final String position = mDepFine.group(4) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(4)) : null;
- final String destination = ParserUtils.resolveEntities(mDepFine.group(6));
+ final String destination = ParserUtils.resolveEntities(mDepFine.group(6)).trim();
final String line = normalizeLine(ParserUtils.resolveEntities(mDepFine.group(7)));
diff --git a/test/de/schildbach/pte/BahnProviderTest.java b/test/de/schildbach/pte/BahnProviderTest.java
index 3678371a..82544ada 100644
--- a/test/de/schildbach/pte/BahnProviderTest.java
+++ b/test/de/schildbach/pte/BahnProviderTest.java
@@ -36,194 +36,22 @@ public class BahnProviderTest
+ "Berlin Hbf
\n" //
+ "Übergang\n" //
+ "
\n" //
- + "Berlin-Lichtenberg
");
+ + "Berlin-Lichtenberg
\n");
}
@Test
- public void departureWithPlatform()
+ public void newDepartureWithMessage()
{
final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "S 1\n" //
- + "\n" //
- + ">>\n" //
- + "Gänserndorf\n" //
- + "
\n" //
- + "10:42Gl. 1");
+ + "fpTime=\"21:10\" fpDate=\"01.10.10\" \n" //
+ + "delay=\"cancel\" \n" //
+ + "platform =\"1\" \n" //
+ + "targetLoc=\"Magdeburg Hbf\" \n" //
+ + "prod=\"RE 38090\" \n" //
+ + "delayReason=\" Notarzteinsatz am Gleis\"\n");
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureWithOnTime()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "RE 38148\n" //
- + "\n" //
- + ">>\n" //
- + "Rathenow\n" //
- + "
\n" //
- + "21:58 pünktl., Gl. 13");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(5)); // onTime
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureWithMessage()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "ICE 824\n" //
- + "\n" //
- + ">>\n" //
- + "Dortmund Hbf\n" //
- + "
\n" //
- + "07:02 ca. +5, Fährt heute nur bis Düsseldorf Hbf, Gl. 10");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(6)); // delay
- assertNotNull(m.group(7)); // message
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureUpdatedPosition()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "RB 30240\n" //
- + "\n" //
- + ">>\n" //
- + "Holzkirchen\n" //
- + "
\n" //
- + "17:10 pünktl., heute Gl. 7 ");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(5)); // onTime
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureMessageAndUpdatedPosition()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "CNL 450\n" //
- + "\n" //
- + ">>\n" //
- + "Paris Est\n" //
- + "
\n" //
- + "19:57 pünktl., Änderung im Zuglauf!, heute Gl. 7 ");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(5)); // onTime
- assertNotNull(m.group(7)); // message
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureWithWeirdMessage()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "ICE 609\n" //
- + "\n" //
- + ">>\n" //
- + "Basel SBB\n" //
- + "
\n" //
- + "04:52 k.A., Gl. 3");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(8)); // 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(1)); // lineLink
- assertNotNull(m.group(5)); // onTime
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureWithMessageAndErsatzzugMessage()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "S 1\n" //
- + "\n" //
- + ">>\n" //
- + "München Ost\n" //
- + "
\n" //
- + "10:27, Zug fällt aus,
Ersatzzug S ");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(7)); // message
- }
-
- @Test
- public void departureWithPositionAndMessages()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "RB 34075\n" //
- + "\n" //
- + ">>\n" //
- + "Nürnberg Hbf\n" //
- + "
\n" //
- + "00:18, Zug fällt aus, Gl. 4,
Ersatzzug RB 30535");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(7)); // message
- assertNotNull(m.group(8)); // position
- }
-
- @Test
- public void departureWithMultipleMessages()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "S 11\n" //
- + "\n" //
- + ">>\n" //
- + "Bergisch Gladbach\n" //
- + "
\n" //
- + "10:59 pünktl., Änderung im Zuglauf!, Fährt heute nur bis Köln-Dellbrück, Gl. 1");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(5)); // onTime
- assertNotNull(m.group(7)); // message
- assertNotNull(m.group(7)); // position
- }
-
- @Test
- public void departureSonderzug()
- {
- final Matcher m = assertFineDepartures("" //
- + "\n" //
- + "RE 30534\n" //
- + "\n" //
- + ">>\n" //
- + "Nürnberg Hbf\n" //
- + "
\n" //
- + "22:58 pünktl., Gl. 2,
Sonderzug");
-
- assertNotNull(m.group(1)); // lineLink
- assertNotNull(m.group(5)); // onTime
- assertNotNull(m.group(8)); // position
+ assertNotNull(m.group(4)); // position
+ assertNotNull(m.group(9)); // message
}
private void assertFineConnectionDetails(String s)
@@ -241,9 +69,10 @@ public class BahnProviderTest
// ParserUtils.printGroups(m);
- assertNotNull(m.group(2)); // line
- assertNotNull(m.group(3)); // destination
- assertNotNull(m.group(4)); // time
+ assertNotNull(m.group(1)); // time
+ assertNotNull(m.group(2)); // date
+ assertNotNull(m.group(6)); // destination
+ assertNotNull(m.group(7)); // line
return m;
}