Commit | Line | Data |
38bf2a25 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More; |
5 | use Test::Fatal; |
6 | |
7 | use Class::MOP; |
8 | |
9 | =pod |
10 | |
11 | Test that a default set up will cause metaclasses to inherit |
12 | the same metaclass type, but produce different metaclasses. |
13 | |
14 | =cut |
15 | |
16 | { |
17 | package Foo; |
18 | use metaclass; |
19 | |
20 | package Bar; |
21 | use base 'Foo'; |
22 | |
23 | package Baz; |
24 | use base 'Bar'; |
25 | } |
26 | |
27 | my $foo_meta = Foo->meta; |
28 | isa_ok($foo_meta, 'Class::MOP::Class'); |
29 | |
30 | is($foo_meta->name, 'Foo', '... foo_meta->name == Foo'); |
31 | |
32 | my $bar_meta = Bar->meta; |
33 | isa_ok($bar_meta, 'Class::MOP::Class'); |
34 | |
35 | is($bar_meta->name, 'Bar', '... bar_meta->name == Bar'); |
36 | isnt($bar_meta, $foo_meta, '... Bar->meta != Foo->meta'); |
37 | |
38 | my $baz_meta = Baz->meta; |
39 | isa_ok($baz_meta, 'Class::MOP::Class'); |
40 | |
41 | is($baz_meta->name, 'Baz', '... baz_meta->name == Baz'); |
42 | isnt($baz_meta, $bar_meta, '... Baz->meta != Bar->meta'); |
43 | isnt($baz_meta, $foo_meta, '... Baz->meta != Foo->meta'); |
44 | |
45 | done_testing; |