#!perl # # Tests for user-specified delimiter functions # These tests first appeared in version 1.20. use strict; use warnings; use Test::More tests => 19; use_ok 'Text::Template' or exit 1; # (1) Try a simple delimiter: <<..>> # First with the delimiters specified at object creation time our $V = $V = 119; my $template = q{The value of $V is <<$V>>.}; my $result = q{The value of $V is 119.}; my $template1 = Text::Template->new( TYPE => 'STRING', SOURCE => $template, DELIMITERS => [ '<<', '>>' ]) or die "Couldn't construct template object: $Text::Template::ERROR; aborting"; my $text = $template1->fill_in(); is $text, $result; # (2) Now with delimiter choice deferred until fill-in time. $template1 = Text::Template->new(TYPE => 'STRING', SOURCE => $template); $text = $template1->fill_in(DELIMITERS => [ '<<', '>>' ]); is $text, $result; # (3) Now we'll try using regex metacharacters # First with the delimiters specified at object creation time $template = q{The value of $V is [$V].}; $template1 = Text::Template->new( TYPE => 'STRING', SOURCE => $template, DELIMITERS => [ '[', ']' ]) or die "Couldn't construct template object: $Text::Template::ERROR; aborting"; $text = $template1->fill_in(); is $text, $result; # (4) Now with delimiter choice deferred until fill-in time. $template1 = Text::Template->new(TYPE => 'STRING', SOURCE => $template); $text = $template1->fill_in(DELIMITERS => [ '[', ']' ]); is $text, $result; # (5-18) Make sure \ is working properly # (That is to say, it is ignored.) # These tests are similar to those in 01-basic.t. my @tests = ( '{""}' => '', # (5) # Backslashes don't matter '{"}"}' => undef, '{"\\}"}' => undef, # One backslash '{"\\\\}"}' => undef, # Two backslashes '{"\\\\\\}"}' => undef, # Three backslashes '{"\\\\\\\\}"}' => undef, # Four backslashes (10) '{"\\\\\\\\\\}"}' => undef, # Five backslashes # Backslashes are always passed directly to Perl '{"x20"}' => 'x20', '{"\\x20"}' => ' ', # One backslash '{"\\\\x20"}' => '\\x20', # Two backslashes '{"\\\\\\x20"}' => '\\ ', # Three backslashes (15) '{"\\\\\\\\x20"}' => '\\\\x20', # Four backslashes '{"\\\\\\\\\\x20"}' => '\\\\ ', # Five backslashes '{"\\x20\\}"}' => undef, # (18) ); while (my ($test, $result) = splice @tests, 0, 2) { my $tmpl = Text::Template->new( TYPE => 'STRING', SOURCE => $test, DELIMITERS => [ '{', '}' ]); my $text = $tmpl->fill_in; my $ok = (!defined $text && !defined $result || $text eq $result); ok($ok) or diag "expected .$result., got .$text."; }