7 use Test::Mouse qw(does_ok);
9 BEGIN{ $SIG{__WARN__} = \&Carp::confess }
12 package MyMouseX::Foo::Method;
17 package MyMouseX::Foo::Class;
22 package MyMouseX::Bar::Method;
27 package MyMouseX::Bar::Class;
34 package MyMouseX::Foo;
36 use Mouse::Util::MetaRole;
38 Mouse::Exporter->setup_import_methods(
42 my(undef, %options) = @_;
44 my $meta = Mouse->init_meta(%options);
45 Mouse::Util::MetaRole::apply_metaroles(
46 for => $options{for_class},
48 class => ['MyMouseX::Foo::Class'],
49 method => ['MyMouseX::Foo::Method'],
54 $INC{'MyMouseX/Foo.pm'} = __FILE__;
56 package MyMouseX::Bar;
58 use Mouse::Util::MetaRole;
60 Mouse::Exporter->setup_import_methods(
64 my(undef, %options) = @_;
66 my $meta = Mouse->init_meta(%options);
67 Mouse::Util::MetaRole::apply_metaroles(
68 for => $options{for_class},
70 class => ['MyMouseX::Bar::Class'],
71 method => ['MyMouseX::Bar::Method'],
76 $INC{'MyMouseX/Bar.pm'} = __FILE__;
92 #extends qw(ClassB ClassA);
98 does_ok(ClassA->meta, 'MyMouseX::Foo::Class');
99 does_ok(ClassA->meta->get_method('a'), 'MyMouseX::Foo::Method');
101 does_ok(ClassB->meta, 'MyMouseX::Bar::Class');
102 does_ok(ClassB->meta->get_method('b'), 'MyMouseX::Bar::Method');
106 does_ok(ClassC->meta, 'MyMouseX::Foo::Class');
109 local $TODO = 'Metaclass incompatibility is not completed';
110 does_ok(ClassC->meta->get_method('c'), 'MyMouseX::Foo::Method');
112 #does_ok(ClassC->meta, 'MyMouseX::Bar::Class');
113 #does_ok(ClassC->meta->get_method('c'), 'MyMouseX::Bar::Method');