104 lines
2.1 KiB
Perl
104 lines
2.1 KiB
Perl
# Test string operations
|
|
|
|
print "1..22\n";
|
|
|
|
use Unicode::String qw(utf8 utf16);
|
|
|
|
$u = utf8("abc");
|
|
$u->append(utf8("def"));
|
|
|
|
print "not " unless $u->utf8 eq "abcdef";
|
|
print "ok 1\n";
|
|
|
|
$x = $u->copy;
|
|
print "not " unless overload::StrVal($x) ne overload::StrVal($u);
|
|
print "ok 2\n";
|
|
|
|
print $u->hex, "\n";
|
|
print $x->hex, "\n";
|
|
|
|
print "not " unless $x->hex eq $u->hex;
|
|
print "ok 3\n";
|
|
|
|
$x->append(utf8("g"));
|
|
|
|
print "not " unless $x->utf8 eq "abcdefg";
|
|
print "ok 4\n";
|
|
|
|
$y = $x->repeat(3);
|
|
print $u->hex, "\n";
|
|
print $x->hex, "\n";
|
|
print $y->utf8, "\n";
|
|
|
|
print "not " unless $y->utf8 eq ("abcdefg" x 3);
|
|
print "ok 5\n";
|
|
|
|
$y = $x->concat($u);
|
|
print "not " unless $y->utf8 eq "abcdefgabcdef" &&
|
|
$x->utf8 eq "abcdefg" && $u->utf8 eq "abcdef";
|
|
print "ok 6\n";
|
|
|
|
$x = utf8("123");
|
|
print "not " unless $x->as_num == 123;
|
|
print "ok 7\n";
|
|
|
|
$x = utf8("");
|
|
print "not " if $x->as_bool;
|
|
print "ok 8\n";
|
|
|
|
$x = utf8("0");
|
|
print "not " if !$x->as_bool;
|
|
print "ok 9\n";
|
|
|
|
$x = utf8("abc");
|
|
print "not " if !$x->as_bool;
|
|
print "ok 10\n";
|
|
|
|
#--- substr ---
|
|
|
|
$y = $x->substr(0,1);
|
|
print "not " unless $y->utf8 eq "a" && $x->utf8 eq "abc";
|
|
print "ok 11\n";
|
|
|
|
$y = $x->substr(1);
|
|
print "not " unless $y->utf8 eq "bc" && $x->utf8 eq "abc";
|
|
print "ok 12\n";
|
|
|
|
$x = utf8("0123456789");
|
|
print "not " unless $x->substr(2,3)->utf8 eq "234";
|
|
print "ok 13\n";
|
|
|
|
print "not " unless $x->substr->utf8 eq $x->utf8;
|
|
print "ok 14\n";
|
|
|
|
print "not " unless $x->substr(3,0)->length == 0;
|
|
print "ok 15\n";
|
|
|
|
print "not " unless $x->substr(8, 100)->utf8 eq "89";
|
|
print "ok 16\n";
|
|
|
|
#--- index/rindex ---
|
|
|
|
print "not " unless $x->index(utf8("345")) == 3;
|
|
print "ok 17\n";
|
|
|
|
print "not " unless $x->index(utf8("356")) == -1;
|
|
print "ok 18\n";
|
|
|
|
print "not " unless $x->index(utf8("0")) == 0;
|
|
print "ok 19\n";
|
|
|
|
print "not " unless $x->index(utf8("0"), 1) == -1;
|
|
print "ok 20\n";
|
|
|
|
# Test some more interresting patterns
|
|
$x = utf16("abbaabbbaa");
|
|
print "not " unless $x->index(utf16("bb")) == 3;
|
|
print "ok 21\n";
|
|
|
|
#--- overload -->
|
|
print "not " unless (utf8("a") . utf8("b"))->utf8 eq "ab" &&
|
|
("a" . utf8("b"))->utf8 eq "ab" &&
|
|
(utf8("a") . "b")->utf8 eq "ab";
|
|
print "ok 22\n";
|