proper API docs for CMOP::Immutable
[gitmo/Class-MOP.git] / t / 070_immutable_metaclass.t
index c88d914..3814526 100644 (file)
@@ -1,14 +1,10 @@
-#!/usr/bin/perl
-
 use strict;
 use warnings;
 
-use Test::More tests => 83;
+use Test::More tests => 86;
 use Test::Exception;
 
-BEGIN {
-    use_ok('Class::MOP');
-}
+use Class::MOP;
 
 {
     package Foo;
@@ -51,6 +47,7 @@ BEGIN {
 
   my $immutable_metaclass = $transformer->immutable_metaclass;
   is($transformer->metaclass, $meta,      '... transformer has correct metaclass');
+  ok(!$transformer->inlined_constructor,  '... transformer says it did not inline the constructor');
   ok($immutable_metaclass->is_anon_class, '... immutable_metaclass is an anonymous class');
 
   #I don't understand why i need to ->meta here...
@@ -62,10 +59,11 @@ BEGIN {
 
   is_deeply(
             [ $immutable_metaclass->superclasses ],
-            [ $meta->blessed ],
+            [ Scalar::Util::blessed($meta) ],
             '... immutable_metaclass superclasses are correct'
            );
-  ok($immutable_metaclass->has_method('get_mutable_metaclass_name'));
+  ok($immutable_metaclass->has_method('get_mutable_metaclass_name'),
+     'immutable metaclass has get_mutable_metaclass_name method');
 
 }
 
@@ -76,10 +74,14 @@ BEGIN {
     ok($meta->is_mutable, '... our class is mutable');
     ok(!$meta->is_immutable, '... our class is not immutable');
 
+    my $transformer = $meta->get_immutable_transformer;
+
     lives_ok {
         $meta->make_immutable();
     } '... changed Foo to be immutable';
 
+    ok($transformer->inlined_constructor,  '... transformer says it did inline the constructor');
+    is($transformer, $meta->get_immutable_transformer, '... immutable transformer cache works');
     ok(!$meta->make_immutable, '... make immutable now returns nothing');
 
     ok(!$meta->is_mutable, '... our class is no longer mutable');
@@ -97,6 +99,8 @@ BEGIN {
     dies_ok { $meta->add_package_symbol()    } '... exception thrown as expected';
     dies_ok { $meta->remove_package_symbol() } '... exception thrown as expected';
 
+    lives_ok { $meta->identifier() } '... no exception for get_package_symbol special case';
+
     my @supers;
     lives_ok {
         @supers = $meta->superclasses;