The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
# test apparatus for Text::Template module

use Text::Template;

print "1..5\n";

$n=1;

die "This is the test program for Text::Template version 1.46.
You are using version $Text::Template::VERSION instead.
That does not make sense.\n
Aborting"
  unless $Text::Template::VERSION == 1.46;

# (1) basic error delivery
{ my $r = Text::Template->new(TYPE => 'string',
                              SOURCE => '{1/0}',
                             )->fill_in();
  if ($r eq q{Program fragment delivered error ``Illegal division by zero at template line 1.''}) {
    print "ok $n\n";
  } else {
    print "not ok $n\n# $r\n";
  }
  $n++;
}

# (2) BROKEN sub called in ->new?
{ my $r = Text::Template->new(TYPE => 'string',
                              SOURCE => '{1/0}',
                              BROKEN => sub {'---'},
                             )->fill_in();
  if ($r eq q{---}) {
    print "ok $n\n";
  } else {
    print "not ok $n\n# $r\n";
  }
  $n++;
}

# (3) BROKEN sub called in ->fill_in?
{ my $r = Text::Template->new(TYPE => 'string',
                              SOURCE => '{1/0}',
                             )->fill_in(BROKEN => sub {'---'});
  if ($r eq q{---}) {
    print "ok $n\n";
  } else {
    print "not ok $n\n# $r\n";
  }
  $n++;
}

# (4) BROKEN sub passed correct args when called in ->new?
{ my $r = Text::Template->new(TYPE => 'string',
                              SOURCE => '{1/0}',
                              BROKEN => sub { my %a = @_;
                                qq{$a{lineno},$a{error},$a{text}}
                              },
                             )->fill_in();
  if ($r eq qq{1,Illegal division by zero at template line 1.\n,1/0}) {
    print "ok $n\n";
  } else {
    print "not ok $n\n# $r\n";
  }
  $n++;
}

# (5) BROKEN sub passed correct args when called in ->fill_in?
{ my $r = Text::Template->new(TYPE => 'string',
                              SOURCE => '{1/0}',
                             )->fill_in(BROKEN => 
                                        sub { my %a = @_;
                                              qq{$a{lineno},$a{error},$a{text}}
                                            });
  if ($r eq qq{1,Illegal division by zero at template line 1.\n,1/0}) {
    print "ok $n\n";
  } else {
    print "not ok $n\n# $r\n";
  }
  $n++;
}