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 0.88;
use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';

use lib 't/lib';

use OverloadingTests;

{
    package MyRole;
    use Moose::Role;

    has foo => ( is => 'ro' );

    # Note ordering here. If metaclass reinitialization nukes attributes, this
    # breaks.
    with 'Overloading::RoleWithOverloads';
}

{
    package MyClass;
    use Moose;

    with 'MyRole';
}

my $object = MyClass->new( foo => 21, message => 'foo' );

OverloadingTests::test_overloading_for_object( $object, 'MyClass object' );

is( $object->foo(), 21,
    'foo attribute in MyClass is still present (from MyRole)' );

done_testing();