diff options
Diffstat (limited to 't/compat/composite_metaroles.t')
-rw-r--r-- | t/compat/composite_metaroles.t | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/t/compat/composite_metaroles.t b/t/compat/composite_metaroles.t new file mode 100644 index 0000000..3171624 --- /dev/null +++ b/t/compat/composite_metaroles.t @@ -0,0 +1,44 @@ +use strict; +use warnings; +use Test::More; +use Test::Fatal; +use Test::Moose; + +{ + package Foo::Role; + use Moose::Role; +} + +{ + package Bar::Role; + use Moose::Role; +} + +{ + package Parent; + use Moose; + Moose::Util::MetaRole::apply_metaroles( + for => __PACKAGE__, + class_metaroles => { class => ['Foo::Role'] }, + ); +} + +{ + package Child; + use Moose; + Moose::Util::MetaRole::apply_metaroles( + for => __PACKAGE__, + class_metaroles => { class => ['Foo::Role', 'Bar::Role'] }, + ); + ::is( ::exception { extends 'Parent' }, undef ); +} + +with_immutable { + isa_ok('Child', 'Parent'); + isa_ok(Child->meta, Parent->meta->_real_ref_name); + does_ok(Parent->meta, 'Foo::Role'); + does_ok(Child->meta, 'Foo::Role'); + does_ok(Child->meta, 'Bar::Role'); +} 'Parent', 'Child'; + +done_testing; |