-#!/usr/bin/perl
-
use strict;
use warnings;
-use Test::More tests => 84;
+use Test::More tests => 86;
use Test::Exception;
-BEGIN {
- use_ok('Class::MOP');
-}
+use Class::MOP;
{
package Foo;
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...
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');
}
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');
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;