--- /dev/null
+#!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++;
+}
+