/* * Copyright 2010 the original author or authors. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package de.schildbach.pte; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; import java.util.regex.Matcher; import org.junit.Test; /** * @author Andreas Schildbach */ public class BahnProviderTest { @Test public void connectionUebergang() { assertFineConnectionDetails("" // + "Berlin Hbf
\n" // + "Übergang\n" // + "
\n" // + "Berlin-Lichtenberg
"); } @Test public void departureWithPlatform() { final Matcher m = assertFineDepartures("" // + "\n" // + "S 1\n" // + "\n" // + ">>\n" // + "Gänserndorf\n" // + "
\n" // + "10:42Gl. 1"); assertNotNull(m.group(7)); // 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(4)); // onTime assertNotNull(m.group(7)); // 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(5)); // delay assertNotNull(m.group(6)); // message assertNotNull(m.group(7)); // 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(4)); // onTime assertNotNull(m.group(7)); // 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(4)); // onTime assertNotNull(m.group(6)); // message assertNotNull(m.group(7)); // 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(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 } @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(6)); // 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(6)); // message assertNotNull(m.group(7)); // 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(4)); // onTime assertNotNull(m.group(6)); // message assertNotNull(m.group(7)); // position } private void assertFineConnectionDetails(String s) { Matcher m = BahnProvider.P_CONNECTION_DETAILS_FINE.matcher(s); assertTrue(m.matches()); // ParserUtils.printGroups(m); } private Matcher assertFineDepartures(String s) { Matcher m = BahnProvider.P_DEPARTURES_FINE.matcher(s); assertTrue(m.matches()); // ParserUtils.printGroups(m); assertNotNull(m.group(1)); // line assertNotNull(m.group(2)); // destination assertNotNull(m.group(3)); // time return m; } }