This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Localize $\ before changing it, so as not to affect print statements in
[perl5.git] / t / op / splice.t
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";