]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blob - t/21-list.t
Add support and tests for the get{pw,gr,host,net,proto,serv}* functions. Move ops...
[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 => 36;
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  [ sub { keys %h },     'list' ],
37  [ sub { values %h },   'list' ],
38
39  [ sub { $x, $a[3], $h{c} }, 3 ],
40  [ sub { $x, @a },           'list' ],
41  [ sub { %h, $y },           'list' ],
42
43  [ sub { 1 .. 3 },           'list' ],
44  [ sub { my @a = (1 .. 4) }, 4 ],
45
46  [ sub { "banana" =~ /(a)/g }, 'list' ],
47
48  [ sub { (localtime)[0, 1, 2] }, 3 ],
49
50  [ sub { for (1, 2, 3) { } },         0 ],
51  [ sub { for (1, 2, 3) { 1; } 1, 2 }, 2 ],
52
53  [ sub { while (1) { } },         0 ],
54  [ sub { while (1) { 1; } 1, 2 }, 2 ],
55
56  [ sub { eval { } },                          0 ],
57  [ sub { eval { 1, 2 } },                     2 ],
58  [ sub { eval { }; $x, 2 },                   2 ],
59  [ sub { 1, eval { $x, eval { $h{foo} } } },  3 ],
60  [ sub { eval { 1, do { eval { @a }, 2 } } }, 'list' ],
61
62  [ sub { eval '1, 2' }, 'list' ],
63 );
64
65 my $i = 1;
66 for (@tests) {
67  my $r = $sn->nary($_->[0]);
68  my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
69  is_deeply($r, $exp, 'list test ' . $i);
70  ++$i;
71 }