The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests=>14;

# Include the test hierarchy
use lib 't/lib';

BEGIN { use_ok('TestApp5'); };
BEGIN { use_ok('CGI'); };

# Prevent output to STDOUT
$ENV{CGI_APP_RETURN_ONLY} = 1;

###

my $test_name = "mode_param( path_info => 1 ) with PATH_INFO set.";

$ENV{PATH_INFO} = '/basic_test1';
my $app = TestApp5->new;
$app->mode_param( path_info => 1 );
my $out;
eval { $out = $app->run() };
is($@, '', 'avoided eval() death');
like($out,qr/Hello World/, $test_name);

###

$test_name = "mode_param( path_info => 1 ) without PATH_INFO set, but with rm.";
$ENV{PATH_INFO} = '' ;
my $q = CGI->new({ rm => 'basic_test1' });
 $app = TestApp5->new( QUERY => $q );
$app->mode_param( path_info => 1 );
eval { $out = $app->run() };
is($@, '', 'avoided eval() death');
like($out,qr/Hello World/, $test_name);

####

$test_name = "mode_param( param => 'alt_rm' ) ";
$ENV{PATH_INFO} = '';
$q = CGI->new({ alt_rm => 'basic_test1' });
 $app = TestApp5->new( QUERY => $q );
$app->mode_param( param => 'alt_rm' );
eval { $out = $app->run() };
is($@, '', 'avoided eval() death');
like($out,qr/Hello World/, $test_name);

###

$test_name = "mode_param( path_info => 2 ), expecting success ";
$ENV{PATH_INFO} = '/my_ses_id/basic_test1/foo';
 $app = TestApp5->new( QUERY => $q );
$app->mode_param( path_info => 2, );
eval { $out = $app->run() };
is($@, '', 'avoided eval() death');
like($out,qr/Hello World/, $test_name);

####

$test_name = "mode_param( path_info => 2, param => 'alt_rm' ), with path_info undef ";
$ENV{PATH_INFO} = '' ;
 $app = TestApp5->new( QUERY => $q );
$app->mode_param( path_info => 2, param => 'alt_rm' );
eval { $out = $app->run() };
is($@, '', 'avoided eval() death');
like($out,qr/Hello World/, $test_name);

####

$test_name = "mode_param( path_info => -2 ), expecting success ";
$ENV{PATH_INFO} = '/my_ses_id/basic_test1/foo';
 $app = TestApp5->new( QUERY => $q );
$app->mode_param( path_info => -2, );
eval { $out = $app->run() };
is($@, '', 'avoided eval() death');
like($out,qr/Hello World/, $test_name);

####