#
# Check SPLICE function's return value
#
my $data =
"rec0blahrec1blahrec2blah";
print "1..50\n";
my $N = 1;
print "ok $N\n"; $N++; # partial credit just for showing up
print $o ? "ok $N\n" : "not ok $N\n";
$N++;
my $n;
# (3-12) splicing at the beginning
@r =
splice(@a, 0, 0, "rec4");
@r =
splice(@a, 0, 1, "rec5");
# same length@r =
splice(@a, 0, 1, "record5");
# longer
@r =
splice(@a, 0, 1, "r5");
# shorter@r =
splice(@a, 0, 1);
# removal@r =
splice(@a, 0, 0);
# no-op@r =
splice(@a, 0, 0, 'r7', 'rec8');
# insert more than one@r =
splice(@a, 0, 2, 'rec7', 'record8', 'rec9');
# insert more than delete
@r =
splice(@a, 0, 3, 'record9', 'rec10');
# delete more than insert@r =
splice(@a, 0, 2);
# delete more than one
# (13-22) splicing in the middle
@r =
splice(@a, 1, 0, "rec4");
@r =
splice(@a, 1, 1, "rec5");
# same length@r =
splice(@a, 1, 1, "record5");
# longer
@r =
splice(@a, 1, 1, "r5");
# shorter@r =
splice(@a, 1, 1);
# removal@r =
splice(@a, 1, 0);
# no-op@r =
splice(@a, 1, 0, 'r7', 'rec8');
# insert more than one@r =
splice(@a, 1, 2, 'rec7', 'record8', 'rec9');
# insert more than delete
@r =
splice(@a, 1, 3, 'record9', 'rec10');
# delete more than insert@r =
splice(@a, 1, 2);
# delete more than one
# (23-32) splicing at the end
@r =
splice(@a, 3, 0, "rec4");
@r =
splice(@a, 3, 1, "rec5");
# same length@r =
splice(@a, 3, 1, "record5");
# longer
@r =
splice(@a, 3, 1, "r5");
# shorter@r =
splice(@a, 3, 1);
# removal@r =
splice(@a, 3, 0);
# no-op@r =
splice(@a, 3, 0, 'r7', 'rec8');
# insert more than one@r =
splice(@a, 3, 2, 'rec7', 'record8', 'rec9');
# insert more than delete
@r =
splice(@a, 3, 3, 'record9', 'rec10');
# delete more than insert@r =
splice(@a, 3, 2);
# delete more than one
# (33-42) splicing with negative subscript
@r =
splice(@a, -1, 0, "rec4");
@r =
splice(@a, -1, 1, "rec5");
# same length@r =
splice(@a, -1, 1, "record5");
# longer
@r =
splice(@a, -1, 1, "r5");
# shorter@r =
splice(@a, -1, 1);
# removal@r =
splice(@a, -1, 0);
# no-op @r =
splice(@a, -1, 0, 'r7', 'rec8');
# insert more than one@r =
splice(@a, -1, 2, 'rec7', 'record8', 'rec9');
# insert more than delete
@r =
splice(@a, -3, 3, 'record9', 'rec10');
# delete more than insert@r =
splice(@a, -4, 3);
# delete more than one
# (43) scrub it all out
# (44) put some back in
@r =
splice(@a, 0, 0, "rec0", "rec1");
# (45) what if we remove too many records?
# (46-48) Now check the scalar context return
my $r;
print !
defined($r) ?
"ok $N\n" :
"not ok $N \# return should have been undef\n";
$N++;
print $r
eq "pieblah" ?
"ok $N\n" :
"not ok $N \# return should have been 'pie'\n";
$N++;
print $r
eq "likeblah" ?
"ok $N\n" :
"not ok $N \# return should have been 'like'\n";
$N++;
# (49-50) Test default arguments
}
# actual results are in @r.
# expected results are in @_
my @x = @_;
for my $i (0 .. $#r) {
}
print $good ? "ok $N\n" : "not ok $N \# was (@r); should be (@x)\n"; $N++;
}
}