| 1 | #!./perl
|
|---|
| 2 |
|
|---|
| 3 | print "1..18\n";
|
|---|
| 4 |
|
|---|
| 5 | @a = (1..10);
|
|---|
| 6 |
|
|---|
| 7 | sub j { join(":",@_) }
|
|---|
| 8 |
|
|---|
| 9 | print "not " unless j(splice(@a,@a,0,11,12)) eq "" && j(@a) eq j(1..12);
|
|---|
| 10 | print "ok 1\n";
|
|---|
| 11 |
|
|---|
| 12 | print "not " unless j(splice(@a,-1)) eq "12" && j(@a) eq j(1..11);
|
|---|
| 13 | print "ok 2\n";
|
|---|
| 14 |
|
|---|
| 15 | print "not " unless j(splice(@a,0,1)) eq "1" && j(@a) eq j(2..11);
|
|---|
| 16 | print "ok 3\n";
|
|---|
| 17 |
|
|---|
| 18 | print "not " unless j(splice(@a,0,0,0,1)) eq "" && j(@a) eq j(0..11);
|
|---|
| 19 | print "ok 4\n";
|
|---|
| 20 |
|
|---|
| 21 | print "not " unless j(splice(@a,5,1,5)) eq "5" && j(@a) eq j(0..11);
|
|---|
| 22 | print "ok 5\n";
|
|---|
| 23 |
|
|---|
| 24 | print "not " unless j(splice(@a, @a, 0, 12, 13)) eq "" && j(@a) eq j(0..13);
|
|---|
| 25 | print "ok 6\n";
|
|---|
| 26 |
|
|---|
| 27 | print "not " unless j(splice(@a, -@a, @a, 1, 2, 3)) eq j(0..13) && j(@a) eq j(1..3);
|
|---|
| 28 | print "ok 7\n";
|
|---|
| 29 |
|
|---|
| 30 | print "not " unless j(splice(@a, 1, -1, 7, 7)) eq "2" && j(@a) eq j(1,7,7,3);
|
|---|
| 31 | print "ok 8\n";
|
|---|
| 32 |
|
|---|
| 33 | print "not " unless j(splice(@a,-3,-2,2)) eq j(7) && j(@a) eq j(1,2,7,3);
|
|---|
| 34 | print "ok 9\n";
|
|---|
| 35 |
|
|---|
| 36 | # Bug 20000223.001 - no test for splice(@array). Destructive test!
|
|---|
| 37 | print "not " unless j(splice(@a)) eq j(1,2,7,3) && j(@a) eq '';
|
|---|
| 38 | print "ok 10\n";
|
|---|
| 39 |
|
|---|
| 40 | # Tests 11 and 12:
|
|---|
| 41 | # [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT
|
|---|
| 42 |
|
|---|
| 43 | my $foo;
|
|---|
| 44 |
|
|---|
| 45 | @a = ('red', 'green', 'blue');
|
|---|
| 46 | $foo = splice @a, 1, 2;
|
|---|
| 47 | print "not " unless $foo eq 'blue';
|
|---|
| 48 | print "ok 11\n";
|
|---|
| 49 |
|
|---|
| 50 | @a = ('red', 'green', 'blue');
|
|---|
| 51 | $foo = shift @a;
|
|---|
| 52 | print "not " unless $foo eq 'red';
|
|---|
| 53 | print "ok 12\n";
|
|---|
| 54 |
|
|---|
| 55 | # Bug [perl #30568] - insertions of deleted elements
|
|---|
| 56 | @a = (1, 2, 3);
|
|---|
| 57 | splice( @a, 0, 3, $a[1], $a[0] );
|
|---|
| 58 | print "not " unless j(@a) eq j(2,1);
|
|---|
| 59 | print "ok 13\n";
|
|---|
| 60 |
|
|---|
| 61 | @a = (1, 2, 3);
|
|---|
| 62 | splice( @a, 0, 3 ,$a[0], $a[1] );
|
|---|
| 63 | print "not " unless j(@a) eq j(1,2);
|
|---|
| 64 | print "ok 14\n";
|
|---|
| 65 |
|
|---|
| 66 | @a = (1, 2, 3);
|
|---|
| 67 | splice( @a, 0, 3 ,$a[2], $a[1], $a[0] );
|
|---|
| 68 | print "not " unless j(@a) eq j(3,2,1);
|
|---|
| 69 | print "ok 15\n";
|
|---|
| 70 |
|
|---|
| 71 | @a = (1, 2, 3);
|
|---|
| 72 | splice( @a, 0, 3, $a[0], $a[1], $a[2], $a[0], $a[1], $a[2] );
|
|---|
| 73 | print "not " unless j(@a) eq j(1,2,3,1,2,3);
|
|---|
| 74 | print "ok 16\n";
|
|---|
| 75 |
|
|---|
| 76 | @a = (1, 2, 3);
|
|---|
| 77 | splice( @a, 1, 2, $a[2], $a[1] );
|
|---|
| 78 | print "not " unless j(@a) eq j(1,3,2);
|
|---|
| 79 | print "ok 17\n";
|
|---|
| 80 |
|
|---|
| 81 | @a = (1, 2, 3);
|
|---|
| 82 | splice( @a, 1, 2, $a[1], $a[1] );
|
|---|
| 83 | print "not " unless j(@a) eq j(1,2,2);
|
|---|
| 84 | print "ok 18\n";
|
|---|