]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Test stash magic with AUTOLOAD
authorVincent Pit <vince@profvince.com>
Mon, 23 Mar 2009 14:53:06 +0000 (15:53 +0100)
committerVincent Pit <vince@profvince.com>
Mon, 23 Mar 2009 14:53:06 +0000 (15:53 +0100)
t/35-stash.t

index 1f42afd22c8f8673d1f427bf6e4b510eb3c29774..f52dd321d853117c380ab6ea2887cf13716bfa58 100644 (file)
@@ -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 { <<CB;
 $_ => sub {