1use XML::DoubleEncodedEntities qw(decode);
2
3use strict;
4$^W = 1;
5
6use Test::Simple tests => 6;
7
8$SIG{__WARN__} = sub { die("Caught a warning, making it fatal:\n\n$_[0]\n"); };
9
10ok(XML::DoubleEncodedEntities::decode('<chocolate>Green &amp; Blacks</chocolate>') eq '<chocolate>Green &amp; Blacks</chocolate>',
11   "Kosher XML is left alone");
12
13ok(decode('   <chocolate>Green &amp; Blacks</chocolate>') eq '   <chocolate>Green &amp; Blacks</chocolate>',
14   "Kosher XML with leading whitespace is left alone");
15
16ok(XML::DoubleEncodedEntities::decode('<chocolate>Green &amp;amp; Blacks</chocolate>') eq '<chocolate>Green &amp; Blacks</chocolate>',
17   "Broken XML (detected by leading &amp;amp;) is fixed");
18
19ok(decode('&lt;chocolate>Green &amp; Blacks</chocolate>') eq '<chocolate>Green & Blacks</chocolate>',
20   "Broken XML (detected by leading &lt;) is fixed");
21
22ok(decode(' &lt;chocolate>Green &amp; Blacks</chocolate>') eq ' <chocolate>Green & Blacks</chocolate>',
23   "Broken XML (detected by leading &lt; with whitespace) is fixed");
24
25eval { decode(' &lt;chocolate>Green &amp; Blacks</chocolate&bogus;') };
26ok($@, "Unrecognised entities are an error");
27