xref: /openbsd-src/gnu/usr.bin/perl/t/op/unshift.t (revision 50b7afb2c2c0993b0894d4e34bf857cb13ed9c80)
1#!./perl
2
3BEGIN {
4    require "test.pl";
5}
6
7plan(36);
8
9@array = (1, 2, 3);
10$aref  = [1, 2, 3];
11
12{
13    no warnings 'syntax';
14    $count3 = unshift (@array);
15    $count3r = unshift ($aref);
16}
17is(join(' ',@array), '1 2 3', 'unshift null');
18cmp_ok($count3, '==', 3, 'unshift count == 3');
19is(join(' ',@$aref), '1 2 3', 'unshift null (ref)');
20cmp_ok($count3r, '==', 3, 'unshift count == 3 (ref)');
21
22
23$count3_2 = unshift (@array, ());
24is(join(' ',@array), '1 2 3', 'unshift null empty');
25cmp_ok($count3_2, '==', 3, 'unshift count == 3 again');
26$count3_2r = unshift ($aref, ());
27is(join(' ',@$aref), '1 2 3', 'unshift null empty (ref)');
28cmp_ok($count3_2r, '==', 3, 'unshift count == 3 again (ref)');
29
30$count4 = unshift (@array, 0);
31is(join(' ',@array), '0 1 2 3', 'unshift singleton list');
32cmp_ok($count4, '==', 4, 'unshift count == 4');
33$count4r = unshift ($aref, 0);
34is(join(' ',@$aref), '0 1 2 3', 'unshift singleton list (ref)');
35cmp_ok($count4r, '==', 4, 'unshift count == 4 (ref)');
36
37$count7 = unshift (@array, 3, 2, 1);
38is(join(' ',@array), '3 2 1 0 1 2 3', 'unshift list');
39cmp_ok($count7, '==', 7, 'unshift count == 7');
40$count7r = unshift ($aref, 3, 2, 1);
41is(join(' ',@$aref), '3 2 1 0 1 2 3', 'unshift list (ref)');
42cmp_ok($count7r, '==', 7, 'unshift count == 7 (ref)');
43
44@list = (5, 4);
45$count9 = unshift (@array, @list);
46is(join(' ',@array), '5 4 3 2 1 0 1 2 3', 'unshift array');
47cmp_ok($count9, '==', 9, 'unshift count == 9');
48$count9r = unshift ($aref, @list);
49is(join(' ',@$aref), '5 4 3 2 1 0 1 2 3', 'unshift array (ref)');
50cmp_ok($count9r, '==', 9, 'unshift count == 9 (ref)');
51
52
53@list = (7);
54@list2 = (6);
55$count11 = unshift (@array, @list, @list2);
56is(join(' ',@array), '7 6 5 4 3 2 1 0 1 2 3', 'unshift arrays');
57cmp_ok($count11, '==', 11, 'unshift count == 11');
58$count11r = unshift ($aref, @list, @list2);
59is(join(' ',@$aref), '7 6 5 4 3 2 1 0 1 2 3', 'unshift arrays (ref)');
60cmp_ok($count11r, '==', 11, 'unshift count == 11 (ref)');
61
62# ignoring counts
63@alpha = ('y', 'z');
64$alpharef = ['y', 'z'];
65
66{
67    no warnings 'syntax';
68    unshift (@alpha);
69    unshift ($alpharef);
70}
71is(join(' ',@alpha), 'y z', 'void unshift null');
72is(join(' ',@$alpharef), 'y z', 'void unshift null (ref)');
73
74unshift (@alpha, ());
75is(join(' ',@alpha), 'y z', 'void unshift null empty');
76unshift ($alpharef, ());
77is(join(' ',@$alpharef), 'y z', 'void unshift null empty (ref)');
78
79unshift (@alpha, 'x');
80is(join(' ',@alpha), 'x y z', 'void unshift singleton list');
81unshift ($alpharef, 'x');
82is(join(' ',@$alpharef), 'x y z', 'void unshift singleton list (ref)');
83
84unshift (@alpha, 'u', 'v', 'w');
85is(join(' ',@alpha), 'u v w x y z', 'void unshift list');
86unshift ($alpharef, 'u', 'v', 'w');
87is(join(' ',@$alpharef), 'u v w x y z', 'void unshift list (ref)');
88
89@bet = ('s', 't');
90unshift (@alpha, @bet);
91is(join(' ',@alpha), 's t u v w x y z', 'void unshift array');
92unshift ($alpharef, @bet);
93is(join(' ',@$alpharef), 's t u v w x y z', 'void unshift array (ref)');
94
95@bet = ('q');
96@gimel = ('r');
97unshift (@alpha, @bet, @gimel);
98is(join(' ',@alpha), 'q r s t u v w x y z', 'void unshift arrays');
99unshift ($alpharef, @bet, @gimel);
100is(join(' ',@$alpharef), 'q r s t u v w x y z', 'void unshift arrays (ref)');
101
102