6 use Test::More tests => 17;
8 use Variable::Magic qw<wizard cast dispell getdata>;
11 use Variable::Magic::TestGlobalDestruction;
17 wizard data => sub { $_[0] },
21 is($@, '', 'wizard creation error doesn\'t croak');
22 ok(defined $wiz, 'wizard is defined');
23 is(ref $wiz, 'SCALAR', 'wizard is a scalar ref');
25 my $res = eval { cast $wiz, $wiz };
26 is($@, '', 'cast on self doesn\'t croak');
27 ok($res, 'cast on self is valid');
30 is($c, 1, 'magic works correctly on self');
32 $res = eval { dispell $wiz, $wiz };
33 is($@, '', 'dispell on self doesn\'t croak');
34 ok($res, 'dispell on self is valid');
37 is($c, 1, 'magic is no longer invoked on self when dispelled');
39 $res = eval { cast $wiz, $wiz, $wiz };
40 is($@, '', 're-cast on self doesn\'t croak');
41 ok($res, 're-cast on self is valid');
43 $w = getdata $wiz, $wiz;
44 is($c, 1, 'getdata on magical self doesn\'t trigger callbacks');
46 $res = eval { dispell $wiz, $wiz };
47 is($@, '', 're-dispell on self doesn\'t croak');
48 ok($res, 're-dispell on self is valid');
50 $res = eval { cast $wiz, $wiz };
51 is($@, '', 're-re-cast on self doesn\'t croak');
52 ok($res, 're-re-cast on self is valid');
57 BEGIN { require Variable::Magic::TestDestroyRequired; }
59 is $@, '', 'wizard destruction at the end of BEGIN-time require doesn\'t panic';