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 & Blacks</chocolate>') eq '<chocolate>Green & Blacks</chocolate>', 11 "Kosher XML is left alone"); 12 13ok(decode(' <chocolate>Green & Blacks</chocolate>') eq ' <chocolate>Green & Blacks</chocolate>', 14 "Kosher XML with leading whitespace is left alone"); 15 16ok(XML::DoubleEncodedEntities::decode('<chocolate>Green &amp; Blacks</chocolate>') eq '<chocolate>Green & Blacks</chocolate>', 17 "Broken XML (detected by leading &amp;) is fixed"); 18 19ok(decode('<chocolate>Green & Blacks</chocolate>') eq '<chocolate>Green & Blacks</chocolate>', 20 "Broken XML (detected by leading <) is fixed"); 21 22ok(decode(' <chocolate>Green & Blacks</chocolate>') eq ' <chocolate>Green & Blacks</chocolate>', 23 "Broken XML (detected by leading < with whitespace) is fixed"); 24 25eval { decode(' <chocolate>Green & Blacks</chocolate&bogus;') }; 26ok($@, "Unrecognised entities are an error"); 27