use strict; # This is automatically generated by author/import-moose-test.pl. # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!! use t::lib::MooseCompat; use warnings; use Test::More; $TODO = q{Mouse is not yet completed}; use Mouse::Meta (); { package My::Role; use Mouse::Role; } { package SomeClass; use Mouse -traits => 'My::Role'; } { package SubClassUseBase; use base qw/SomeClass/; } { package SubSubClassUseBase; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends 'SubClassUseBase'; } 'Can extend non-Mouse class with parent class that is a Mouse class with a meta role'; } { ok( SubSubClassUseBase->meta->meta->can('does_role') && SubSubClassUseBase->meta->meta->does_role('My::Role'), 'SubSubClassUseBase meta metaclass does the My::Role role' ); } # Note, remove metaclasses of the 'use base' classes after each test, # so that they have to be re-initialized - otherwise latter tests # would not demonstrate the original issue. Mouse::Util::remove_metaclass_by_name('SubClassUseBase'); { package OtherClass; use Mouse; } { package OtherSubClassUseBase; use base 'OtherClass'; } { package MultiParent1; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends qw( SubClassUseBase OtherSubClassUseBase ); } 'Can extend two non-Mouse classes with parents that are different Mouse metaclasses'; } { ok( MultiParent1->meta->meta->can('does_role') && MultiParent1->meta->meta->does_role('My::Role'), 'MultiParent1 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiParent2; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends qw( OtherSubClassUseBase SubClassUseBase ); } 'Can extend two non-Mouse classes with parents that are different Mouse metaclasses (reverse order)'; } { ok( MultiParent2->meta->meta->can('does_role') && MultiParent2->meta->meta->does_role('My::Role'), 'MultiParent2 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiParent3; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends qw( OtherClass SubClassUseBase ); } 'Can extend one Mouse class and one non-Mouse class'; } { ok( MultiParent3->meta->meta->can('does_role') && MultiParent3->meta->meta->does_role('My::Role'), 'MultiParent3 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiParent4; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends qw( SubClassUseBase OtherClass ); } 'Can extend one non-Mouse class and one Mouse class'; } { ok( MultiParent4->meta->meta->can('does_role') && MultiParent4->meta->meta->does_role('My::Role'), 'MultiParent4 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiChild1; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends 'MultiParent1'; } 'Can extend class that itself extends two non-Mouse classes with Mouse parents'; } { ok( MultiChild1->meta->meta->can('does_role') && MultiChild1->meta->meta->does_role('My::Role'), 'MultiChild1 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiChild2; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends 'MultiParent2'; } 'Can extend class that itself extends two non-Mouse classes with Mouse parents (reverse order)'; } { ok( MultiChild2->meta->meta->can('does_role') && MultiChild2->meta->meta->does_role('My::Role'), 'MultiChild2 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiChild3; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends 'MultiParent3'; } 'Can extend class that itself extends one Mouse and one non-Mouse parent'; } { ok( MultiChild3->meta->meta->can('does_role') && MultiChild3->meta->meta->does_role('My::Role'), 'MultiChild3 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); { package MultiChild4; use Mouse; use Test::More; $TODO = q{Mouse is not yet completed}; use Test::Exception; lives_ok { extends 'MultiParent4'; } 'Can extend class that itself extends one non-Mouse and one Mouse parent'; } { ok( MultiChild4->meta->meta->can('does_role') && MultiChild4->meta->meta->does_role('My::Role'), 'MultiChild4 meta metaclass does the My::Role role' ); } Mouse::Util::remove_metaclass_by_name($_) for qw( SubClassUseBase OtherSubClassUseBase ); done_testing;