]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blob - t/21-list.t
Update author tests
[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 => 44;
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  [ sub { @a[1, 4 .. 7, 2] }, 6 ],
33
34  [ sub { %h },          'list' ],
35  [ sub { $h{a} },       1 ],
36  [ sub { @h{qw/a b/} }, 2 ],
37  [ sub { keys %h },     'list' ],
38  [ sub { values %h },   'list' ],
39
40  [ sub { $x, $a[3], $h{c} }, 3 ],
41  [ sub { $x, @a },           'list' ],
42  [ sub { %h, $y },           'list' ],
43
44  [ sub { 2 .. 4 },                      3 ],
45  [ sub { $x .. 3 },                     'list' ],
46  [ sub { 1 .. $x },                      'list' ],
47  [ sub { '2foo' .. 4 },                  3 ],
48  [ sub { my @a = (7, 8); @a .. 4 },      'list' ],
49  [ sub { my @a = (2 .. 5) },             4 ],
50  [ sub { my @b; my @a = @b = (2 .. 5) }, 4 ],
51  [ sub { my @a =()= (2 .. 5) },          0 ],
52  [ sub { my $x =()= (2 .. 5) },          1 ],
53
54  [ sub { "banana" =~ /(a)/g }, 'list' ],
55
56  [ sub { (localtime)[0, 1, 2] }, 3 ],
57
58  [ sub { for (1, 2, 3) { } },         0 ],
59  [ sub { for (1, 2, 3) { 1; } 1, 2 }, 2 ],
60
61  [ sub { while (1) { } },         0 ],
62  [ sub { while (1) { 1; } 1, 2 }, 2 ],
63
64  [ sub { eval { } },                          0 ],
65  [ sub { eval { 1, 2 } },                     2 ],
66  [ sub { eval { }; $x, 2 },                   2 ],
67  [ sub { 1, eval { $x, eval { $h{foo} } } },  3 ],
68  [ sub { eval { 1, do { eval { @a }, 2 } } }, 'list' ],
69
70  [ sub { eval '1, 2' }, 'list' ],
71 );
72
73 my $i = 1;
74 for (@tests) {
75  my $r = $sn->nary($_->[0]);
76  my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
77  is_deeply($r, $exp, 'list test ' . $i);
78  ++$i;
79 }