1#!perl
2#
3# Tests for PREPEND features
4# These tests first appeared in version 1.22.
5
6use strict;
7use warnings;
8use Test::More tests => 10;
9
10use_ok 'Text::Template' or exit 1;
11
12@Emptyclass1::ISA = 'Text::Template';
13@Emptyclass2::ISA = 'Text::Template';
14
15my $tin = q{The value of $foo is: {$foo}};
16
17Text::Template->always_prepend(q{$foo = "global"});
18
19my $tmpl1 = Text::Template->new(
20    TYPE   => 'STRING',
21    SOURCE => $tin);
22
23my $tmpl2 = Text::Template->new(
24    TYPE    => 'STRING',
25    SOURCE  => $tin,
26    PREPEND => q{$foo = "template"});
27
28$tmpl1->compile;
29$tmpl2->compile;
30
31my $t1 = $tmpl1->fill_in(PACKAGE => 'T1');
32my $t2 = $tmpl2->fill_in(PACKAGE => 'T2');
33my $t3 = $tmpl2->fill_in(PREPEND => q{$foo = "fillin"}, PACKAGE => 'T3');
34
35is $t1, 'The value of $foo is: global';
36is $t2, 'The value of $foo is: template';
37is $t3, 'The value of $foo is: fillin';
38
39Emptyclass1->always_prepend(q{$foo = 'Emptyclass global';});
40$tmpl1 = Emptyclass1->new(
41    TYPE   => 'STRING',
42    SOURCE => $tin);
43
44$tmpl2 = Emptyclass1->new(
45    TYPE    => 'STRING',
46    SOURCE  => $tin,
47    PREPEND => q{$foo = "template"});
48
49$tmpl1->compile;
50$tmpl2->compile;
51
52$t1 = $tmpl1->fill_in(PACKAGE => 'T4');
53$t2 = $tmpl2->fill_in(PACKAGE => 'T5');
54$t3 = $tmpl2->fill_in(PREPEND => q{$foo = "fillin"}, PACKAGE => 'T6');
55
56is $t1, 'The value of $foo is: Emptyclass global';
57is $t2, 'The value of $foo is: template';
58is $t3, 'The value of $foo is: fillin';
59
60$tmpl1 = Emptyclass2->new(
61    TYPE   => 'STRING',
62    SOURCE => $tin);
63
64$tmpl2 = Emptyclass2->new(
65    TYPE    => 'STRING',
66    SOURCE  => $tin,
67    PREPEND => q{$foo = "template"});
68
69$tmpl1->compile;
70$tmpl2->compile;
71
72$t1 = $tmpl1->fill_in(PACKAGE => 'T4');
73$t2 = $tmpl2->fill_in(PACKAGE => 'T5');
74$t3 = $tmpl2->fill_in(PREPEND => q{$foo = "fillin"}, PACKAGE => 'T6');
75
76is $t1, 'The value of $foo is: global';
77is $t2, 'The value of $foo is: template';
78is $t3, 'The value of $foo is: fillin';
79