X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F35-stash.t;h=93bd62c2824c7f2eed9c284bcb85a80f6d8c22bf;hb=cb678e6b73356092edce6d42b76f3d667f95d7c4;hp=f52dd321d853117c380ab6ea2887cf13716bfa58;hpb=9b7797a4ab8973bc710e348cc19fad264c58e452;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/t/35-stash.t b/t/35-stash.t index f52dd32..93bd62c 100644 --- a/t/35-stash.t +++ b/t/35-stash.t @@ -9,7 +9,7 @@ use Variable::Magic qw/wizard cast dispell VMG_UVAR VMG_OP_INFO_NAME VMG_OP_INFO my $run; if (VMG_UVAR) { - plan tests => 29; + plan tests => 41; $run = 1; } else { plan skip_all => 'uvar magic is required to test symbol table hooks'; @@ -106,6 +106,28 @@ cast %Hlagh::, $wiz; }, 'stash: valid method call'; } +{ + local %mg; + + eval q{ Hlagh->shoot() }; + + is $@, '', 'stash: second valid method call ran fine'; + is_deeply \%mg, { + fetch => [ qw/shoot/ ], + }, 'stash: second valid method call'; +} + +{ + local %mg; + + eval q{ my $meth = 'shoot'; Hlagh->$meth() }; + + is $@, '', 'stash: valid dynamic method call ran fine'; + is_deeply \%mg, { + store => [ qw/shoot/ ], + }, 'stash: valid dynamic method call'; +} + { local %mg; @@ -113,13 +135,42 @@ cast %Hlagh::, $wiz; package Hlagher; our @ISA; BEGIN { @ISA = 'Hlagh' } - Hlagher->shoot() + Hlagher->leave() ]; is $@, '', 'inherited valid method call ran fine'; is_deeply \%mg, { - fetch => [ qw/ISA shoot/ ], - }, 'stash: direct method call'; + fetch => [ qw/ISA leave/ ], + }, 'stash: inherited valid method call'; +} + +{ + local %mg; + + eval q{ Hlagher->leave() }; + + is $@, '', 'second inherited valid method call ran fine'; + is_deeply \%mg, { }, 'stash: second inherited valid method call doesn\'t call magic'; +} + +{ + local %mg; + + eval q{ Hlagher->shoot() }; + + is $@, '', 'inherited previously called valid method call ran fine'; + is_deeply \%mg, { + fetch => [ qw/shoot/ ], + }, 'stash: inherited previously called valid method call'; +} + +{ + local %mg; + + eval q{ Hlagher->shoot() }; + + is $@, '', 'second inherited previously called valid method call ran fine'; + is_deeply \%mg, { }, 'stash: second inherited previously called valid method call doesn\'t call magic'; } { @@ -134,6 +185,17 @@ cast %Hlagh::, $wiz; }, 'stash: invalid method call'; } +{ + local %mg; + + eval q{ my $meth = 'unknown_too'; Hlagh->$meth() }; + + like $@, qr/^Can't locate object method "unknown_too" via package "Hlagh"/, 'stash: invalid dynamic method call croaked'; + is_deeply \%mg, { + store => [ qw/unknown_too AUTOLOAD/ ], + }, 'stash: invalid dynamic method call'; +} + { local %mg;