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