X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F34-glob.t;h=4592f4be904a63242805deaecbaf78847bdd8577;hb=b30ad18085c2c1d922eff05ee4801c38ad465807;hp=d5d62d81b8d1d02628c3de6c90c3773c8254f514;hpb=a8d75011f6169928695d9fda6cf5e8ebc1cc6e92;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/t/34-glob.t b/t/34-glob.t index d5d62d8..4592f4b 100644 --- a/t/34-glob.t +++ b/t/34-glob.t @@ -5,60 +5,47 @@ use warnings; use Test::More; -eval "use Symbol qw/gensym/"; -if ($@) { - plan skip_all => "Symbol::gensym required for testing magic for globs"; -} else { - plan tests => 7; - diag "Using Symbol $Symbol::VERSION" if defined $Symbol::VERSION; +BEGIN { + local $@; + if (eval "use Symbol qw; 1") { + plan tests => 2 * 12 + 1; + defined and diag "Using Symbol $_" for $Symbol::VERSION; + } else { + plan skip_all => "Symbol::gensym required for testing magic for globs"; + } } -use Variable::Magic qw/wizard cast dispell/; +use Variable::Magic qw; -my @c = (0) x 12; -my @x = (0) x 12; +my %get = VMG_COMPAT_GLOB_GET ? (get => 1) : (); -sub check { - is join(':', map { (defined) ? $_ : 'u' } @c[0 .. 11]), - join(':', map { (defined) ? $_ : 'u' } @x[0 .. 11]), - $_[0]; -} +use lib 't/lib'; +use Variable::Magic::TestWatcher; -my $i = -1; -my $wiz = wizard get => sub { ++$c[0] }, - set => sub { ++$c[1] }, - len => sub { ++$c[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] }; -check('glob : create wizard'); +my $wiz = init_watcher + [ qw ], + 'glob'; local *a = gensym(); -cast *a, $wiz; -check('glob : cast'); +watch { cast *a, $wiz } +{ }, 'cast'; + +watch { local *b = *a } +{ %get }, 'assign to'; -local *b = *a; -check('glob : assign to'); +watch { *a = \1 } +{ %get, set => 1 }, 'assign scalar slot'; +watch { *a = [ qw ] } +{ %get, set => 1 }, 'assign array slot'; +watch { *a = { u => 1 } } +{ %get, set => 1 }, 'assign hash slot'; +watch { *a = sub { } } +{ %get, set => 1 }, 'assign code slot'; -*a = gensym(); -++$x[1]; -check('glob : assign'); +watch { *a = gensym() } +{ %get, set => 1 }, 'assign glob'; -{ +watch { local *b = gensym(); - cast *b, $wiz; -} -check('glob : scope end'); + watch { cast *b, $wiz } +{ }, 'cast 2'; +} +{ }, 'scope end'; + +%get = () if "$]" >= 5.013007; -undef *a; -check('glob : undef'); +watch { undef *a } +{ %get }, 'undef'; -dispell *a, $wiz; -check('glob : dispell'); +watch { dispell *a, $wiz } +{ %get }, 'dispell';