6 use Test::More tests => 43;
10 my $sn = Sub::Nary->new();
14 sub CORE::GLOBAL::reset {
29 [ sub { hlaghlaghlagh() }, 'list' ],
34 [ sub { lots }, 'list' ],
36 [ sub { one, zero, two }, 3 ],
37 [ sub { one, lots }, 'list' ],
38 [ sub { lots, two }, 'list' ],
40 [ sub { do { one, do { two } } }, 3 ],
41 [ sub { do { lots, do { one } } }, 'list' ],
43 [ sub { 1, return two, do { 4 } }, 3 ],
44 [ sub { two 1, return 2 }, 1 ],
45 [ sub { two 1, do { return 5 if $x; 3 } }, { 1 => 0.5, 2 => 0.5 } ],
47 [ sub { 1, one(), 2 }, 3 ],
48 [ sub { 1, one(), @_ }, 'list' ],
49 [ sub { $_[0], two() }, 3 ],
50 [ sub { my $x = two() }, 1 ],
51 [ sub { my @a = two() }, 2 ],
53 [ sub { 1, do { two, 1 }, do { one }, @_[0, 1] }, 7 ],
54 [ sub { 1, do { two, 1, do { one, @_[0, 1] } } }, 7 ],
56 [ sub { $_[0]->what }, 'list' ],
57 [ sub { my $m = $_[1]; $_[0]->$m() }, 'list' ],
58 [ sub { $_[0]->() }, 'list' ],
60 [ sub { goto &two }, 2 ],
61 [ sub { my $x = $_[0]; goto &$x }, 'list' ],
62 [ sub { FOO: goto FOO, 1 }, 'list' ],
64 [ sub { rec() }, 'list' ],
65 [ sub { rec1() }, 'list' ],
67 [ sub { sub { 1, 2 }, 2, 3 }, 3 ],
68 [ sub { sub { 1, 2 }->() }, 2 ],
69 [ sub { sub { 1, 2 }->(), 1, 2 }, 4 ],
70 [ sub { do { sub { 1, 2 } }->(), 3 }, 3 ],
71 [ sub { do { my $x = sub { }; sub { 1, 2 } }->(), 3 }, 3 ],
72 [ sub { do { my $x = \&zero; sub { 1, 2 } }->(), 3 }, 3 ],
73 [ sub { do { my $x = 1; do { my $y = 2; sub { 1, 2 } } }->(), 3 }, 3 ],
74 [ sub { sub { sub { 1, 2 } }->()->() }, 'list' ],
75 [ sub { sub { sub { 1, 2 }->(), 3 }->(), 4 }, 4 ],
77 [ sub { \&zero }, 1 ],
79 [ sub { *zero{CODE}->() }, 'list' ],
81 [ sub { &CORE::GLOBAL::shift }, 'list' ],
82 [ sub { &CORE::GLOBAL::reset }, 3 ],
87 my $r = $sn->nary($_->[0]);
88 my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
89 is_deeply($r, $exp, 'call test ' . $i);