#!perl -T
-use Test::More tests => 4;
+use strict;
+use warnings;
-use Variable::Magic qw/wizard cast/;
+use Test::More tests => 2 * 5 + 1;
-my $c = 0;
-my $wiz = wizard free => sub { ++$c };
-ok($c == 0, 'free : create wizard');
+use Variable::Magic qw/cast/;
+
+use lib 't/lib';
+use Variable::Magic::TestWatcher;
+
+my $wiz = init_watcher 'free', 'free';
my $n = int rand 1000;
-{
+watch {
my $a = $n;
-
- cast $a, $wiz;
- ok($c == 0, 'free : cast');
-}
-ok($c == 1, 'free : deletion at the end of the scope');
+ watch { cast $a, $wiz } { }, 'cast';
+} { free => 1 }, 'deletion at the end of the scope';
my $a = $n;
-undef $n;
-ok($c == 1, 'free : explicit deletion with undef()');
+watch { cast $a, $wiz } { }, 'cast 2';
+watch { undef $a } { }, 'explicit deletion with undef()';
+
+$Variable::Magic::TestWatcher::mg_end = { free => 1 };