diff options
Diffstat (limited to 't/50-efa.t')
-rw-r--r-- | t/50-efa.t | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/t/50-efa.t b/t/50-efa.t new file mode 100644 index 0000000..94529bc --- /dev/null +++ b/t/50-efa.t @@ -0,0 +1,162 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.010; + +use Test::Command tests => 85; + +my $efa = 'bin/efa'; +my $testarg = "E HBf MH HBf"; +my $test_parse = "--test-parse $testarg"; + +my $EMPTY = ''; + +my $re_usage = qr{Insufficient to/from arguments, see \S*efa --help for usage}; +my $re_version = qr{\S*efa version \S+}; + +my $err_exclude = "exclude: Invalid argument: invalid\n"; +my $err_prefer = "prefer: Invalid argument. Use speed|nowait|nowalk\n"; +my $err_include = "include: Invalid argument. Use local|ic|ice\n"; +my $err_time = "time: Invalid argument. Use HH:MM\n"; +my $err_date = "date: Invalid argument: Use DD.MM.[YYYY]\n"; +my $err_walk_speed = "walk-speed: Invalid argument. Use normal|fast|slow\n"; +my $err_common = "Please see bin/efa --help\n"; + +# Usage on invalid invocation +my $cmd = Test::Command->new(cmd => "$efa"); + +$cmd->exit_isnt_num(0); +$cmd->stdout_is_eq($EMPTY); +$cmd->stderr_like($re_usage); + +$cmd = Test::Command->new(cmd => "$efa E HBf MH"); + +$cmd->exit_isnt_num(0); +$cmd->stdout_is_eq($EMPTY); +$cmd->stderr_like($re_usage); + +$cmd = Test::Command->new(cmd => "$efa E HBf Du HBf MH"); + +$cmd->exit_isnt_num(0); +$cmd->stdout_is_eq($EMPTY); +$cmd->stderr_like($re_usage); + +for my $opt (qw/-e --exclude/) { + $cmd = Test::Command->new(cmd => "$efa $opt invalid $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + $cmd->stderr_is_eq($err_exclude . $err_common); +} + +for my $opt (qw/-m --max-change/) { + $cmd = Test::Command->new(cmd => "$efa $opt nan $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + # no stderr test - depends on Getopt::Long +} + +for my $opt (qw/-P --prefer/) { + $cmd = Test::Command->new(cmd => "$efa $opt invalid $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + $cmd->stderr_is_eq($err_prefer . $err_common); +} + +for my $opt (qw/-i --include/) { + $cmd = Test::Command->new(cmd => "$efa $opt invalid $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + $cmd->stderr_is_eq($err_include . $err_common); +} + +for my $opt (qw/-w --walk-speed/) { + $cmd = Test::Command->new(cmd => "$efa $opt invalid $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + $cmd->stderr_is_eq($err_walk_speed . $err_common); +} + +for my $opt (qw/-t --time/) { + $cmd = Test::Command->new(cmd => "$efa $opt 35:12 $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + $cmd->stderr_is_eq($err_time . $err_common); +} + +for my $opt (qw/-d --date/) { + $cmd = Test::Command->new(cmd => "$efa $opt 11.23.2010 $testarg"); + + $cmd->exit_isnt_num(0); + $cmd->stdout_is_eq($EMPTY); + $cmd->stderr_is_eq($err_date . $err_common); +} + +for my $opt (qw/-v --version/) { + $cmd = Test::Command->new(cmd => "$efa $opt"); + + $cmd->exit_is_num(0); + $cmd->stdout_like($re_version); + $cmd->stderr_is_eq($EMPTY); +} + + +for my $file (qw{ + e_hbf_mh_hbf + e_hbf_du_hbf.ice + e_werden_e_hbf + e_hbf_b_hbf.ice + e_martinstr_e_florastr + }) +{ + $cmd = Test::Command->new(cmd => "$efa $test_parse < t/in/$file"); + + $cmd->exit_is_num(0); + $cmd->stdout_is_file("t/out/$file"); + $cmd->stderr_is_eq($EMPTY); +} + +$cmd = Test::Command->new( + cmd => "$efa $test_parse --ignore-info '.*' < t/in/e_hbf_b_hbf.ice" +); + +$cmd->exit_is_num(0); +$cmd->stdout_is_file("t/out/e_hbf_b_hbf.ice.ignore_all"); +$cmd->stderr_is_eq($EMPTY); + +$cmd = Test::Command->new( + cmd => "$efa $test_parse --ignore-info < t/in/e_hbf_mh_hbf" +); + +$cmd->exit_is_num(0); +$cmd->stdout_is_file("t/out/e_hbf_mh_hbf.ignore_none"); +$cmd->stderr_is_eq($EMPTY); + +$cmd = Test::Command->new( + cmd => "$efa $test_parse < t/in/ambiguous" +); + +$cmd->exit_is_num(1); +$cmd->stdout_is_eq($EMPTY); +$cmd->stderr_is_file('t/out/ambiguous'); + +$cmd = Test::Command->new( + cmd => "$efa $test_parse < t/in/no_connections" +); + +$cmd->exit_is_num(2); +$cmd->stdout_is_eq($EMPTY); +$cmd->stderr_is_file('t/out/no_connections'); + +$cmd = Test::Command->new( + cmd => "$efa $test_parse < t/in/invalid_input" +); + +$cmd->exit_is_num(3); +$cmd->stdout_is_eq($EMPTY); +$cmd->stderr_is_file('t/out/invalid_input'); |