| #!perl |
| # test apparatus for Text::Template module |
| |
| use strict; |
| use warnings; |
| use Test::More tests => 7; |
| |
| use_ok 'Text::Template' or exit 1; |
| |
| # (1) basic error delivery |
| { |
| my $r = Text::Template->new( |
| TYPE => 'string', |
| SOURCE => '{1/0}',)->fill_in(); |
| is $r, q{Program fragment delivered error ``Illegal division by zero at template line 1.''}; |
| } |
| |
| # (2) BROKEN sub called in ->new? |
| { |
| my $r = Text::Template->new( |
| TYPE => 'string', |
| SOURCE => '{1/0}', |
| BROKEN => sub { '---' },)->fill_in(); |
| is $r, q{---}; |
| } |
| |
| # (3) BROKEN sub called in ->fill_in? |
| { |
| my $r = Text::Template->new( |
| TYPE => 'string', |
| SOURCE => '{1/0}',)->fill_in(BROKEN => sub { '---' }); |
| is $r, q{---}; |
| } |
| |
| # (4) BROKEN sub passed correct args when called in ->new? |
| { |
| my $r = Text::Template->new( |
| TYPE => 'string', |
| SOURCE => '{1/0}', |
| BROKEN => sub { |
| my %a = @_; |
| qq{$a{lineno},$a{error},$a{text}}; |
| },)->fill_in(); |
| is $r, qq{1,Illegal division by zero at template line 1.\n,1/0}; |
| } |
| |
| # (5) BROKEN sub passed correct args when called in ->fill_in? |
| { |
| my $r = Text::Template->new( |
| TYPE => 'string', |
| SOURCE => '{1/0}', |
| )->fill_in( |
| BROKEN => sub { |
| my %a = @_; |
| qq{$a{lineno},$a{error},$a{text}}; |
| }); |
| is $r, qq{1,Illegal division by zero at template line 1.\n,1/0}; |
| } |
| |
| # BROKEN sub handles undef |
| { |
| my $r = Text::Template->new(TYPE => 'string', SOURCE => 'abc{1/0}defg') |
| ->fill_in(BROKEN => sub { undef }); |
| |
| is $r, 'abc'; |
| } |