Include method name in immutable methods (fixes #49680)
[gitmo/Class-MOP.git] / t / 043_instance_metaclass_incompat.t
CommitLineData
d82060fe 1use strict;
2use warnings;
3
efd3d14c 4use Test::More tests => 6;
d82060fe 5
efd3d14c 6BEGIN {use metaclass;
d82060fe 7}
8
9# meta classes
10{
11 package Foo::Meta::Instance;
12 use base 'Class::MOP::Instance';
13
14 package Bar::Meta::Instance;
15 use base 'Class::MOP::Instance';
16
17 package FooBar::Meta::Instance;
18 use base 'Foo::Meta::Instance', 'Bar::Meta::Instance';
19}
20
21$@ = undef;
22eval {
23 package Foo;
c23184fc 24 metaclass->import('instance_metaclass' => 'Foo::Meta::Instance');
d82060fe 25};
26ok(!$@, '... Foo.meta => Foo::Meta is compatible') || diag $@;
27
28$@ = undef;
29eval {
30 package Bar;
c23184fc 31 metaclass->import('instance_metaclass' => 'Bar::Meta::Instance');
d82060fe 32};
33ok(!$@, '... Bar.meta => Bar::Meta is compatible') || diag $@;
34
35$@ = undef;
36eval {
37 package Foo::Foo;
38 use base 'Foo';
c23184fc 39 metaclass->import('instance_metaclass' => 'Bar::Meta::Instance');
d82060fe 40};
41ok($@, '... Foo::Foo.meta => Bar::Meta is not compatible') || diag $@;
42
43$@ = undef;
44eval {
45 package Bar::Bar;
46 use base 'Bar';
c23184fc 47 metaclass->import('instance_metaclass' => 'Foo::Meta::Instance');
d82060fe 48};
49ok($@, '... Bar::Bar.meta => Foo::Meta is not compatible') || diag $@;
50
51$@ = undef;
52eval {
53 package FooBar;
54 use base 'Foo';
c23184fc 55 metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance');
d82060fe 56};
57ok(!$@, '... FooBar.meta => FooBar::Meta is compatible') || diag $@;
58
59$@ = undef;
60eval {
61 package FooBar2;
62 use base 'Bar';
c23184fc 63 metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance');
d82060fe 64};
65ok(!$@, '... FooBar2.meta => FooBar::Meta is compatible') || diag $@;
66
67