Include method name in immutable methods (fixes #49680)
[gitmo/Class-MOP.git] / t / 044_instance_metaclass_incompat_dyn.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;
c23184fc 38 metaclass->import('instance_metaclass' => 'Bar::Meta::Instance');
d82060fe 39 Foo::Foo->meta->superclasses('Foo');
40};
41ok($@, '... Foo::Foo.meta => Bar::Meta is not compatible') || diag $@;
42
43$@ = undef;
44eval {
45 package Bar::Bar;
c23184fc 46 metaclass->import('instance_metaclass' => 'Foo::Meta::Instance');
d82060fe 47 Bar::Bar->meta->superclasses('Bar');
48};
49ok($@, '... Bar::Bar.meta => Foo::Meta is not compatible') || diag $@;
50
51$@ = undef;
52eval {
53 package FooBar;
c23184fc 54 metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance');
d82060fe 55 FooBar->meta->superclasses('Foo');
56};
57ok(!$@, '... FooBar.meta => FooBar::Meta is compatible') || diag $@;
58
59$@ = undef;
60eval {
61 package FooBar2;
c23184fc 62 metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance');
d82060fe 63 FooBar2->meta->superclasses('Bar');
64};
65ok(!$@, '... FooBar2.meta => FooBar::Meta is compatible') || diag $@;
66
67