adding ->parent_registry to the TC registry object
[gitmo/Moose.git] / t / 050_metaclasses / 003_moose_w_metaclass.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 5;
7 use Test::Exception;
8
9 BEGIN {
10     use_ok('Moose');           
11 }
12
13 =pod
14
15 This test demonstrates that Moose will respect 
16 a metaclass previously set with the metaclass 
17 pragma. 
18
19 It also checks an error condition where that 
20 metaclass must be a Moose::Meta::Class subclass
21 in order to work.
22
23 =cut
24
25
26 {
27     package Foo::Meta;
28     use strict;
29     use warnings;
30
31     use base 'Moose::Meta::Class';
32     
33     package Foo;
34     use strict;
35     use warnings;
36     use metaclass 'Foo::Meta';
37     ::use_ok('Moose');
38 }
39
40 isa_ok(Foo->meta, 'Foo::Meta');
41
42 {
43     package Bar::Meta;
44     use strict;
45     use warnings;
46     
47     use base 'Class::MOP::Class';
48     
49     package Bar;
50     use strict;
51     use warnings;
52     use metaclass 'Bar::Meta';
53     eval 'use Moose;';
54     ::ok($@, '... could not load moose without correct metaclass');
55     ::like($@, 
56         qr/^You already have a \&meta function\, but it does not return a Moose\:\:Meta\:\:Class/, 
57         '... got the right error too');
58 }