e85e742f14c4191ceec585f4d1b7eea45c924b29
[gitmo/Class-MOP.git] / t / 044_instance_metaclass_incompat_dyn.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 6;
7
8 BEGIN {use metaclass;    
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;
26     metaclass->import('instance_metaclass' => 'Foo::Meta::Instance');
27 };
28 ok(!$@, '... Foo.meta => Foo::Meta is compatible') || diag $@;
29
30 $@ = undef;
31 eval {
32     package Bar;
33     metaclass->import('instance_metaclass' => 'Bar::Meta::Instance');
34 };
35 ok(!$@, '... Bar.meta => Bar::Meta is compatible') || diag $@;
36
37 $@ = undef;
38 eval {
39     package Foo::Foo;
40     metaclass->import('instance_metaclass' => 'Bar::Meta::Instance');
41     Foo::Foo->meta->superclasses('Foo');    
42 };
43 ok($@, '... Foo::Foo.meta => Bar::Meta is not compatible') || diag $@;
44
45 $@ = undef;
46 eval {
47     package Bar::Bar;
48     metaclass->import('instance_metaclass' => 'Foo::Meta::Instance');  
49     Bar::Bar->meta->superclasses('Bar');
50 };
51 ok($@, '... Bar::Bar.meta => Foo::Meta is not compatible') || diag $@;
52
53 $@ = undef;
54 eval {
55     package FooBar;
56     metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance');   
57     FooBar->meta->superclasses('Foo');    
58 };
59 ok(!$@, '... FooBar.meta => FooBar::Meta is compatible') || diag $@;
60
61 $@ = undef;
62 eval {
63     package FooBar2;
64     metaclass->import('instance_metaclass' => 'FooBar::Meta::Instance');   
65     FooBar2->meta->superclasses('Bar');    
66 };
67 ok(!$@, '... FooBar2.meta => FooBar::Meta is compatible') || diag $@;
68
69