6 use Test::More tests => 42;
10 my $sn = Sub::Nary->new();
12 sub CORE::GLOBAL::reset {
27 [ sub { hlaghlaghlagh() }, 'list' ],
32 [ sub { lots }, 'list' ],
34 [ sub { one, zero, two }, 3 ],
35 [ sub { one, lots }, 'list' ],
36 [ sub { lots, two }, 'list' ],
38 [ sub { do { one, do { two } } }, 3 ],
39 [ sub { do { lots, do { one } } }, 'list' ],
41 [ sub { 1, return two, do { 4 } }, 3 ],
42 [ sub { two 1, return 2 }, 1 ],
44 [ sub { 1, one(), 2 }, 3 ],
45 [ sub { 1, one(), @_ }, 'list' ],
46 [ sub { $_[0], two() }, 3 ],
47 [ sub { my $x = two() }, 1 ],
48 [ sub { my @a = two() }, 2 ],
50 [ sub { 1, do { two, 1 }, do { one }, @_[0, 1] }, 7 ],
51 [ sub { 1, do { two, 1, do { one, @_[0, 1] } } }, 7 ],
53 [ sub { $_[0]->what }, 'list' ],
54 [ sub { my $m = $_[1]; $_[0]->$m() }, 'list' ],
55 [ sub { $_[0]->() }, 'list' ],
57 [ sub { goto &two }, 2 ],
58 [ sub { my $x = $_[0]; goto &$x }, 'list' ],
59 [ sub { FOO: goto FOO, 1 }, 'list' ],
61 [ sub { rec() }, 'list' ],
62 [ sub { rec1() }, 'list' ],
64 [ sub { sub { 1, 2 }, 2, 3 }, 3 ],
65 [ sub { sub { 1, 2 }->() }, 2 ],
66 [ sub { sub { 1, 2 }->(), 1, 2 }, 4 ],
67 [ sub { do { sub { 1, 2 } }->(), 3 }, 3 ],
68 [ sub { do { my $x = sub { }; sub { 1, 2 } }->(), 3 }, 3 ],
69 [ sub { do { my $x = \&zero; sub { 1, 2 } }->(), 3 }, 3 ],
70 [ sub { do { my $x = 1; do { my $y = 2; sub { 1, 2 } } }->(), 3 }, 3 ],
71 [ sub { sub { sub { 1, 2 } }->()->() }, 'list' ],
72 [ sub { sub { sub { 1, 2 }->(), 3 }->(), 4 }, 4 ],
74 [ sub { \&zero }, 1 ],
76 [ sub { *zero{CODE}->() }, 'list' ],
78 [ sub { &CORE::GLOBAL::shift }, 'list' ],
79 [ sub { &CORE::GLOBAL::reset }, 3 ],
84 my $r = $sn->nary($_->[0]);
85 my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
86 is_deeply($r, $exp, 'call test ' . $i);