don't try to fix compatible metaclasses
[gitmo/Class-MOP.git] / t / 049_metaclass_reinitialize.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Exception;
6
7 {
8     package Foo;
9     use metaclass;
10     sub foo {}
11 }
12
13 sub check_meta_sanity {
14     my ($meta) = @_;
15     isa_ok($meta, 'Class::MOP::Class');
16     is($meta->name, 'Foo');
17     ok($meta->has_method('foo'));
18 }
19
20 can_ok('Foo', 'meta');
21
22 my $meta = Foo->meta;
23 check_meta_sanity($meta);
24
25 lives_ok {
26     $meta = $meta->reinitialize($meta->name);
27 };
28 check_meta_sanity($meta);
29
30 lives_ok {
31     $meta = $meta->reinitialize($meta);
32 };
33 check_meta_sanity($meta);
34
35 throws_ok {
36     $meta->reinitialize('');
37 } qr/You must pass a package name or an existing Class::MOP::Package instance/;
38
39 throws_ok {
40     $meta->reinitialize($meta->new_object);
41 } qr/You must pass a package name or an existing Class::MOP::Package instance/;
42
43 done_testing;