X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Findex.t;h=d223265c4f70d8d5685d6f1eba149a27ef5b8804;hb=0f830e0b62c9aecd65b9af85ec46817dc940d8af;hp=0b08f0879d7ee6fba3eb25dccfcb52f6927f6774;hpb=79072805bf63abe5b5978b5928ab00d360ea3e7f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/index.t b/t/op/index.t index 0b08f08..d223265 100755 --- a/t/op/index.t +++ b/t/op/index.t @@ -1,42 +1,109 @@ #!./perl -# $RCSfile: index.t,v $$Revision: 4.1 $$Date: 92/08/07 18:27:59 $ +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} -print "1..20\n"; +use strict; +require './test.pl'; +plan( tests => 46 ); +my $foo = 'Now is the time for all good men to come to the aid of their country.'; -$foo = 'Now is the time for all good men to come to the aid of their country.'; +my $first = substr($foo,0,index($foo,'the')); +is($first, "Now is "); -$first = substr($foo,0,index($foo,'the')); -print ($first eq "Now is " ? "ok 1\n" : "not ok 1\n"); - -$last = substr($foo,rindex($foo,'the'),100); -print ($last eq "their country." ? "ok 2\n" : "not ok 2\n"); +my $last = substr($foo,rindex($foo,'the'),100); +is($last, "their country."); $last = substr($foo,index($foo,'Now'),2); -print ($last eq "No" ? "ok 3\n" : "not ok 3\n"); +is($last, "No"); $last = substr($foo,rindex($foo,'Now'),2); -print ($last eq "No" ? "ok 4\n" : "not ok 4\n"); +is($last, "No"); $last = substr($foo,index($foo,'.'),100); -print ($last eq "." ? "ok 5\n" : "not ok 5\n"); +is($last, "."); $last = substr($foo,rindex($foo,'.'),100); -print ($last eq "." ? "ok 6\n" : "not ok 6\n"); - -print index("ababa","a",-1) == 0 ? "ok 7\n" : "not ok 7\n"; -print index("ababa","a",0) == 0 ? "ok 8\n" : "not ok 8\n"; -print index("ababa","a",1) == 2 ? "ok 9\n" : "not ok 9\n"; -print index("ababa","a",2) == 2 ? "ok 10\n" : "not ok 10\n"; -print index("ababa","a",3) == 4 ? "ok 11\n" : "not ok 11\n"; -print index("ababa","a",4) == 4 ? "ok 12\n" : "not ok 12\n"; -print index("ababa","a",5) == -1 ? "ok 13\n" : "not ok 13\n"; - -print rindex("ababa","a",-1) == -1 ? "ok 14\n" : "not ok 14\n"; -print rindex("ababa","a",0) == 0 ? "ok 15\n" : "not ok 15\n"; -print rindex("ababa","a",1) == 0 ? "ok 16\n" : "not ok 16\n"; -print rindex("ababa","a",2) == 2 ? "ok 17\n" : "not ok 17\n"; -print rindex("ababa","a",3) == 2 ? "ok 18\n" : "not ok 18\n"; -print rindex("ababa","a",4) == 4 ? "ok 19\n" : "not ok 19\n"; -print rindex("ababa","a",5) == 4 ? "ok 20\n" : "not ok 20\n"; +is($last, "."); + +is(index("ababa","a",-1), 0); +is(index("ababa","a",0), 0); +is(index("ababa","a",1), 2); +is(index("ababa","a",2), 2); +is(index("ababa","a",3), 4); +is(index("ababa","a",4), 4); +is(index("ababa","a",5), -1); + +is(rindex("ababa","a",-1), -1); +is(rindex("ababa","a",0), 0); +is(rindex("ababa","a",1), 0); +is(rindex("ababa","a",2), 2); +is(rindex("ababa","a",3), 2); +is(rindex("ababa","a",4), 4); +is(rindex("ababa","a",5), 4); + +$a = "foo \x{1234}bar"; + +is(index($a, "\x{1234}"), 4); +is(index($a, "bar", ), 5); + +is(rindex($a, "\x{1234}"), 4); +is(rindex($a, "foo", ), 0); + +{ + my $needle = "\x{1230}\x{1270}"; + my @needles = split ( //, $needle ); + my $haystack = "\x{1228}\x{1228}\x{1230}\x{1270}"; + foreach ( @needles ) { + my $a = index ( "\x{1228}\x{1228}\x{1230}\x{1270}", $_ ); + my $b = index ( $haystack, $_ ); + is($a, $b, q{[perl #22375] 'split'/'index' problem for utf8}); + } + $needle = "\x{1270}\x{1230}"; # Transpose them. + @needles = split ( //, $needle ); + foreach ( @needles ) { + my $a = index ( "\x{1228}\x{1228}\x{1230}\x{1270}", $_ ); + my $b = index ( $haystack, $_ ); + is($a, $b, q{[perl #22375] 'split'/'index' problem for utf8}); + } +} + +{ + my $search = "foo \xc9 bar"; + my $text = "a\xa3\xa3a $search $search quux"; + + my $text_utf8 = $text; + utf8::upgrade($text_utf8); + my $search_utf8 = $search; + utf8::upgrade($search_utf8); + + is (index($text, $search), 5); + is (rindex($text, $search), 18); + is (index($text, $search_utf8), 5); + is (rindex($text, $search_utf8), 18); + is (index($text_utf8, $search), 5); + is (rindex($text_utf8, $search), 18); + is (index($text_utf8, $search_utf8), 5); + is (rindex($text_utf8, $search_utf8), 18); + + my $text_octets = $text_utf8; + utf8::encode ($text_octets); + my $search_octets = $search_utf8; + utf8::encode ($search_octets); + + is (index($text_octets, $search_octets), 7, "index octets, octets") + or _diag ($text_octets, $search_octets); + is (rindex($text_octets, $search_octets), 21, "rindex octets, octets"); + is (index($text_octets, $search_utf8), -1); + is (rindex($text_octets, $search_utf8), -1); + is (index($text_utf8, $search_octets), -1); + is (rindex($text_utf8, $search_octets), -1); + + is (index($text_octets, $search), -1); + is (rindex($text_octets, $search), -1); + is (index($text, $search_octets), -1); + is (rindex($text, $search_octets), -1); +}