X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F070_immutable_metaclass.t;h=c88d91404a6a39e644f24ed92d054f93e711a57d;hb=565f0cbbe40a1aa08b7b85574c408dc7e58b2211;hp=b0294bef31a5c8f385a8dcfc12294336efa5521f;hpb=0ac992ee5992b68d0019cf1c1fd16000adf9b71f;p=gitmo%2FClass-MOP.git diff --git a/t/070_immutable_metaclass.t b/t/070_immutable_metaclass.t index b0294be..c88d914 100644 --- a/t/070_immutable_metaclass.t +++ b/t/070_immutable_metaclass.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 73; +use Test::More tests => 83; use Test::Exception; BEGIN { @@ -41,6 +41,35 @@ BEGIN { } { + my $meta = Foo->meta; + + my $transformer; + lives_ok{ $transformer = $meta->create_immutable_transformer } + "Created immutable transformer"; + isa_ok($transformer, 'Class::MOP::Immutable', '... transformer isa Class::MOP::Immutable'); + my $methods = $transformer->create_methods_for_immutable_metaclass; + + my $immutable_metaclass = $transformer->immutable_metaclass; + is($transformer->metaclass, $meta, '... transformer has correct metaclass'); + ok($immutable_metaclass->is_anon_class, '... immutable_metaclass is an anonymous class'); + + #I don't understand why i need to ->meta here... + my $obj = $immutable_metaclass->name; + ok(!$obj->is_mutable, '... immutable_metaclass is not mutable'); + ok($obj->is_immutable, '... immutable_metaclass is immutable'); + ok(!$obj->make_immutable, '... immutable_metaclass make_mutable is noop'); + is($obj->meta, $immutable_metaclass, '... immutable_metaclass meta hack works'); + + is_deeply( + [ $immutable_metaclass->superclasses ], + [ $meta->blessed ], + '... immutable_metaclass superclasses are correct' + ); + ok($immutable_metaclass->has_method('get_mutable_metaclass_name')); + +} + +{ my $meta = Foo->meta; is($meta->name, 'Foo', '... checking the Foo metaclass');