- my $test_ref = shift;
- my %test = %{$test_ref};
- my $result = 0;
-
- if ($test{'type'} == CLIENT_HEADER_TEST) {
-
- $result = execute_client_header_regression_test($test_ref);
-
- } elsif ($test{'type'} == SERVER_HEADER_TEST) {
-
- $result = execute_server_header_regression_test($test_ref);
-
- } elsif ($test{'type'} == DUMB_FETCH_TEST
- or $test{'type'} == TRUSTED_CGI_REQUEST) {
-
- $result = execute_dumb_fetch_test($test_ref);
-
- } elsif ($test{'type'} == METHOD_TEST) {
-
- $result = execute_method_test($test_ref);
+ my $test = shift;
+ my $type = $test->{'type'};
+ my %test_subs = (
+ (CLIENT_HEADER_TEST) => \&execute_client_header_regression_test,
+ (SERVER_HEADER_TEST) => \&execute_server_header_regression_test,
+ (DUMB_FETCH_TEST) => \&execute_dumb_fetch_test,
+ (TRUSTED_CGI_REQUEST) => \&execute_dumb_fetch_test,
+ (METHOD_TEST) => \&execute_method_test,
+ (BLOCK_TEST) => \&execute_block_test,
+ (STICKY_ACTIONS_TEST) => \&execute_sticky_actions_test,
+ (REDIRECT_TEST) => \&execute_redirect_test);
+
+ die "Unsupported test type detected: " . $type
+ unless defined ($test_subs{$type});
+
+ return $test_subs{$type}($test);
+}