Commit | Line | Data |
d82060fe |
1 | use strict; |
2 | use warnings; |
3 | |
efd3d14c |
4 | use Test::More tests => 6; |
d82060fe |
5 | |
efd3d14c |
6 | BEGIN {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; |
22 | eval { |
23 | package Foo; |
c23184fc |
24 | metaclass->import('instance_metaclass' => 'Foo::Meta::Instance'); |
d82060fe |
25 | }; |
26 | ok(!$@, '... Foo.meta => Foo::Meta is compatible') || diag $@; |
27 | |
28 | $@ = undef; |
29 | eval { |
30 | package Bar; |
c23184fc |
31 | metaclass->import('instance_metaclass' => 'Bar::Meta::Instance'); |
d82060fe |
32 | }; |
33 | ok(!$@, '... Bar.meta => Bar::Meta is compatible') || diag $@; |
34 | |
35 | $@ = undef; |
36 | eval { |
37 | package Foo::Foo; |
38 | use base 'Foo'; |
c23184fc |
39 | metaclass->import('instance_metaclass' => 'Bar::Meta::Instance'); |
d82060fe |
40 | }; |
41 | ok($@, '... Foo::Foo.meta => Bar::Meta is not compatible') || diag $@; |
42 | |
43 | $@ = undef; |
44 | eval { |
45 | package Bar::Bar; |
46 | use base 'Bar'; |
c23184fc |
47 | metaclass->import('instance_metaclass' => 'Foo::Meta::Instance'); |
d82060fe |
48 | }; |
49 | ok($@, '... Bar::Bar.meta => Foo::Meta is not compatible') || diag $@; |
50 | |
51 | $@ = undef; |
52 | eval { |
53 | package FooBar; |
54 | use base 'Foo'; |
c23184fc |
55 | metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance'); |
d82060fe |
56 | }; |
57 | ok(!$@, '... FooBar.meta => FooBar::Meta is compatible') || diag $@; |
58 | |
59 | $@ = undef; |
60 | eval { |
61 | package FooBar2; |
62 | use base 'Bar'; |
c23184fc |
63 | metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance'); |
d82060fe |
64 | }; |
65 | ok(!$@, '... FooBar2.meta => FooBar::Meta is compatible') || diag $@; |
66 | |
67 | |