Scope-Escape-Sugar
view release on metacpan or search on metacpan
use warnings;
use strict;
use Test::More tests => 56;
use Scope::Escape::Sugar qw(catch throw);
my(@events, @value);
sub bb() {
push @events, [ "bb0" ];
push @events, [ "bb1a", throw("wibble", "bb2b", "bb2c"), "bb1d" ];
push @events, [ "bb2" ];
("bb3a", "bb3b");
}
@events = ();
@value = sub {
push @events, [ "aa0" ];
catch "wibble";
push @events, [ "aa1" ];
push @events, [ "aa2a", bb(), "aa2b" ];
push @events, [ "aa3" ];
("aa4a", "aa4b");
}->();
push @events, [ "cc0", [@value] ];
is_deeply \@events, [
[ "aa0" ],
[ "aa1" ],
[ "bb0" ],
[ "cc0", [ "bb2b", "bb2c" ] ],
];
@events = ();
@value = sub {
push @events, [ "aa0" ];
catch "wibble" {
push @events, [ "aa1" ];
push @events, [ "aa2a", bb(), "aa2b" ];
push @events, [ "aa3" ];
("aa4a", "aa4b");
}
}->();
push @events, [ "cc0", [@value] ];
is_deeply \@events, [
[ "aa0" ],
[ "aa1" ],
[ "bb0" ],
[ "cc0", [ "bb2b", "bb2c" ] ],
];
@events = ();
@value = sub {
push @events, [ "aa0" ];
@value = catch("wibble" {
push @events, [ "aa1" ];
push @events, [ "aa2a", bb(), "aa2b" ];
push @events, [ "aa3" ];
("aa4a", "aa4b");
});
push @events, [ "aa5", [@value] ];
("aa6a", "aa6b");
}->();
push @events, [ "cc0", [@value] ];
is_deeply \@events, [
[ "aa0" ],
[ "aa1" ],
[ "bb0" ],
[ "aa5", [ "bb2b", "bb2c" ] ],
[ "cc0", [ "aa6a", "aa6b" ] ],
( run in 1.614 second using v1.01-cache-2.11-cpan-800906f7e73 )