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