6 use Test::More tests => 39;
10 my $sn = Sub::Nary->new();
26 [ sub { lots }, 'list' ],
28 [ sub { one, zero, two }, 3 ],
29 [ sub { one, lots }, 'list' ],
30 [ sub { lots, two }, 'list' ],
32 [ sub { do { one, do { two } } }, 3 ],
33 [ sub { do { lots, do { one } } }, 'list' ],
35 [ sub { 1, return two, do { 4 } }, 3 ],
36 [ sub { two 1, return 2 }, 1 ],
38 [ sub { 1, one(), 2 }, 3 ],
39 [ sub { 1, one(), @_ }, 'list' ],
40 [ sub { $_[0], two() }, 3 ],
41 [ sub { my $x = two() }, 1 ],
42 [ sub { my @a = two() }, 2 ],
44 [ sub { 1, do { two, 1 }, do { one }, @_[0, 1] }, 7 ],
45 [ sub { 1, do { two, 1, do { one, @_[0, 1] } } }, 7 ],
47 [ sub { $_[0]->what }, 'list' ],
48 [ sub { my $m = $_[1]; $_[0]->$m() }, 'list' ],
49 [ sub { $_[0]->() }, 'list' ],
51 [ sub { goto &two }, 2 ],
52 [ sub { my $x = $_[0]; goto &$x }, 'list' ],
53 [ sub { FOO: goto FOO, 1 }, 'list' ],
55 [ sub { rec() }, 'list' ],
56 [ sub { rec1() }, 'list' ],
58 [ sub { sub { 1, 2 }, 2, 3 }, 3 ],
59 [ sub { sub { 1, 2 }->() }, 2 ],
60 [ sub { sub { 1, 2 }->(), 1, 2 }, 4 ],
61 [ sub { do { sub { 1, 2 } }->(), 3 }, 3 ],
62 [ sub { do { my $x = sub { }; sub { 1, 2 } }->(), 3 }, 3 ],
63 [ sub { do { my $x = \&zero; sub { 1, 2 } }->(), 3 }, 3 ],
64 [ sub { do { my $x = 1; do { my $y = 2; sub { 1, 2 } } }->(), 3 }, 3 ],
65 [ sub { sub { sub { 1, 2 } }->()->() }, 'list' ],
66 [ sub { sub { sub { 1, 2 }->(), 3 }->(), 4 }, 4 ],
68 [ sub { \&zero }, 1 ],
70 [ sub { *zero{CODE}->() }, 'list' ],
75 my $r = $sn->nary($_->[0]);
76 is_deeply($r, { $_->[1] => 1 }, 'call test ' . $i);