use strict;
use Test;
BEGIN { plan tests => 24 }
use Shell::Parser;
my $parser = new Shell::Parser;
my @handlers = qw(metachar keyword builtin command assign variable text comment);
# check that, at creation, no handler is affected
for my $handler (@handlers) {
ok( $parser->{handler}{$handler}, undef ); #01-08
}
# now assign the default handler and check that all handlers have the same value
sub default_handler {}
$parser->handlers(default => \&default_handler);
for my $handler (@handlers) {
ok( $parser->{handler}{$handler}, \&default_handler ); #09-16
}
# now assign each handler, using the several ways allowed by handlers()
sub metachar_handler {}
$parser->handlers(metachar => \&metachar_handler);
ok( $parser->{handler}{metachar}, \&metachar_handler ); #17
sub keyword_handler {}
$parser->handlers(keyword => \&keyword_handler);
ok( $parser->{handler}{keyword}, \&keyword_handler ); #18
sub builtin_handler {}
sub command_handler {}
sub assign_handler {}
$parser->handlers(builtin => \&builtin_handler,
command => \&command_handler, assign => \&assign_handler);
ok( $parser->{handler}{builtin}, \&builtin_handler ); #19
ok( $parser->{handler}{command}, \&command_handler ); #20
ok( $parser->{handler}{assign}, \&assign_handler ); #21
sub variable_handler {}
sub text_handler {}
sub comment_handler {}
$parser->handlers({variable => \&variable_handler, text => \&text_handler,
comment => \&comment_handler});
ok( $parser->{handler}{variable}, \&variable_handler ); #22
ok( $parser->{handler}{text}, \&text_handler ); #23
ok( $parser->{handler}{comment}, \&comment_handler ); #24