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