xref: /freebsd/crypto/openssl/external/perl/Text-Template-1.56/t/broken.t (revision e0c4386e7e71d93b0edc0c8fa156263fc4a8b0b6)
1*e0c4386eSCy Schubert#!perl
2*e0c4386eSCy Schubert# test apparatus for Text::Template module
3*e0c4386eSCy Schubert
4*e0c4386eSCy Schubertuse strict;
5*e0c4386eSCy Schubertuse warnings;
6*e0c4386eSCy Schubertuse Test::More tests => 7;
7*e0c4386eSCy Schubert
8*e0c4386eSCy Schubertuse_ok 'Text::Template' or exit 1;
9*e0c4386eSCy Schubert
10*e0c4386eSCy Schubert# (1) basic error delivery
11*e0c4386eSCy Schubert{
12*e0c4386eSCy Schubert    my $r = Text::Template->new(
13*e0c4386eSCy Schubert        TYPE   => 'string',
14*e0c4386eSCy Schubert        SOURCE => '{1/0}',)->fill_in();
15*e0c4386eSCy Schubert    is $r, q{Program fragment delivered error ``Illegal division by zero at template line 1.''};
16*e0c4386eSCy Schubert}
17*e0c4386eSCy Schubert
18*e0c4386eSCy Schubert# (2) BROKEN sub called in ->new?
19*e0c4386eSCy Schubert{
20*e0c4386eSCy Schubert    my $r = Text::Template->new(
21*e0c4386eSCy Schubert        TYPE   => 'string',
22*e0c4386eSCy Schubert        SOURCE => '{1/0}',
23*e0c4386eSCy Schubert        BROKEN => sub { '---' },)->fill_in();
24*e0c4386eSCy Schubert    is $r, q{---};
25*e0c4386eSCy Schubert}
26*e0c4386eSCy Schubert
27*e0c4386eSCy Schubert# (3) BROKEN sub called in ->fill_in?
28*e0c4386eSCy Schubert{
29*e0c4386eSCy Schubert    my $r = Text::Template->new(
30*e0c4386eSCy Schubert        TYPE   => 'string',
31*e0c4386eSCy Schubert        SOURCE => '{1/0}',)->fill_in(BROKEN => sub { '---' });
32*e0c4386eSCy Schubert    is $r, q{---};
33*e0c4386eSCy Schubert}
34*e0c4386eSCy Schubert
35*e0c4386eSCy Schubert# (4) BROKEN sub passed correct args when called in ->new?
36*e0c4386eSCy Schubert{
37*e0c4386eSCy Schubert    my $r = Text::Template->new(
38*e0c4386eSCy Schubert        TYPE   => 'string',
39*e0c4386eSCy Schubert        SOURCE => '{1/0}',
40*e0c4386eSCy Schubert        BROKEN => sub {
41*e0c4386eSCy Schubert            my %a = @_;
42*e0c4386eSCy Schubert            qq{$a{lineno},$a{error},$a{text}};
43*e0c4386eSCy Schubert        },)->fill_in();
44*e0c4386eSCy Schubert    is $r, qq{1,Illegal division by zero at template line 1.\n,1/0};
45*e0c4386eSCy Schubert}
46*e0c4386eSCy Schubert
47*e0c4386eSCy Schubert# (5) BROKEN sub passed correct args when called in ->fill_in?
48*e0c4386eSCy Schubert{
49*e0c4386eSCy Schubert    my $r = Text::Template->new(
50*e0c4386eSCy Schubert        TYPE   => 'string',
51*e0c4386eSCy Schubert        SOURCE => '{1/0}',
52*e0c4386eSCy Schubert        )->fill_in(
53*e0c4386eSCy Schubert        BROKEN => sub {
54*e0c4386eSCy Schubert            my %a = @_;
55*e0c4386eSCy Schubert            qq{$a{lineno},$a{error},$a{text}};
56*e0c4386eSCy Schubert        });
57*e0c4386eSCy Schubert    is $r, qq{1,Illegal division by zero at template line 1.\n,1/0};
58*e0c4386eSCy Schubert}
59*e0c4386eSCy Schubert
60*e0c4386eSCy Schubert# BROKEN sub handles undef
61*e0c4386eSCy Schubert{
62*e0c4386eSCy Schubert    my $r = Text::Template->new(TYPE => 'string', SOURCE => 'abc{1/0}defg')
63*e0c4386eSCy Schubert        ->fill_in(BROKEN => sub { undef });
64*e0c4386eSCy Schubert
65*e0c4386eSCy Schubert    is $r, 'abc';
66*e0c4386eSCy Schubert}
67