| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | #!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 timeour $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.";}
 |