The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;

use Callback::Frame;
use Test::More tests => 5;

## This test verifies basic functionality given 1 frame (no nesting).

our $junkvar = 1;

ok(!$Callback::Frame::top_of_stack);

my $frame = frame(name => "base frame",
                  local => __PACKAGE__ . "::junkvar",
                  code => sub {

  die "ERROR" if $_[0] && $_[0] eq 'die';

  return $junkvar;

}, catch => sub {

  my $err = $@;
  die "NEW ERROR";

});


is(scalar keys %$Callback::Frame::active_frames, 1);

is($frame->(), undef);

eval {
  $frame->('die');
};

ok($@ =~ /NEW ERROR/);

$frame = undef;
is(scalar keys %$Callback::Frame::active_frames, 0);