Add inline_rebless_instance to metaclass
[gitmo/Class-MOP.git] / t / 049_metaclass_reinitialize.t
CommitLineData
7975280a 1use strict;
2use warnings;
3
86a4d873 4use Test::More;
7975280a 5use Test::Exception;
6
7{
8 package Foo;
9 use metaclass;
10 sub foo {}
11}
12
13sub 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
20can_ok('Foo', 'meta');
21
22my $meta = Foo->meta;
23check_meta_sanity($meta);
24
25lives_ok {
26 $meta = $meta->reinitialize($meta->name);
27};
28check_meta_sanity($meta);
29
30lives_ok {
31 $meta = $meta->reinitialize($meta);
32};
33check_meta_sanity($meta);
34
35throws_ok {
36 $meta->reinitialize('');
37} qr/You must pass a package name or an existing Class::MOP::Package instance/;
38
39throws_ok {
40 $meta->reinitialize($meta->new_object);
41} qr/You must pass a package name or an existing Class::MOP::Package instance/;
86a4d873 42
43done_testing;