Ambrosia

 view release on metacpan or  search on metacpan

t/Ambrosia/error/Exception.t  view on Meta::CPAN

#!/usr/bin/perl
use strict;
use Test::More tests => 15;
use lib qw(lib t ..);

BEGIN
{
    use_ok( 'Ambrosia::error::Exceptions' ); #test #1
}

sub err1
{
    throw Ambrosia::error::Exception 'error in "err1()"';
}

sub err2
{
    eval
    {
        err1(1,2,3);
    };
    if ( $@ )
    {
        ok($@->message() eq 'error in "err1()"', 'ok 1');
        throw Ambrosia::error::Exception 'error in "err2()"', $@;
    }
}

sub err3
{
    eval
    {
        err2(4,5,6);
    };
    if ( $@ )
    {
        ok($@->message() =~ m/error in "err2\(\)"/s, 'ok 2');
        throw Ambrosia::error::Exception 'error in "err3()"', $@;
    }
}

eval
{
    err3(7,8,9);
};
if ( $@ )
{
    ok($@->message() =~ m/error in "err3\(\)"/s, 'ok 3');

    my $stack = $@->stack();
    ok($stack =~ m/err1\( 1, 2, 3 \)/s, 'stack ok 1');
    ok($stack =~ m/err2\( 4, 5, 6 \)/s, 'stack ok 2');
    ok($stack =~ m/err3\( 7, 8, 9 \)/s, 'stack ok 3');

    #print "ERROR:\n$stack\n";
}

#### Exception ####
eval
{
    throw Ambrosia::error::Exception('Exception');
};
if ( $@ )
{



( run in 0.830 second using v1.01-cache-2.11-cpan-5a3173703d6 )