]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Test repeated method calls on stashes
authorVincent Pit <vince@profvince.com>
Fri, 15 May 2009 17:10:10 +0000 (19:10 +0200)
committerVincent Pit <vince@profvince.com>
Fri, 15 May 2009 17:10:10 +0000 (19:10 +0200)
When an inherited method is called several times, method cache kicks in and magic isn't triggered anymore.

t/35-stash.t

index 43155eb200fddee3957cd62edb5ee62367be096b..93bd62c2824c7f2eed9c284bcb85a80f6d8c22bf 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 => 33;
+ plan tests => 41;
  $run = 1;
 } else {
  plan skip_all => 'uvar magic is required to test symbol table hooks';
@@ -106,6 +106,17 @@ 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;
 
@@ -124,15 +135,44 @@ 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/ ],
+  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';
+}
+
 {
  local %mg;