diff options
Diffstat (limited to 't/06customize-text-throw.t')
-rw-r--r-- | t/06customize-text-throw.t | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/t/06customize-text-throw.t b/t/06customize-text-throw.t new file mode 100644 index 0000000..26eb523 --- /dev/null +++ b/t/06customize-text-throw.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w + +use strict; + +use Test::More tests => 3; + +use Error qw(:try); + +package MyError::Foo; + +use vars qw(@ISA); + +@ISA=qw(Error); + +package MyError::Bar; + +use vars qw(@ISA); + +@ISA=qw(Error); + +package main; + +{ + eval + { + try + { + die "Hello"; + } + catch MyError::Foo with { + }; + }; + + my $err = $@; + + # TEST + ok($err->isa("Error::Simple"), "Error was auto-converted to Error::Simple"); +} + +sub throw_MyError_Bar +{ + my $args = shift; + my $err = MyError::Bar->new(); + $err->{'MyBarText'} = $args->{'text'}; + return $err; +} + +{ + local $Error::ObjectifyCallback = \&throw_MyError_Bar; + eval + { + try + { + die "Hello\n"; + } + catch MyError::Foo with { + }; + }; + + my $err = $@; + + # TEST + ok ($err->isa("MyError::Bar"), "Error was auto-converted to MyError::Bar"); + # TEST + is ($err->{'MyBarText'}, "Hello\n", "Text of the error is correct"); +} |