1218585Sjkim#!perl
2218585Sjkim#
3218585Sjkim# Tests for PREPROCESSOR features
4218585Sjkim# These tests first appeared in version 1.25.
5218585Sjkim
6218585Sjkimuse strict;
7218585Sjkimuse warnings;
8245582Sjkimuse Test::More tests => 9;
9218585Sjkimuse File::Temp;
10218585Sjkim
11218585Sjkimuse_ok 'Text::Template::Preprocess' or exit 1;
12218585Sjkim
13218585Sjkimmy $tmpfile = File::Temp->new;
14218585Sjkimmy $TMPFILE = $tmpfile->filename;
15218585Sjkim
16218585Sjkimmy $py = sub { tr/x/y/ };
17218585Sjkimmy $pz = sub { tr/x/z/ };
18218585Sjkim
19218585Sjkimmy $t    = 'xxx The value of $x is {$x}';
20218585Sjkimmy $outx = 'xxx The value of $x is 119';
21218585Sjkimmy $outy = 'yyy The value of $y is 23';
22218585Sjkimmy $outz = 'zzz The value of $z is 5';
23218585Sjkimopen my $tfh, '>', $TMPFILE or die "Couldn't open test file: $!; aborting";
24218585Sjkimprint $tfh $t;
25218585Sjkimclose $tfh;
26218585Sjkim
27218585Sjkimmy @result = ($outx, $outy, $outz, $outz);
28218585Sjkimfor my $trial (1, 0) {
29218585Sjkim    for my $test (0 .. 3) {
30218585Sjkim        my $tmpl;
31218585Sjkim        if ($trial == 0) {
32218585Sjkim            $tmpl = Text::Template::Preprocess->new(TYPE => 'STRING', SOURCE => $t) or die;
33218585Sjkim        }
34218585Sjkim        else {
35218585Sjkim            open $tfh, '<', $TMPFILE or die "Couldn't open test file: $!; aborting";
36218585Sjkim            $tmpl = Text::Template::Preprocess->new(TYPE => 'FILEHANDLE', SOURCE => $tfh) or die;
37218585Sjkim        }
38218585Sjkim        $tmpl->preprocessor($py) if ($test & 1) == 1;
39218585Sjkim        my @args = ((($test & 2) == 2) ? (PREPROCESSOR => $pz) : ());
40218585Sjkim        my $o = $tmpl->fill_in(@args, HASH => { x => 119, 'y' => 23, z => 5 });
41218585Sjkim        is $o, $result[$test];
42218585Sjkim    }
43218585Sjkim}
44218585Sjkim