]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blob - t/21-list.t
56c06f3a7d03062a95f9907f3216f7a0ba0ccbb2
[perl/modules/Sub-Nary.git] / t / 21-list.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 38;
7
8 use Sub::Nary;
9
10 my $sn = Sub::Nary->new();
11
12 my ($x, $y, @a, %h);
13
14 my @tests = (
15  [ sub { },                   0 ],
16  [ sub { () },                0 ],
17  [ sub { (1, 2, 3)[2 .. 1] }, 0 ],
18
19  [ sub { 1 },                               1 ],
20  [ sub { 1, 2 },                            2 ],
21  [ sub { my $x = 1; $x = 2; 3, 4, 5; },     3 ],
22  [ sub { do { 1; 2, 3 } },                  2 ],
23  [ sub { do { 1; 2, do { 3, do { 4 } } } }, 3 ],
24
25  [ sub { $x },     1 ],
26  [ sub { $x, $y }, 2 ],
27
28  [ sub { @a },         'list' ],
29  [ sub { $a[0] },      1 ],
30  [ sub { @a[1, 2] },   2 ],
31  [ sub { @a[2 .. 4] }, 3 ],
32
33  [ sub { %h },          'list' ],
34  [ sub { $h{a} },       1 ],
35  [ sub { @h{qw/a b/} }, 2 ],
36
37  [ sub { $x, $a[3], $h{c} }, 3 ],
38  [ sub { $x, @a },           'list' ],
39  [ sub { %h, $y },           'list' ],
40
41  [ sub { 1 .. 3 },           'list' ],
42  [ sub { my @a = (1 .. 4) }, 4 ],
43
44  [ sub { "banana" =~ /(a)/g }, 'list' ],
45
46  [ sub { (localtime)[0, 1, 2] }, 3 ],
47
48  [ sub { for (1, 2, 3) { } },         0 ],
49  [ sub { for (1, 2, 3) { 1; } 1, 2 }, 2 ],
50
51  [ sub { while (1) { } },         0 ],
52  [ sub { while (1) { 1; } 1, 2 }, 2 ],
53
54  [ sub { eval { } },                          0 ],
55  [ sub { eval { 1, 2 } },                     2 ],
56  [ sub { eval { }; $x, 2 },                   2 ],
57  [ sub { 1, eval { $x, eval { $h{foo} } } },  3 ],
58  [ sub { eval { 1, do { eval { @a }, 2 } } }, 'list' ],
59
60  [ sub { eval '1, 2' }, 'list' ],
61
62  [ sub { <$x> }, 'list' ],
63
64  [ sub { stat $0 },   13 ],
65  [ sub { caller 0 },  sub { my @a = caller 0; scalar @a }->() ],
66  [ sub { localtime }, do { my @a = localtime; scalar @a } ],
67 );
68
69 my $i = 1;
70 for (@tests) {
71  my $r = $sn->nary($_->[0]);
72  is_deeply($r, { $_->[1] => 1 }, 'list test ' . $i);
73  ++$i;
74 }