Debian lenny version packages
[pkg-perl] / deb-src / libhtml-parser-perl / libhtml-parser-perl-3.56 / t / uentities.t
1 # Test Unicode entities
2
3 use HTML::Entities;
4
5 use Test::More tests => 27;
6
7 SKIP: {
8 skip "This perl does not support Unicode or Unicode entities not selected",
9   27 if $] < 5.008 || !&HTML::Entities::UNICODE_SUPPORT;
10
11 is(decode_entities("&euro"), "&euro");
12 is(decode_entities("&euro;"), "\x{20AC}");
13
14 is(decode_entities("&aring"), "å");
15 is(decode_entities("&aring;"), "å");
16
17 is(decode_entities("&#500000"), chr(500000));
18
19 is(decode_entities("&#x10FFFD"), "\x{10FFFD}");
20
21 is(decode_entities("&#xFFFC"), "\x{FFFC}");
22
23
24 is(decode_entities("&#xFDD0"), "\x{FFFD}");
25 is(decode_entities("&#xFDD1"), "\x{FFFD}");
26 is(decode_entities("&#xFDE0"), "\x{FFFD}");
27 is(decode_entities("&#xFDEF"), "\x{FFFD}");
28 is(decode_entities("&#xFFFF"), "\x{FFFD}");
29 is(decode_entities("&#x10FFFF"), "\x{FFFD}");
30 is(decode_entities("&#x110000"), chr(0xFFFD));
31 is(decode_entities("&#XFFFFFFFF"), chr(0xFFFD));
32
33 is(decode_entities("&#0"), "\0");
34 is(decode_entities("&#0;"), "\0");
35 is(decode_entities("&#x0"), "\0");
36 is(decode_entities("&#X0;"), "\0");
37
38 is(decode_entities("&#&aring&#229&#229;&#xFFF"), "&#ååå\x{FFF}");
39
40 # This might fail when we get more than 64 bit UVs
41 is(decode_entities("&#0009999999999999999999999999999;"), "&#0009999999999999999999999999999;");
42 is(decode_entities("&#xFFFF0000FFFF0000FFFF1"), "&#xFFFF0000FFFF0000FFFF1");
43
44 my $err;
45 for ([32, 48], [120, 169], [240, 250], [250, 260], [965, 975], [3000, 3005]) {
46     my $a = join("", map chr, $_->[0] .. $_->[1]);
47
48     my $e = encode_entities($a);
49     my $d = decode_entities($e);
50
51     unless ($d eq $a) {
52         diag "Wrong decoding in range $_->[0] .. $_->[1]";
53         # use Devel::Peek; Dump($a); Dump($d);
54         $err++;
55     }
56 }
57 ok(!$err);
58
59
60 is(decode_entities("&#56256;&#56453;"), chr(0x100085));
61
62 is(decode_entities("&#56256;&#56453;"), chr(0x100085));
63
64 is(decode_entities("&#56256"), chr(0xFFFD));
65
66 is(decode_entities("\260&rsquo;\260"), "\x{b0}\x{2019}\x{b0}");
67 }