The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;

use MooseX::LexicalRoleApplication;

use FindBin;
use lib "$FindBin::Bin/lib";

use SomeClass;
use SomeRole;

my $o = SomeClass->new({ moo => 0xaffe });

ok(!$o->can('foo'));
ok( $o->can('moo'));

{
    ok(!$o->can('foo'));
    ok( $o->can('moo'));

    my $scope = MooseX::LexicalRoleApplication->apply(SomeRole->meta, $o, { foo => 'bar' });

    ok( $o->can('foo'));
    ok( $o->can('moo'));

    is($o->foo, 'bar');
    is($o->moo, 0xaffe);
}

ok(!$o->can('foo'));
ok( $o->can('moo'));

ok(!exists $o->{foo});
is($o->moo, 0xaffe);

done_testing;