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 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.";
- }
|