#!perl -w
use Test::More tests => 9;

# Need CGI.pm for tests
use CGI;


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


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


BEGIN{ chdir './t' };

use lib 'test' ;
use TestApp6  ;


# Test basic cgiapp_prerun() and get_current_runmode()
{
	my $ta_obj = TestApp6->new(QUERY=>CGI->new(""));
	my $output = $ta_obj->run();

	# Did the run-mode work?
	like($output, qr/^Content\-Type\:\ text\/html/);
	like($output, qr/Hello\ World\:\ prerun\_test\ OK/);

	# Did the cgiapp_prerun work?
	is($ta_obj->param('PRERUN_RUNMODE'), 'prerun_test');

	# get_current_runmode() working?
	is($ta_obj->get_current_runmode(), 'prerun_test');
}


# Test basic prerun_mode()
{
	local($^W) = undef;  # Temporarily disable warnings

	my $ta_obj = TestApp6->new(QUERY=>CGI->new('rm=prerun_mode_test'));
	my $output = $ta_obj->run();

	# Did the run-mode work?
	like($output, qr/^Content\-Type\:\ text\/html/);

	# We will be in mode 'new_prerun_mode_test' if everything is working
	like($output, qr/Hello\ World\:\ new\_prerun\_mode\_test\ OK/);

	# get_current_runmode() working?
	is($ta_obj->get_current_runmode(), 'new_prerun_mode_test');
}


# Test fail-case for prerun_mode()
{
	my $ta_obj = TestApp6->new(QUERY=>CGI->new('rm=illegal_prerun_mode'));

	eval {
		my $output = $ta_obj->run();
	};

	my $eval_error = $@;


	# Should result in an error
	like($eval_error, qr/No page handler found for page/);
}


# Test fail-case for prerun_mode() called from setup()
{
	$ENV{PRERUN_IN_SETUP} = 1;

	eval {
		my $ta_obj = TestApp6->new(QUERY=>CGI->new(""));
	};

	my $eval_error = $@;

	# Should result in an error
	like($eval_error, qr/Too early to call/);
}


###############
####  EOF  ####
###############