1*e0c4386eSCy Schubert#!perl 2*e0c4386eSCy Schubert# test apparatus for Text::Template module 3*e0c4386eSCy Schubert 4*e0c4386eSCy Schubertuse strict; 5*e0c4386eSCy Schubertuse warnings; 6*e0c4386eSCy Schubertuse Test::More tests => 7; 7*e0c4386eSCy Schubert 8*e0c4386eSCy Schubertuse_ok 'Text::Template' or exit 1; 9*e0c4386eSCy Schubert 10*e0c4386eSCy Schubert# (1) basic error delivery 11*e0c4386eSCy Schubert{ 12*e0c4386eSCy Schubert my $r = Text::Template->new( 13*e0c4386eSCy Schubert TYPE => 'string', 14*e0c4386eSCy Schubert SOURCE => '{1/0}',)->fill_in(); 15*e0c4386eSCy Schubert is $r, q{Program fragment delivered error ``Illegal division by zero at template line 1.''}; 16*e0c4386eSCy Schubert} 17*e0c4386eSCy Schubert 18*e0c4386eSCy Schubert# (2) BROKEN sub called in ->new? 19*e0c4386eSCy Schubert{ 20*e0c4386eSCy Schubert my $r = Text::Template->new( 21*e0c4386eSCy Schubert TYPE => 'string', 22*e0c4386eSCy Schubert SOURCE => '{1/0}', 23*e0c4386eSCy Schubert BROKEN => sub { '---' },)->fill_in(); 24*e0c4386eSCy Schubert is $r, q{---}; 25*e0c4386eSCy Schubert} 26*e0c4386eSCy Schubert 27*e0c4386eSCy Schubert# (3) BROKEN sub called in ->fill_in? 28*e0c4386eSCy Schubert{ 29*e0c4386eSCy Schubert my $r = Text::Template->new( 30*e0c4386eSCy Schubert TYPE => 'string', 31*e0c4386eSCy Schubert SOURCE => '{1/0}',)->fill_in(BROKEN => sub { '---' }); 32*e0c4386eSCy Schubert is $r, q{---}; 33*e0c4386eSCy Schubert} 34*e0c4386eSCy Schubert 35*e0c4386eSCy Schubert# (4) BROKEN sub passed correct args when called in ->new? 36*e0c4386eSCy Schubert{ 37*e0c4386eSCy Schubert my $r = Text::Template->new( 38*e0c4386eSCy Schubert TYPE => 'string', 39*e0c4386eSCy Schubert SOURCE => '{1/0}', 40*e0c4386eSCy Schubert BROKEN => sub { 41*e0c4386eSCy Schubert my %a = @_; 42*e0c4386eSCy Schubert qq{$a{lineno},$a{error},$a{text}}; 43*e0c4386eSCy Schubert },)->fill_in(); 44*e0c4386eSCy Schubert is $r, qq{1,Illegal division by zero at template line 1.\n,1/0}; 45*e0c4386eSCy Schubert} 46*e0c4386eSCy Schubert 47*e0c4386eSCy Schubert# (5) BROKEN sub passed correct args when called in ->fill_in? 48*e0c4386eSCy Schubert{ 49*e0c4386eSCy Schubert my $r = Text::Template->new( 50*e0c4386eSCy Schubert TYPE => 'string', 51*e0c4386eSCy Schubert SOURCE => '{1/0}', 52*e0c4386eSCy Schubert )->fill_in( 53*e0c4386eSCy Schubert BROKEN => sub { 54*e0c4386eSCy Schubert my %a = @_; 55*e0c4386eSCy Schubert qq{$a{lineno},$a{error},$a{text}}; 56*e0c4386eSCy Schubert }); 57*e0c4386eSCy Schubert is $r, qq{1,Illegal division by zero at template line 1.\n,1/0}; 58*e0c4386eSCy Schubert} 59*e0c4386eSCy Schubert 60*e0c4386eSCy Schubert# BROKEN sub handles undef 61*e0c4386eSCy Schubert{ 62*e0c4386eSCy Schubert my $r = Text::Template->new(TYPE => 'string', SOURCE => 'abc{1/0}defg') 63*e0c4386eSCy Schubert ->fill_in(BROKEN => sub { undef }); 64*e0c4386eSCy Schubert 65*e0c4386eSCy Schubert is $r, 'abc'; 66*e0c4386eSCy Schubert} 67