#!perl -T
+use strict;
+use warnings;
+
use Test::More tests => 21;
use Variable::Magic qw/wizard cast dispell/;
-my @c = (0) x 5;
-my @x = (0) x 5;
+my @c = (0) x 12;
+my @x = (0) x 12;
sub check {
- for (0 .. 4) { return 0 unless $c[$_] == $x[$_]; }
+ for (0 .. 11) { return 0 unless $c[$_] == $x[$_]; }
return 1;
}
set => sub { ++$c[1] },
len => sub { ++$c[2]; $_[2] },
clear => sub { ++$c[3] },
- free => sub { ++$c[4] };
+ 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');
my @n = map { int rand 1000 } 1 .. 5;
ok(check(), 'array : assign new element');
push @a, 'x';
-++$x[1]; ++$x[2];
+++$x[1]; ++$x[2] unless $^V && $^V gt 5.9.2; # since 5.9.3
ok(check(), 'array : push');
pop @a;
{
my @b = @n;
-# cast @b, $wiz;
+ cast @b, $wiz;
}
-#++$x[4];
+++$x[4];
ok(check(), 'array : scope end');
undef @a;
+++$x[3] if $^V && $^V gt 5.9.4; # since 5.9.5 - see #43357
ok(check(), 'array : undef');
dispell @a, $wiz;