#============================================================= -*-perl-*- # # t/html.t # # Tests the 'HTML' plugin. # # Written by Andy Wardley # # Copyright (C) 2001 Andy Wardley. All Rights Reserved. # # This is free software; you can redistribute it and/or modify it # under the same terms as Perl itself. # # $Id$ # #======================================================================== use strict; use warnings; use lib qw( ./lib ../lib ); use Template; use Template::Test; use Template::Plugin::HTML; my $DEBUG = grep(/-d/, @ARGV); $Template::Test::DEBUG = $DEBUG; $Template::Test::PRESERVE = $DEBUG; #------------------------------------------------------------------------ # behaviour of html filter depends on these being available #------------------------------------------------------------------------ use constant HAS_HTML_Entities => eval { require HTML::Entities; 1; }; use constant HAS_Apache_Util => eval { require Apache::Util; Apache::Utils::escape_html(''); 1; }; #print "Has HTML::Entities: ", HAS_HTML_Entities ? 'yes' : 'no', "\n"; #print "Has Apache::Util: ", HAS_Apache_Util ? 'yes' : 'no', "\n"; my $h = Template::Plugin::HTML->new('foo'); ok( $h, 'created HTML plugin' ); my $cfg = { }; my $vars = { entities => HAS_HTML_Entities || HAS_Apache_Util || 0, }; test_expect(\*DATA, $cfg, $vars); __DATA__ -- test -- -- name html plugin -- [% USE HTML -%] OK -- expect -- OK -- test -- -- name html filter -- [% FILTER html -%] < & > [%- END %] -- expect -- < &amp; > -- test -- -- name html entity -- [% TRY; text = "Léon Brocard" | html_entity; IF text == "Léon Brocard"; 'passed'; ELSIF text == "Léon Brocard"; 'passed'; ELSE; "failed: $text"; END; CATCH; error; END; %] -- expect -- -- process -- [% IF entities -%] passed [%- ELSE -%] html_entity error - cannot locate Apache::Util or HTML::Entities [%- END %] -- test -- [% USE html; html.url('my file.html') -%] -- expect -- my%20file.html -- test -- -- name escape -- [% USE HTML -%] [% HTML.escape("if (a < b && c > d) ...") %] -- expect -- if (a < b && c > d) ... -- test -- -- name sorted -- [% USE HTML(sorted=1) -%] [% HTML.element(table => { border => 1, cellpadding => 2 }) %] -- expect -- -- test -- -- name attributes -- [% USE HTML -%] [% HTML.attributes(border => 1, cellpadding => 2).split.sort.join %] -- expect -- border="1" cellpadding="2"