Commit | Line | Data |
8d063cd8 |
1 | #!./perl |
2 | |
bc58e674 |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = qw(. ../lib); |
6 | } |
7 | |
8 | require "test.pl"; |
2b676593 |
9 | plan( tests => 58 ); |
8d063cd8 |
10 | |
11 | @foo = (1, 2, 3, 4); |
bc58e674 |
12 | cmp_ok($foo[0], '==', 1, 'first elem'); |
13 | cmp_ok($foo[3], '==', 4, 'last elem'); |
8d063cd8 |
14 | |
a687059c |
15 | $_ = join(':',@foo); |
bc58e674 |
16 | cmp_ok($_, 'eq', '1:2:3:4', 'join list'); |
8d063cd8 |
17 | |
18 | ($a,$b,$c,$d) = (1,2,3,4); |
bc58e674 |
19 | cmp_ok("$a;$b;$c;$d", 'eq', '1;2;3;4', 'list assign'); |
8d063cd8 |
20 | |
21 | ($c,$b,$a) = split(/ /,"111 222 333"); |
bc58e674 |
22 | cmp_ok("$a;$b;$c",'eq','333;222;111','list split on space'); |
8d063cd8 |
23 | |
24 | ($a,$b,$c) = ($c,$b,$a); |
bc58e674 |
25 | cmp_ok("$a;$b;$c",'eq','111;222;333','trio rotate'); |
8d063cd8 |
26 | |
27 | ($a, $b) = ($b, $a); |
bc58e674 |
28 | cmp_ok("$a-$b",'eq','222-111','duo swap'); |
29 | |
30 | ($a, $b) = ($b, $a) = ($a, $b); |
31 | cmp_ok("$a-$b",'eq','222-111','duo swap swap'); |
8d063cd8 |
32 | |
33 | ($a, $b[1], $c{2}, $d) = (1, 2, 3, 4); |
bc58e674 |
34 | cmp_ok($a,'==',1,'assign scalar in list'); |
35 | cmp_ok($b[1],'==',2,'assign aelem in list'); |
36 | cmp_ok($c{2},'==',3,'assign helem in list'); |
37 | cmp_ok($d,'==',4,'assign last scalar in list'); |
8d063cd8 |
38 | |
39 | @foo = (1,2,3,4,5,6,7,8); |
40 | ($a, $b, $c, $d) = @foo; |
bc58e674 |
41 | cmp_ok("$a/$b/$c/$d",'eq','1/2/3/4','long list assign'); |
42 | |
43 | @foo = (1,2); |
44 | ($a, $b, $c, $d) = @foo; |
45 | cmp_ok($a,'==',1,'short list 1 defined'); |
46 | cmp_ok($b,'==',2,'short list 2 defined'); |
47 | ok(!defined($c),'short list 3 undef'); |
48 | ok(!defined($d),'short list 4 undef'); |
378cc40b |
49 | |
a687059c |
50 | @foo = @bar = (1); |
bc58e674 |
51 | cmp_ok(join(':',@foo,@bar),'eq','1:1','list reassign'); |
52 | |
53 | @foo = @bar = (2,3); |
54 | cmp_ok(join(':',join('+',@foo),join('-',@bar)),'eq','2+3:2-3','long list reassign'); |
378cc40b |
55 | |
56 | @foo = (); |
57 | @foo = 1+2+3; |
bc58e674 |
58 | cmp_ok(join(':',@foo),'eq','6','scalar assign to array'); |
59 | |
60 | { |
61 | my ($a, $b, $c); |
62 | for ($x = 0; $x < 3; $x = $x + 1) { |
63 | ($a, $b, $c) = |
64 | $x == 0 ? ('a','b','c') |
65 | : $x == 1 ? ('d','e','f') |
66 | : ('g','h','i') |
67 | ; |
68 | if ($x == 0) { |
69 | cmp_ok($a,'eq','a','ternary for a 1'); |
70 | cmp_ok($b,'eq','b','ternary for b 1'); |
71 | cmp_ok($c,'eq','c','ternary for c 1'); |
72 | } |
73 | if ($x == 1) { |
74 | cmp_ok($a,'eq','d','ternary for a 2'); |
75 | cmp_ok($b,'eq','e','ternary for b 2'); |
76 | cmp_ok($c,'eq','f','ternary for c 2'); |
77 | } |
78 | if ($x == 2) { |
79 | cmp_ok($a,'eq','g','ternary for a 3'); |
80 | cmp_ok($b,'eq','h','ternary for b 3'); |
81 | cmp_ok($c,'eq','i','ternary for c 3'); |
82 | } |
83 | } |
84 | } |
85 | |
86 | { |
87 | my ($a, $b, $c); |
88 | for ($x = 0; $x < 3; $x = $x + 1) { |
89 | ($a, $b, $c) = do { |
90 | if ($x == 0) { |
91 | ('a','b','c'); |
92 | } |
93 | elsif ($x == 1) { |
94 | ('d','e','f'); |
95 | } |
96 | else { |
97 | ('g','h','i'); |
98 | } |
99 | }; |
100 | if ($x == 0) { |
101 | cmp_ok($a,'eq','a','block for a 1'); |
102 | cmp_ok($b,'eq','b','block for b 1'); |
103 | cmp_ok($c,'eq','c','block for c 1'); |
104 | } |
105 | if ($x == 1) { |
106 | cmp_ok($a,'eq','d','block for a 2'); |
107 | cmp_ok($b,'eq','e','block for b 2'); |
108 | cmp_ok($c,'eq','f','block for c 2'); |
109 | } |
110 | if ($x == 2) { |
111 | cmp_ok($a,'eq','g','block for a 3'); |
112 | cmp_ok($b,'eq','h','block for b 3'); |
113 | cmp_ok($c,'eq','i','block for c 3'); |
114 | } |
115 | } |
378cc40b |
116 | } |
117 | |
bc58e674 |
118 | $x = 666; |
378cc40b |
119 | @a = ($x == 12345 || (1,2,3)); |
bc58e674 |
120 | cmp_ok(join('*',@a),'eq','1*2*3','logical or f'); |
378cc40b |
121 | |
122 | @a = ($x == $x || (4,5,6)); |
bc58e674 |
123 | cmp_ok(join('*',@a),'eq','1','logical or t'); |
124 | |
125 | cmp_ok(join('',1,2,(3,4,5)),'eq','12345','list ..(...)'); |
126 | cmp_ok(join('',(1,2,3,4,5)),'eq','12345','list (.....)'); |
127 | cmp_ok(join('',(1,2,3,4),5),'eq','12345','list (....).'); |
128 | cmp_ok(join('',1,(2,3,4),5),'eq','12345','list .(...).'); |
129 | cmp_ok(join('',1,2,(3,4),5),'eq','12345','list ..(..).'); |
130 | cmp_ok(join('',1,2,3,(4),5),'eq','12345','list ...(.).'); |
131 | cmp_ok(join('',(1,2),3,(4,5)),'eq','12345','list (..).(..)'); |
a687059c |
132 | |
c73bf8e3 |
133 | { |
134 | my @a = (0, undef, undef, 3); |
135 | my @b = @a[1,2]; |
136 | my @c = (0, undef, undef, 3)[1, 2]; |
bc58e674 |
137 | cmp_ok(scalar(@b),'==',scalar(@c),'slice and slice'); |
138 | cmp_ok(scalar(@c),'==',2,'slice len'); |
04ab2c87 |
139 | |
140 | @b = (29, scalar @c[()]); |
bc58e674 |
141 | cmp_ok(join(':',@b),'eq','29:','slice ary nil'); |
04ab2c87 |
142 | |
143 | my %h = (a => 1); |
144 | @b = (30, scalar @h{()}); |
bc58e674 |
145 | cmp_ok(join(':',@b),'eq','30:','slice hash nil'); |
59abd335 |
146 | |
7f6b17e4 |
147 | my $size = scalar(()[1..1]); |
bc58e674 |
148 | cmp_ok($size,'==','0','size nil'); |
c73bf8e3 |
149 | } |
42e73ed0 |
150 | |
151 | { |
152 | # perl #39882 |
153 | sub test_zero_args { |
154 | my $test_name = shift; |
155 | is(scalar(@_), 0, $test_name); |
156 | } |
157 | test_zero_args("simple list slice", (10,11)[2,3]); |
158 | test_zero_args("grepped list slice", grep(1, (10,11)[2,3])); |
159 | test_zero_args("sorted list slice", sort((10,11)[2,3])); |
160 | test_zero_args("assigned list slice", my @tmp = (10,11)[2,3]); |
161 | test_zero_args("do-returned list slice", do { (10,11)[2,3]; }); |
162 | } |
163 | |
2b676593 |
164 | { |
165 | # perl #20321 |
166 | is (join('', @{[('abc'=~/./g)[0,1,2,1,0]]}), "abcba"); |
167 | } |