-use Test::More tests => 21;
-
-use Variable::Magic qw/wizard cast dispell VMG_COMPAT_ARRAY_PUSH_NOLEN VMG_COMPAT_ARRAY_UNDEF_CLEAR/;
-
-my @c = (0) x 12;
-my @x = (0) x 12;
-
-sub check {
- for (0 .. 11) { return 0 unless $c[$_] == $x[$_]; }
- return 1;
-}
-
-my $wiz = wizard get => sub { ++$c[0] },
- set => sub { ++$c[1] },
- len => sub { ++$c[2]; $_[2] },
- clear => sub { ++$c[3] },
- free => sub { ++$c[4] },
- copy => sub { ++$c[5] },
- dup => sub { ++$c[6] },
- local => sub { ++$c[7] },
- fetch => sub { ++$c[8] },
- store => sub { ++$c[9] },
- 'exists' => sub { ++$c[10] },
- 'delete' => sub { ++$c[11] };
-ok(check(), 'array : create wizard');
+use Test::More tests => 2 * 27 + 13 + 1;
+
+use Variable::Magic qw<
+ cast dispell
+ VMG_COMPAT_ARRAY_PUSH_NOLEN VMG_COMPAT_ARRAY_PUSH_NOLEN_VOID
+ VMG_COMPAT_ARRAY_UNSHIFT_NOLEN_VOID
+ VMG_COMPAT_ARRAY_UNDEF_CLEAR
+>;
+
+use lib 't/lib';
+use Variable::Magic::TestWatcher;
+
+my $wiz = init_watcher
+ [ qw<get set len clear free copy dup local fetch store exists delete> ],
+ 'array';