forked from openkylin/libunicode-string-perl
71 lines
1.3 KiB
Perl
71 lines
1.3 KiB
Perl
# Test the ord/chr functions
|
|
|
|
print "1..10\n";
|
|
|
|
use Unicode::String qw(latin1 uchr utf16);
|
|
|
|
$u = uchr(ord("å"));
|
|
|
|
print $u->ord, "\n", ord("å"), "\n";
|
|
|
|
|
|
print "not " unless $u->ord == ord("å");
|
|
print "ok 1\n";
|
|
|
|
print "not " unless latin1("\0")->ord == 0 && latin1("A")->ord == 65;
|
|
print "ok 2\n";
|
|
|
|
print "not " unless uchr(0xFFFF)->ord == 0xFFFF;
|
|
print "ok 3\n";
|
|
|
|
# Test surrogates
|
|
|
|
$u = uchr(0x10000);
|
|
print $u->hex, "\n";
|
|
|
|
print "not " unless $u->ord == 0x10000;
|
|
print "ok 4\n";
|
|
|
|
$u = uchr(0x10FFFF);
|
|
print $u->hex, "\n";
|
|
print "not " unless $u->ord == 0x10FFFF;
|
|
print "ok 5\n";
|
|
|
|
$u = utf16("\xd8\x01\xdc\01");
|
|
print $u->hex, "\n";
|
|
print "not " unless $u->ord == 0x10401;
|
|
print "ok 6\n";
|
|
|
|
# Try $u->ord in array context
|
|
|
|
@ord = latin1("perl")->ord;
|
|
|
|
print "not " unless "@ord" eq "112 101 114 108";
|
|
print "ok 7\n";
|
|
|
|
$u = utf16("\0a\xd8\x01\xdc\01\0b");
|
|
print $u->hex, "\n";
|
|
@ord = map { sprintf("U+%04x", $_) } $u->ord;
|
|
print "@ord\n";
|
|
|
|
print "not " unless "@ord" eq "U+0061 U+10401 U+0062";
|
|
print "ok 8\n";
|
|
|
|
# Try some illegal stuff
|
|
$u = utf16("\0a\xdc\01\xd8\x01\0b"); # reversed surrogate
|
|
print $u->hex, "\n";
|
|
|
|
print "not " unless $u->ord == ord("a");
|
|
print "ok 9\n";
|
|
|
|
{
|
|
local($SIG{__WARN__}) = sub {};
|
|
@ord = map { sprintf("U+%04x", $_) } $u->ord;
|
|
}
|
|
|
|
print "@ord\n";
|
|
|
|
print "not " unless "@ord" eq "U+0061 U+0062";
|
|
print "ok 10\n";
|
|
|