diff options
Diffstat (limited to 't/cmop/metaclass_inheritance.t')
-rw-r--r-- | t/cmop/metaclass_inheritance.t | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/t/cmop/metaclass_inheritance.t b/t/cmop/metaclass_inheritance.t new file mode 100644 index 0000000..0cc2a5c --- /dev/null +++ b/t/cmop/metaclass_inheritance.t @@ -0,0 +1,43 @@ +use strict; +use warnings; + +use Test::More; +use Class::MOP; + +=pod + +Test that a default set up will cause metaclasses to inherit +the same metaclass type, but produce different metaclasses. + +=cut + +{ + package Foo; + use metaclass; + + package Bar; + use parent -norequire => 'Foo'; + + package Baz; + use parent -norequire => 'Bar'; +} + +my $foo_meta = Foo->meta; +isa_ok($foo_meta, 'Class::MOP::Class'); + +is($foo_meta->name, 'Foo', '... foo_meta->name == Foo'); + +my $bar_meta = Bar->meta; +isa_ok($bar_meta, 'Class::MOP::Class'); + +is($bar_meta->name, 'Bar', '... bar_meta->name == Bar'); +isnt($bar_meta, $foo_meta, '... Bar->meta != Foo->meta'); + +my $baz_meta = Baz->meta; +isa_ok($baz_meta, 'Class::MOP::Class'); + +is($baz_meta->name, 'Baz', '... baz_meta->name == Baz'); +isnt($baz_meta, $bar_meta, '... Baz->meta != Bar->meta'); +isnt($baz_meta, $foo_meta, '... Baz->meta != Foo->meta'); + +done_testing; |