This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
b0665e1a0749a37e93985c713c939bdc4c71de5f
[perl5.git] / t / op / each_array.t
1 #!./perl -w
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6     require './test.pl';
7 }
8 use strict;
9 use vars qw(@array @r $k $v);
10
11 plan tests => 48;
12
13 @array = qw(crunch zam bloop);
14
15 (@r) = each @array;
16 is (scalar @r, 2);
17 is ($r[0], 0);
18 is ($r[1], 'crunch');
19 ($k, $v) = each @array;
20 is ($k, 1);
21 is ($v, 'zam');
22 ($k, $v) = each @array;
23 is ($k, 2);
24 is ($v, 'bloop');
25 (@r) = each @array;
26 is (scalar @r, 0);
27
28 (@r) = each @array;
29 is (scalar @r, 2);
30 is ($r[0], 0);
31 is ($r[1], 'crunch');
32 ($k) = each @array;
33 is ($k, 1);
34 {
35     $[ = 2;
36     my ($k, $v) = each @array;
37     is ($k, 4);
38     is ($v, 'bloop');
39     (@r) = each @array;
40     is (scalar @r, 0);
41 }
42
43 my @lex_array = qw(PLOP SKLIZZORCH RATTLE PBLRBLPSFT);
44
45 (@r) = each @lex_array;
46 is (scalar @r, 2);
47 is ($r[0], 0);
48 is ($r[1], 'PLOP');
49 ($k, $v) = each @lex_array;
50 is ($k, 1);
51 is ($v, 'SKLIZZORCH');
52 ($k) = each @lex_array;
53 is ($k, 2);
54 {
55     $[ = -42;
56     my ($k, $v) = each @lex_array;
57     is ($k, -39);
58     is ($v, 'PBLRBLPSFT');
59 }
60 (@r) = each @lex_array;
61 is (scalar @r, 0);
62
63 my $ar = ['bacon'];
64
65 (@r) = each @$ar;
66 is (scalar @r, 2);
67 is ($r[0], 0);
68 is ($r[1], 'bacon');
69
70 (@r) = each @$ar;
71 is (scalar @r, 0);
72
73 is (each @$ar, 0);
74 is (scalar each @$ar, undef);
75
76 my @keys;
77 @keys = keys @array;
78 is ("@keys", "0 1 2");
79
80 @keys = keys @lex_array;
81 is ("@keys", "0 1 2 3");
82
83 {
84     $[ = 1;
85
86     @keys = keys @array;
87     is ("@keys", "1 2 3");
88
89     @keys = keys @lex_array;
90     is ("@keys", "1 2 3 4");
91 }
92
93 ($k, $v) = each @array;
94 is ($k, 0);
95 is ($v, 'crunch');
96
97 @keys = keys @array;
98 is ("@keys", "0 1 2");
99
100 ($k, $v) = each @array;
101 is ($k, 0);
102 is ($v, 'crunch');
103
104
105
106 my @values;
107 @values = values @array;
108 is ("@values", "@array");
109
110 @values = values @lex_array;
111 is ("@values", "@lex_array");
112
113 {
114     $[ = 1;
115
116     @values = values @array;
117     is ("@values", "@array");
118
119     @values = values @lex_array;
120     is ("@values", "@lex_array");
121 }
122
123 ($k, $v) = each @array;
124 is ($k, 0);
125 is ($v, 'crunch');
126
127 @values = values @array;
128 is ("@values", "@array");
129
130 ($k, $v) = each @array;
131 is ($k, 0);
132 is ($v, 'crunch');