From: Vincent Pit Date: Mon, 23 Mar 2009 14:53:06 +0000 (+0100) Subject: Test stash magic with AUTOLOAD X-Git-Tag: v0.33~3 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FVariable-Magic.git;a=commitdiff_plain;h=9b7797a4ab8973bc710e348cc19fad264c58e452 Test stash magic with AUTOLOAD --- diff --git a/t/35-stash.t b/t/35-stash.t index 1f42afd..f52dd32 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 => 23; + plan tests => 29; $run = 1; } else { plan skip_all => 'uvar magic is required to test symbol table hooks'; @@ -169,6 +169,53 @@ END { dispell %Hlagh::, $wiz; +{ + package AutoHlagh; + + use vars qw/$AUTOLOAD/; + + sub AUTOLOAD { return $AUTOLOAD } +} + +cast %AutoHlagh::, $wiz; + +{ + local %mg; + + my $res = eval q{ AutoHlagh->autoloaded() }; + + is $@, '', 'stash: autoloaded method call ran fine'; + is $res, 'AutoHlagh::autoloaded', + 'stash: autoloaded method call returned the right thing'; + is_deeply \%mg, { + fetch => [ qw/autoloaded/ ], + store => [ qw/autoloaded AUTOLOAD AUTOLOAD/ ], + }, 'stash: autoloaded method call'; +} + +{ + package AutoHlagher; + + our @ISA; + BEGIN { @ISA = ('AutoHlagh') } +} + +{ + local %mg; + + my $res = eval q{ AutoHlagher->also_autoloaded() }; + + is $@, '', 'stash: inherited autoloaded method call ran fine'; + is $res, 'AutoHlagher::also_autoloaded', + 'stash: inherited autoloaded method returned the right thing'; + is_deeply \%mg, { + fetch => [ qw/also_autoloaded AUTOLOAD/ ], + store => [ qw/AUTOLOAD/ ], + }, 'stash: inherited autoloaded method call'; +} + +dispell %AutoHlagh::, $wiz; + $code = 'wizard ' . join (', ', map { < sub {