X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F32-hash.t;h=54c23d8dc406841a989da2713c095854c826668f;hb=refs%2Ftags%2Fv0.08;hp=44510dc10224d09543105a9448f5cd20f4ac0b62;hpb=ad7c749baf8ebc2ff3e49d44b414f67f13f4ebf2;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/t/32-hash.t b/t/32-hash.t index 44510dc..54c23d8 100644 --- a/t/32-hash.t +++ b/t/32-hash.t @@ -1,14 +1,17 @@ #!perl -T +use strict; +use warnings; + use Test::More tests => 17; -use Variable::Magic qw/wizard cast dispell/; +use Variable::Magic qw/wizard cast dispell MGf_COPY VMG_UVAR/; -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; } @@ -16,7 +19,14 @@ my $wiz = wizard get => sub { ++$c[0] }, 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(), 'hash : create wizard'); my %n = map { $_ => int rand 1000 } qw/foo bar baz qux/; @@ -26,6 +36,8 @@ cast %a, $wiz; ok(check(), 'hash : cast'); my $b = $a{foo}; +++$x[5] if MGf_COPY; +++$x[8] if VMG_UVAR; ok(check(), 'hash : assign element to'); my %b = %a; @@ -38,16 +50,24 @@ $b = \%a; ok(check(), 'hash : reference'); my @b = @a{qw/bar qux/}; +$x[5] += 2 if MGf_COPY; +$x[8] += 2 if VMG_UVAR; ok(check(), 'hash : slice'); %a = map { $_ => 1 } qw/a b d/; ++$x[3]; +$x[5] += 3 if MGf_COPY && $^V && $^V gt 5.9.3; +$x[9] += 3 if VMG_UVAR; ok(check(), 'hash : assign'); $a{d} = 2; +++$x[5] if MGf_COPY; +++$x[9] if VMG_UVAR; ok(check(), 'hash : assign old element'); $a{c} = 3; +++$x[5] if MGf_COPY; +++$x[9] if VMG_UVAR; ok(check(), 'hash : assign new element'); $b = %a;