]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Test that unqualified sub names as callbacks default to the current package
authorVincent Pit <vince@profvince.com>
Thu, 16 Feb 2012 21:58:25 +0000 (22:58 +0100)
committerVincent Pit <vince@profvince.com>
Thu, 16 Feb 2012 21:58:25 +0000 (22:58 +0100)
t/14-callbacks.t

index 77fdd00d68105e0107588826b02b3bc35809df47..ce87f51fec8e2cc99400b4f842a4bf7d303666bf 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 17;
+use Test::More tests => 22;
 
 use Variable::Magic qw<wizard cast>;
 
@@ -31,18 +31,38 @@ 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 string callback doesn\'t croak');
+ 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 string callback doesn\'t croak');
+ is($@, '', 'cast a wizard with a qualified string callback doesn\'t croak');
  my $x;
  eval {
   local $SIG{__WARN__} = sub { die };
   $x = $b;
  };
- is($@, '', 'string callback doesn\'t warn/croak');
- is($c, 1,  'string callback is called');
- is($x, $n, 'string callback returns the right thing');
+ 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;