X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fchop.t;h=bacc439676a26b594a1ce52c0fe9bf7e9a086e60;hb=3ab3c9b49fb213f2b1d4cda8797de17be82b2b15;hp=1ac45c3cb91b14d79943dd5d5339f654a8ee6afd;hpb=75ea820e56eb2905cb7fed3312e2bd10c18778d5;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/chop.t b/t/op/chop.t index 1ac45c3..bacc439 100755 --- a/t/op/chop.t +++ b/t/op/chop.t @@ -6,7 +6,7 @@ BEGIN { require './test.pl'; } -plan tests => 51; +plan tests => 133; $_ = 'abc'; $c = do foo(); @@ -175,11 +175,50 @@ foreach (keys %chop) { # chop and chomp can't be lvalues eval 'chop($x) = 1;'; -print $@ =~ /Can\'t modify.*chop.*in.*assignment/ ? "ok 48\n" : "not ok 48\n"; +ok($@ =~ /Can\'t modify.*chop.*in.*assignment/); eval 'chomp($x) = 1;'; -print $@ =~ /Can\'t modify.*chom?p.*in.*assignment/ ? "ok 49\n" : "not ok 49\n"; +ok($@ =~ /Can\'t modify.*chom?p.*in.*assignment/); eval 'chop($x, $y) = (1, 2);'; -print $@ =~ /Can\'t modify.*chop.*in.*assignment/ ? "ok 50\n" : "not ok 50\n"; +ok($@ =~ /Can\'t modify.*chop.*in.*assignment/); eval 'chomp($x, $y) = (1, 2);'; -print $@ =~ /Can\'t modify.*chom?p.*in.*assignment/ ? "ok 51\n" : "not ok 51\n"; +ok($@ =~ /Can\'t modify.*chom?p.*in.*assignment/); + +my @chars = ("N", "\xd3", substr ("\xd4\x{100}", 0, 1), chr 1296); +foreach my $start (@chars) { + foreach my $end (@chars) { + local $/ = $end; + my $message = "start=" . ord ($start) . " end=" . ord $end; + my $string = $start . $end; + is (chomp ($string), 1, "$message [returns 1]"); + is ($string, $start, $message); + + my $end_utf8 = $end; + utf8::encode ($end_utf8); + next if $end_utf8 eq $end; + + # $end ne $end_utf8, so these should not chomp. + $string = $start . $end_utf8; + my $chomped = $string; + is (chomp ($chomped), 0, "$message (end as bytes) [returns 0]"); + is ($chomped, $string, "$message (end as bytes)"); + + $/ = $end_utf8; + $string = $start . $end; + $chomped = $string; + is (chomp ($chomped), 0, "$message (\$/ as bytes) [returns 0]"); + is ($chomped, $string, "$message (\$/ as bytes)"); + } +} +{ + # returns length in characters, but not in bytes. + $/ = "\x{100}"; + $a = "A$/"; + $b = chomp $a; + is ($b, 1); + + $/ = "\x{100}\x{101}"; + $a = "A$/"; + $b = chomp $a; + is ($b, 2); +}