adding another test
[gitmo/Class-MOP.git] / t / 015_metaclass_inheritance.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 10;
7 use Test::Exception;
8
9 BEGIN {
10     use_ok('Class::MOP');
11 }
12
13 =pod
14
15 Test that a default set up will cause metaclasses to inherit 
16 the same metaclass type, but produce different metaclasses.
17
18 =cut
19
20 {
21     package Foo;
22     use metaclass;
23     
24     package Bar;
25     use base 'Foo';
26     
27     package Baz;
28     use base 'Bar';
29 }
30
31 my $foo_meta = Foo->meta;
32 isa_ok($foo_meta, 'Class::MOP::Class');
33
34 is($foo_meta->name, 'Foo', '... foo_meta->name == Foo');
35
36 my $bar_meta = Bar->meta;
37 isa_ok($bar_meta, 'Class::MOP::Class');
38
39 is($bar_meta->name, 'Bar', '... bar_meta->name == Bar');
40 isnt($bar_meta, $foo_meta, '... Bar->meta != Foo->meta');
41
42 my $baz_meta = Baz->meta;
43 isa_ok($baz_meta, 'Class::MOP::Class');
44
45 is($baz_meta->name, 'Baz', '... baz_meta->name == Baz');
46 isnt($baz_meta, $bar_meta, '... Baz->meta != Bar->meta');
47 isnt($baz_meta, $foo_meta, '... Baz->meta != Foo->meta');