#!perl -w use strict; use Test::Requires qw(Template::Plugin::Math); use Test::More; use t::lib::TTSimple; use Template::Plugin::String; # XXX: TTerse does not support plugins (i.e. USE directive), but grokes # the USE keyword as an alias to 'CALL', which takes expressions. my @data = ( [<<'T', <<'X'], [% USE Math -%] [% Math.abs(-100) %] [% Math.abs( 100) %] T 100 100 X [<<'T', <<'X'], [% USE String -%] [% s = String.new("foo") -%] [% s.upper %] [% s.repeat(2) %] T FOO FOOFOO X ); my %vars = ( lang => 'Xslate', void => '', value => 10, Math => Template::Plugin::Math->new(), # as a namespace String => Template::Plugin::String->new(), # as a prototype ); foreach my $d(@data) { my($in, $out, $msg) = @$d; is render_str($in, \%vars), $out, $msg or diag($in); } done_testing;