/* * 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 SbbProviderTest { @Test public void tripThatTriggeredLongRunningMatch() { assertFineConnectionDetails("\n" // + "\"Umgebungskarte:\n" // + "\n" // + "\n" // + "Budapest-Keleti pu.\n" // + "\n" // + "Di, 10.08.10\n" // + "\n" // + "ab21:05\n" // + "\n" // + "\n" // + "\"EN
\n" // + "\n" // + "EN 462\n" // + "\n" // + "\n" // + "\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "\n" // + "\n" // + "EuroNight, \"Nur \"Reservierung \"Schlafwagen\" \"Liegewagen\" \"Minibar\" GP \n" // + "\n" // + "\"Umgebungskarte:\n" // + "\n" // + "München Hbf\n" // + "\n" // + "Mi, 11.08.10\n" // + "\n" // + "an06:15\n" // + "12 \n" // + "\n"); } @Test public void tripWithoutDate() { assertFineConnectionDetails("\n" // + "\"Umgebungskarte:\n" // + "\n" // + "\n" // + "Aarau\n" // + "\n" // + "\n" // + "ab15:47\n" // + "5 \n" // + "\n" // + "\n" // + "\"IR
\n" // + "\n" // + "IR 1928\n" // + "\n" // + "\n" // + "\n" // + "
\n" // + "
\n" // + "1. \"Tiefe\n" // + "
\n" // + "
\n" // + "2. \"Tiefe\n" // + "
\n" // + "
\n" // + "\n" // + "\n" // + "InterRegio \n" // + "\n" // + "\n" // + "\"Umgebungskarte:\n" // + "\n" // + "Bern\n" // + "\n" // + "\n" // + "an16:25\n" // + "10 \n" // + ""); } @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() { assertFineConnectionDetails("\n" // + "\n" // + "\"Umgebungskarte:\n" // + "\n" // + "\n" // + "Amriswil, Bahnhof\n" // + "\n" // + "\n" // + "  \n" // + "\n" // + "\n" // + "\"Fussweg\"
\n" // + "Fussweg\n" // + "\n" // + "\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "\n" // + "\n" // + "1 Min., Y \n" // + "\n" // + "\n" // + "\"Umgebungskarte:\n" // + "\n" // + "Amriswil\n" // + "\n" // + "\n" // + "  \n" // + "\n"); } @Test public void footwayFromStationToAddress() { assertFineConnectionDetails("\n" // + "\n" // + "\"Umgebungskarte:\n" // + "\n" // + "\n" // + "Einsiedeln, Birchli/Garage\n" // + "\n" // + "\n" // + "  \n" // + "\n" // + "\n" // + "\"Fussweg\"
\n" // + "Fussweg\n" // + "\n" // + "\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "
\n" // + "\n" // + "\n" // + "9 Min. \n" // + "\n" // + "\n" // + "\"Umgebungskarte:\n" // + "\n" // + "8840 Einsiedeln, Erlenmoosweg 24\n" // + "\n" // + "\n" // + "  \n" // + "\n"); } private void assertFineConnectionDetails(String s) { Matcher m = SbbProvider.P_CONNECTION_DETAILS_FINE.matcher(s); assertTrue(m.matches()); // 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 } }