use strict;
use warnings;
use Test::Builder::Tester tests => 3;
use Test::More;
BEGIN { use_ok( 'Test::Exception' ) };
sub works {return shift};
sub dies { die 'oops' };
my $filename = sub { return (caller)[1] }->();
lives_and {is works(42), 42} 'lives_and, no_exception & success';
test_out('not ok 1 - lives_and, no_exception & failure');
test_fail(+3);
test_err("# got: '42'");
test_err("# expected: '24'");
lives_and {is works(42), 24} 'lives_and, no_exception & failure';
test_out('not ok 2 - lives_and, exception');
test_fail(+2);
test_err("# died: oops at $filename line 11.");
lives_and {is dies(42), 42} 'lives_and, exception';
test_out('ok 3 - The object isa Foo' );
lives_and { isa_ok( bless({}, 'Foo'), 'Foo') };
test_test('lives_and works');