none of this use_ok nonsense
[gitmo/Class-MOP.git] / t / 042_metaclass_incompatibility_dyn.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;
15 use base 'Class::MOP::Class';
16
17 package Bar::Meta;
18 use base 'Class::MOP::Class';
19
20 package FooBar::Meta;
21 use base 'Foo::Meta', 'Bar::Meta';
22}
23
24$@ = undef;
25eval {
26 package Foo;
27 metaclass->import('Foo::Meta');
28};
29ok(!$@, '... Foo.meta => Foo::Meta is compatible') || diag $@;
30
31$@ = undef;
32eval {
33 package Bar;
34 metaclass->import('Bar::Meta');
35};
36ok(!$@, '... Bar.meta => Bar::Meta is compatible') || diag $@;
37
38$@ = undef;
39eval {
40 package Foo::Foo;
41 metaclass->import('Bar::Meta');
42 Foo::Foo->meta->superclasses('Foo');
43};
44ok($@, '... Foo::Foo.meta => Bar::Meta is not compatible') || diag $@;
45
46$@ = undef;
47eval {
48 package Bar::Bar;
49 metaclass->import('Foo::Meta');
50 Bar::Bar->meta->superclasses('Bar');
51};
52ok($@, '... Bar::Bar.meta => Foo::Meta is not compatible') || diag $@;
53
54$@ = undef;
55eval {
56 package FooBar;
57 metaclass->import('FooBar::Meta');
58 FooBar->meta->superclasses('Foo');
59};
60ok(!$@, '... FooBar.meta => FooBar::Meta is compatible') || diag $@;
61
62$@ = undef;
63eval {
64 package FooBar2;
65 metaclass->import('FooBar::Meta');
66 FooBar2->meta->superclasses('Bar');
67};
68ok(!$@, '... FooBar2.meta => FooBar::Meta is compatible') || diag $@;
69
70