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<wizard cast>;
our $wiz;
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';
my $want = wantarray;
my @ret;
{
- local @{$got}{qw/get set/}; delete @{$got}{qw/get set/};
+ local @{$got}{qw<get set>};
+ delete @{$got}{qw<get set>};
if ($want) {
@ret = eval { $test->() };
} elsif (defined $want) {
} 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";
my Str $z;
check { $z = "bar" . $x } $z, { set => 1 }, 'scalar assign';
is $z, 'barabcfoo', 'scalar assign correctly';
+
+ zzz($z);
}