From b0eb2aa49c97188d4fd25b609f360d5da8c09bca Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 11 May 2010 17:48:45 +0200 Subject: Add some actual parser tests --- bin/efa | 32 ++- test/50-efa.t | 12 +- test/dump_e_hbf_du_hbf.ice | 545 ++++++++++++++++++++++++++++++++++++++++++++ test/dump_e_hbf_mh_hbf | 525 ++++++++++++++++++++++++++++++++++++++++++ test/parse_e_hbf_du_hbf.ice | 14 ++ test/parse_e_hbf_mh_hbf | 13 ++ 6 files changed, 1131 insertions(+), 10 deletions(-) create mode 100644 test/dump_e_hbf_du_hbf.ice create mode 100644 test/dump_e_hbf_mh_hbf create mode 100644 test/parse_e_hbf_du_hbf.ice create mode 100644 test/parse_e_hbf_mh_hbf diff --git a/bin/efa b/bin/efa index edd67d2..01b66d3 100755 --- a/bin/efa +++ b/bin/efa @@ -33,6 +33,7 @@ my $walk_speed; my $with_bike; my $debug = 0; my $ignore_info = 'Fahrradmitnahme'; +my ($test_dump, $test_parse); sub check_ambiguous { my $html = shift; @@ -217,6 +218,8 @@ GetOptions( 'P|prefer=s' => \$prefer, 'p|proximity' => \$proximity, 'i|include=s' => \$include, + 'test-dump' => \$test_dump, + 'test-parse' => \$test_parse, 't|time=s' => \$time, 'to=s{2}' => \@to, 'to-type=s' => \$to_type, @@ -288,7 +291,7 @@ if ($time) { @post{'itdTimeHour', 'itdTimeMinute'} = split(/:/, $time); } if ($date) { - if ($date !~ /^ [0-3]? \d \. [01]? \d (?: \. \d{4} )? $/x) { + if ($date !~ /^ [0-3]? \d \. [01]? \d \. (?: \d{4} )? $/x) { die("Invalid argument: Usage: --date DD.MM[.YYYY]\n"); } @post{'itdDateDay', 'itdDateMonth', 'itdDateYear'} = split(/\./, $date); @@ -361,15 +364,26 @@ if ($with_bike) { $post{bikeTakeAlong} = 1; } -$www->get($firsturl); -$www->submit_form( - form_name => 'jp', - fields => \%post, -); +if ($test_parse) { + local $/; + $content = ; +} +else { + $www->get($firsturl); + $www->submit_form( + form_name => 'jp', + fields => \%post, + ); + + $content = $www->content; + $content =~ s/\xa0/ /gs; + $content = decode('iso-8859-1', $content); +} -$content = $www->content; -$content =~ s/\xa0/ /gs; -$content = decode('iso-8859-1', $content); +if ($test_dump) { + print $content; + exit 0 +} if (check_ambiguous($content)) { exit 1; diff --git a/test/50-efa.t b/test/50-efa.t index c09e582..21bd515 100644 --- a/test/50-efa.t +++ b/test/50-efa.t @@ -2,10 +2,11 @@ use strict; use warnings; use 5.010; -use Test::Command tests => 51; +use Test::Command tests => 57; my $efa = 'bin/efa'; my $testarg = "E HBf MH HBf"; +my $test_parse = "--test-parse $testarg"; my $re_usage = qr{Insufficient to/from arguments, see \S*efa --help for usage}; my $re_version = qr{\S*efa version \S+}; @@ -93,3 +94,12 @@ for my $opt (qw/-v --version/) { $cmd->stdout_like($re_version); $cmd->stderr_is_eq(''); } + + +for my $file (qw/e_hbf_mh_hbf e_hbf_du_hbf.ice/) { + $cmd = Test::Command->new(cmd => "$efa $test_parse < test/dump_$file"); + + $cmd->exit_is_num(0); + $cmd->stdout_is_file("test/parse_$file"); + $cmd->stderr_is_eq(''); +} diff --git a/test/dump_e_hbf_du_hbf.ice b/test/dump_e_hbf_du_hbf.ice new file mode 100644 index 0000000..4527f80 --- /dev/null +++ b/test/dump_e_hbf_du_hbf.ice @@ -0,0 +1,545 @@ + + + +Fahrplanauskunft + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
+
  + + + + + + + +
+
Fahrplanauskunft
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*
+ + + + + + + + + + + + + + + + + + + + + +
*
* von:Essen / Hauptbahnhofnach:     Duisburg / Hbf
*
  Abfahrt:17:24 UhrDatum:11.05.2010
+
*
*
*
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
* Fahrtdaten Fahrtdauer Umsteigen Preisstufe
*
* 1. Fahrt:  am 11.05.2010  von 17:15 bis 17:33 Uhr00:180B
* 2. Fahrt:  am 11.05.2010  von 17:34 bis 17:46 UhrAbweichungen00:120B
* 3. Fahrt:  am 11.05.2010  von 17:41 bis 17:53 Uhr00:120 
+
*
*
*
+ + + + + + + + + + +
*zur Druckversion der ausgewählten Verbindungen In Datei Drucken  zur Druckversion der ausgewählten Verbindungen(Alle Angaben ohne Gewähr.) 
*
+
*
+ + + + + + + + + +
**
+
*
*
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*
* 1. Fahrt
 17:15 ab Essen Hauptbahnhof: Gleis 7*Umgebungsplan*Umgebungsplan*Umgebungsplan*StadtplanS-BahnS-Bahn S1
*17:33 an Duisburg Hbf: Gleis 5*Umgebungsplan*StadtplanSolingen Hbf
**Abweichung der Steig/Haltestellenummern am Essen Hbf
*Linie S1: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
 17:34 ab Essen Hauptbahnhof: Gleis 2*Umgebungsplan*Umgebungsplan*Umgebungsplan*StadtplanZugR-Bahn RE6 + + + +
Abweichung2 Min. später
Plan: ab 17:32
+
*17:46 an Duisburg Hbf: Gleis 5*Umgebungsplan*StadtplanDüsseldorf Hbf
**Abweichung der Steig/Haltestellenummern am Essen Hbf
*Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
 17:41 ab Essen Hauptbahnhof: Gleis 2*Umgebungsplan*Umgebungsplan*Umgebungsplan*StadtplanZugIC 2150 InterCity
*17:53 an Duisburg Hbf: Gleis 2*Umgebungsplan*StadtplanDüsseldorf Hbf
**Abweichung der Steig/Haltestellenummern am Essen Hbf
*Fahrradmitnahme reservierungspflichtig
*Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
+
*
+ + + + + + + + + +
AbweichungVerspätungen sind berücksichtigtPünktlichFahrt voraussichtlich pünktlich
+
*
*
*
+ + + + + + + + + + + +
*zur Druckversion der ausgewählten Verbindungen In Datei Drucken  zur Druckversion der ausgewählten Verbindungenwww.bahn.de(Alle Angaben ohne Gewähr.) 
*
+
*
+ + + + + + + + + +
**
+
*
*
+
+ + + +
**
+
+
+ + diff --git a/test/dump_e_hbf_mh_hbf b/test/dump_e_hbf_mh_hbf new file mode 100644 index 0000000..2f7c08b --- /dev/null +++ b/test/dump_e_hbf_mh_hbf @@ -0,0 +1,525 @@ + + + +Fahrplanauskunft + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Aushangfahrplan
Abfahrtsmonitor
Persönlicher Fahrplan
Verbundfahrplan Schnellverkehr
Linienplan Schnellverkehr
Stadtlinienpläne
Bedienungshinweise
Bildschirmschoner
Aktuelle Hinweise
Ihr Link zu uns
Impressum
Homepage
+
  + + + + + + + +
+
Fahrplanauskunft
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*
+ + + + + + + + + + + + + + + + + + + + + +
*
* von:Essen / Hauptbahnhofnach:     Mülheim a.d. Ruhr / Hbf
*
  Abfahrt:17:22 UhrDatum:11.05.2010
+
*
*
*
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
* Fahrtdaten Fahrtdauer Umsteigen Preisstufe
*
* 1. Fahrt:  am 11.05.2010  von 17:15 bis 17:25 Uhr00:100A2*
* 2. Fahrt:  am 11.05.2010  von 17:26 bis 17:34 Uhr00:080A2*
* 3. Fahrt:  am 11.05.2010  von 17:32 bis 17:37 Uhr00:050A2*
+
*
*
*
+ + + + + + + + + + +
*zur Druckversion der ausgewählten Verbindungen In Datei Drucken  zur Druckversion der ausgewählten Verbindungen(Alle Angaben ohne Gewähr.) 
*
+
*
+ + + + + + + + + +
**
+
*
*
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*
* 1. Fahrt
 17:15 ab Essen Hauptbahnhof: Gleis 7*Umgebungsplan*Umgebungsplan*Umgebungsplan*StadtplanS-BahnS-Bahn S1
*17:25 an Mülheim Hbf: Gleis 5*Umgebungsplan*StadtplanSolingen Hbf
**Abweichung der Steig/Haltestellenummern am Essen Hbf
*Linie S1: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 2. Fahrt
 17:26 ab Essen Hauptbahnhof: Gleis 7*Umgebungsplan*Umgebungsplan*Umgebungsplan*StadtplanS-BahnS-Bahn S3
*17:34 an Mülheim Hbf: Gleis 5*Umgebungsplan*StadtplanOberhausen Hbf.
**Abweichung der Steig/Haltestellenummern am Essen Hbf
*Linie S3: Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
*
* 3. Fahrt
 17:32 ab Essen Hauptbahnhof: Gleis 2*Umgebungsplan*Umgebungsplan*Umgebungsplan*StadtplanZugR-Bahn RE6
*17:37 an Mülheim Hbf: Gleis 6*Umgebungsplan*StadtplanDüsseldorf Hbf
**Abweichung der Steig/Haltestellenummern am Essen Hbf
*Fahrradmitnahme begrenzt möglich
*
* Verbindung zum Drucken auswählen
*
*
+
*
+ + + + + + + + + +
AbweichungVerspätungen sind berücksichtigtPünktlichFahrt voraussichtlich pünktlich
+
*
*
*
+ + + + + + + + + + +
*zur Druckversion der ausgewählten Verbindungen In Datei Drucken  zur Druckversion der ausgewählten Verbindungen(Alle Angaben ohne Gewähr.) 
*
+
*
+ + + + + + + + + +
**
+
*
*
+
+ + + +
**
+
+
+ + diff --git a/test/parse_e_hbf_du_hbf.ice b/test/parse_e_hbf_du_hbf.ice new file mode 100644 index 0000000..6c08743 --- /dev/null +++ b/test/parse_e_hbf_du_hbf.ice @@ -0,0 +1,14 @@ +17:15 ab  Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf +17:33 an  Duisburg Hbf: Gleis 5 + +------ + +# 2 Min. später, Plan: ab 17:32 +17:34 ab  Essen Hauptbahnhof: Gleis 2 R-Bahn RE6 Düsseldorf Hbf +17:46 an  Duisburg Hbf: Gleis 5 + +------ + +17:41 ab  Essen Hauptbahnhof: Gleis 2 IC 2150 InterCity Düsseldorf Hbf +17:53 an  Duisburg Hbf: Gleis 2 + diff --git a/test/parse_e_hbf_mh_hbf b/test/parse_e_hbf_mh_hbf new file mode 100644 index 0000000..c46d5bf --- /dev/null +++ b/test/parse_e_hbf_mh_hbf @@ -0,0 +1,13 @@ +17:15 ab  Essen Hauptbahnhof: Gleis 7 S-Bahn S1 Solingen Hbf +17:25 an  Mülheim Hbf: Gleis 5 + +------ + +17:26 ab  Essen Hauptbahnhof: Gleis 7 S-Bahn S3 Oberhausen Hbf. +17:34 an  Mülheim Hbf: Gleis 5 + +------ + +17:32 ab  Essen Hauptbahnhof: Gleis 2 R-Bahn RE6 Düsseldorf Hbf +17:37 an  Mülheim Hbf: Gleis 6 + -- cgit v1.2.3