use Variable::Magic qw/wizard cast dispell VMG_UVAR/;
if (VMG_UVAR) {
- plan tests => 16;
+ plan tests => 20;
} else {
plan skip_all => 'No nice uvar magic for this perl';
}
my %h = (a => 1, b => 2, c => 3);
my $res = cast %h, $wiz;
-
ok($res, 'uvar : cast succeeded');
ok(check(), 'uvar : cast didn\'t triggered the callback');
ok(check(), 'uvar : delete non-existing key');
ok(!defined $x, 'uvar : delete non-existing key correctly');
+my $wiz2 = wizard 'fetch' => sub { 0 };
+my %h2 = (a => 37, b => 2, c => 3);
+cast %h2, $wiz2;
+
+eval {
+ local $SIG{__WARN__} = sub { die };
+ $x = $h2{a};
+};
+ok(!$@, 'uvar : fetch with incomplete magic');
+ok($x == 37, 'uvar : fetch with incomplete magic correctly');
+
+eval {
+ local $SIG{__WARN__} = sub { die };
+ $h2{a} = 73;
+};
+ok(!$@, 'uvar : store with incomplete magic');
+ok($h2{a} == 73, 'uvar : store with incomplete magic correctly');