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