X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F22-magic.t;h=8fef0f06d77563c8765cf9c64047c69c57d1bd80;hb=46563a4451087c17e95a7ec9d33eb7ff0cc674d4;hp=d4212534ebf0343a7522e2f23b850676b466943e;hpb=06cb3f3506161a118dc440264dcabcd612b9432c;p=perl%2Fmodules%2FLexical-Types.git diff --git a/t/22-magic.t b/t/22-magic.t index d421253..8fef0f0 100644 --- a/t/22-magic.t +++ b/t/22-magic.t @@ -5,15 +5,17 @@ use warnings; use Test::More; +use lib 't/lib'; +use VPIT::TestHelpers; + BEGIN { - plan skip_all => 'Variable::Magic required to test magic' - unless eval "use Variable::Magic 0.31; 1"; + load_or_skip_all('Variable::Magic', undef, [ ]); } { package Lexical::Types::Test::Str; - use Variable::Magic qw/wizard cast/; + use Variable::Magic qw; our $wiz; BEGIN { @@ -21,14 +23,14 @@ BEGIN { get => sub { ++$_[1]->{get}; () }, set => sub { ++$_[1]->{set}; () }; } - + sub TYPEDSCALAR { cast $_[1], $wiz, $_[2]; () } } { package Str; } BEGIN { - plan tests => 2 * 6; + plan tests => 2 * 8; } use Lexical::Types as => 'Lexical::Types::Test'; @@ -39,7 +41,8 @@ sub check (&$$;$) { my $want = wantarray; my @ret; { - local @{$got}{qw/get set/}; delete @{$got}{qw/get set/}; + local @{$got}{qw}; + delete @{$got}{qw}; if ($want) { @ret = eval { $test->() }; } elsif (defined $want) { @@ -47,11 +50,18 @@ sub check (&$$;$) { } else { eval { $test->() }; } + local $Test::Builder::Level = $Test::Builder::Level + 1; is_deeply $got, $exp, $desc; } return $want ? @ret : $ret[0]; } +sub zzz { + my $d = Variable::Magic::getdata($_[0], $Lexical::Types::Test::Str::wiz); + isnt $d, undef, 'typed lexicals are tagged'; + is ref($d), 'HASH', 'typed lexicals are correctly tagged'; +} + for (1 .. 2) { my Str $x = "abc"; @@ -64,4 +74,6 @@ for (1 .. 2) { my Str $z; check { $z = "bar" . $x } $z, { set => 1 }, 'scalar assign'; is $z, 'barabcfoo', 'scalar assign correctly'; + + zzz($z); }