adding the methods attribute
[gitmo/Class-MOP.git] / t / 015_metaclass_inheritance.t
CommitLineData
448af783 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 10;
7use Test::Exception;
8
9BEGIN {
10 use_ok('Class::MOP');
11}
12
13=pod
14
15Test that a default set up will cause metaclasses to inherit
16the 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
31my $foo_meta = Foo->meta;
32isa_ok($foo_meta, 'Class::MOP::Class');
33
34is($foo_meta->name, 'Foo', '... foo_meta->name == Foo');
35
36my $bar_meta = Bar->meta;
37isa_ok($bar_meta, 'Class::MOP::Class');
38
39is($bar_meta->name, 'Bar', '... bar_meta->name == Bar');
40isnt($bar_meta, $foo_meta, '... Bar->meta != Foo->meta');
41
42my $baz_meta = Baz->meta;
43isa_ok($baz_meta, 'Class::MOP::Class');
44
45is($baz_meta->name, 'Baz', '... baz_meta->name == Baz');
46isnt($baz_meta, $bar_meta, '... Baz->meta != Bar->meta');
47isnt($baz_meta, $foo_meta, '... Baz->meta != Foo->meta');