X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F010_basics%2F014_create_anon.t;h=978c40a0ab18714198919b1e00d402f087189f02;hb=06d16be025b59d5bb71c237c6ab27c6053c2b615;hp=d324b4b4805cf2c3580e268e35dd4f816ef72d2a;hpb=7ff5653479c2bfc0794635f7fbade9bfe7bb2381;p=gitmo%2FMoose.git diff --git a/t/010_basics/014_create_anon.t b/t/010_basics/014_create_anon.t index d324b4b..978c40a 100644 --- a/t/010_basics/014_create_anon.t +++ b/t/010_basics/014_create_anon.t @@ -3,18 +3,18 @@ use strict; use warnings; -use Test::More tests => 8; +use Test::More; use Moose::Meta::Class; -{ +{ package Class; use Moose; - + package Foo; use Moose::Role; sub foo_role_applied { 1 } - + package Bar; use Moose::Role; sub bar_role_applied { 1 } @@ -27,12 +27,12 @@ use Moose::Meta::Class; superclasses => ['Class'], roles => ['Foo'], ); - + my $class_and_foo_2 = Moose::Meta::Class->create_anon_class( superclasses => ['Class'], roles => ['Foo'], ); - + isnt $class_and_foo_1->name, $class_and_foo_2->name, 'creating the same class twice without caching results in 2 classes'; @@ -47,18 +47,18 @@ use Moose::Meta::Class; roles => ['Foo'], cache => 1, ); - + my $class_and_foo_2 = Moose::Meta::Class->create_anon_class( superclasses => ['Class'], roles => ['Foo'], cache => 1, ); - + is $class_and_foo_1->name, $class_and_foo_2->name, 'with cache, the same class is the same class'; - + map { ok $_->name->foo_role_applied } ($class_and_foo_1, $class_and_foo_2); - + my $class_and_bar = Moose::Meta::Class->create_anon_class( superclasses => ['Class'], roles => ['Bar'], @@ -67,6 +67,21 @@ use Moose::Meta::Class; isnt $class_and_foo_1->name, $class_and_bar, 'class_and_foo and class_and_bar are different'; - + ok $class_and_bar->name->bar_role_applied; } + +# This tests that a cached metaclass can be reinitialized and still retain its +# metaclass object. +{ + my $name = Moose::Meta::Class->create_anon_class( + superclasses => ['Class'], + cache => 1, + )->name; + + $name->meta->reinitialize( $name ); + + can_ok( $name, 'meta' ); +} + +done_testing;