X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F14-callbacks.t;h=ce87f51fec8e2cc99400b4f842a4bf7d303666bf;hb=7e4218a22df9d95cb7ee69e807675ec8752caa1e;hp=e14d5709be01f2da446d27caadf1b663daff5176;hpb=6e42ee234deb79fad1c91703e5a7ec3bd8bc47f3;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/t/14-callbacks.t b/t/14-callbacks.t index e14d570..ce87f51 100644 --- a/t/14-callbacks.t +++ b/t/14-callbacks.t @@ -3,9 +3,9 @@ use strict; use warnings; -use Test::More tests => 12; +use Test::More tests => 22; -use Variable::Magic qw/wizard cast/; +use Variable::Magic qw; my $wiz = eval { wizard get => sub { undef } }; is($@, '', 'wizard creation doesn\'t croak'); @@ -27,6 +27,44 @@ eval { is($@, '', 'callback returning undef doesn\'t warn/croak'); is($x, $n, 'callback returning undef fails'); +{ + my $c = 0; + sub X::wat { ++$c } + my $wiz = eval { wizard get => \'X::wat' }; + is($@, '', 'wizard with a qualified string callback doesn\'t croak'); + my $b = $n; + my $res = eval { cast $b, $wiz }; + is($@, '', 'cast a wizard with a qualified string callback doesn\'t croak'); + my $x; + eval { + local $SIG{__WARN__} = sub { die }; + $x = $b; + }; + is($@, '', 'qualified string callback doesn\'t warn/croak'); + is($c, 1, 'qualified string callback is called'); + is($x, $n, 'qualified string callback returns the right thing'); +} + +{ + my $c = 0; + sub wut { fail 'main::wut was called' } + sub Y::wut { ++$c } + my $wiz = eval { wizard get => \'wut' }; + is($@, '', 'wizard with a short string callback doesn\'t croak'); + my $b = $n; + my $res = eval { cast $b, $wiz }; + is($@, '', 'cast a wizard with a short string callback doesn\'t croak'); + my $x; + eval { + local $SIG{__WARN__} = sub { die }; + package Y; + $x = $b; + }; + is($@, '', 'short string callback doesn\'t warn/croak'); + is($c, 1, 'short string callback is called'); + is($x, $n, 'short string callback returns the right thing'); +} + my @callers; $wiz = wizard get => sub { my @c; @@ -41,20 +79,20 @@ cast $b, $wiz; my $u = $b; is_deeply(\@callers, [ - [ 'main', $0, __LINE__-2 ], + ([ 'main', $0, __LINE__-2 ]) x 2, ], 'caller into callback returns the right thing'); @callers = (); $u = $b; is_deeply(\@callers, [ - [ 'main', $0, __LINE__-2 ], + ([ 'main', $0, __LINE__-2 ]) x 2, ], 'caller into callback returns the right thing (second time)'); { @callers = (); my $u = $b; is_deeply(\@callers, [ - [ 'main', $0, __LINE__-2 ], + ([ 'main', $0, __LINE__-2 ]) x 2, ], 'caller into callback into block returns the right thing'); } @@ -62,5 +100,6 @@ is_deeply(\@callers, [ eval { my $u = $b }; is($@, '', 'caller into callback doesn\'t croak'); is_deeply(\@callers, [ - ([ 'main', $0, __LINE__-3 ]) x 2, + ([ 'main', $0, __LINE__-3 ]) x 3, ], 'caller into callback into eval returns the right thing'); +