use overload::constant to escape attributes within <foo ...>
[catagits/Web-Simple.git] / t / tags.t
1 use strict; use warnings FATAL => 'all';
2 use Test::More qw(no_plan);
3
4 {
5
6   package Foo;
7
8   sub foo {
9     use XML::Tags qw(one two three);
10     <one>, <two>, <three>;
11   }
12
13   sub bar {
14     no warnings 'once'; # this is supposed to warn, it's broken
15     <one>
16   }
17
18   sub baz {
19     use XML::Tags qw(bar);
20     </bar>;
21   }
22
23   sub quux {
24     use HTML::Tags;
25     <html>, <body id="spoon">, "YAY", </body>, </html>;
26   }
27
28   sub fleem {
29     use XML::Tags qw(woo);
30     my $ent = "one&two";
31     <woo ent="$ent">;
32   }
33
34   sub globbery {
35     <t/globbery/*>;
36   }
37 }
38
39 is(
40   join(', ', XML::Tags::to_xml_string Foo::foo()),
41   '<one>, <two>, <three>',
42   'open tags ok'
43 );
44
45 ok(!eval { Foo::bar(); 1 }, 'Death on use of unimported tag');
46
47 is(
48   join(', ', XML::Tags::to_xml_string Foo::baz()),
49   '</bar>',
50   'close tag ok'
51 );
52
53 is(
54   join('', HTML::Tags::to_html_string Foo::quux),
55   '<html><body id="spoon">YAY</body></html>',
56   'HTML tags ok'
57 );
58
59 is(
60   join('', XML::Tags::to_xml_string Foo::fleem),
61   '<woo ent="one&amp;two">',
62   'Escaping ok'
63 );
64
65 is(
66   join(', ', Foo::globbery),
67   't/globbery/one, t/globbery/two',
68   'real glob re-installed ok'
69 );