Update tests
[gitmo/Mouse.git] / t / 050_metaclasses / 051_metarole_on_anon.t
CommitLineData
6475f69d 1use strict;
2use warnings;
3
4use Test::More;
5use Test::Exception;
6
7use Mouse ();
8use Mouse::Meta::Class;
9use Mouse::Util::MetaRole;
10
11{
12 package Foo;
13 use Mouse;
14}
15
16{
17 package Role::Bar;
18 use Mouse::Role;
19}
20
21my $anon_name;
22
23{
24 my $anon_class = Mouse::Meta::Class->create_anon_class(
25 superclasses => ['Foo'],
26 cache => 1,
27 );
28
29 $anon_name = $anon_class->name;
30
31 ok( $anon_name->meta, 'anon class has a metaclass' );
32}
33
34ok(
35 $anon_name->meta,
36 'cached anon class still has a metaclass after \$anon_class goes out of scope'
37);
38
39Mouse::Util::MetaRole::apply_metaroles(
40 for => $anon_name,
41 class_metaroles => {
42 class => ['Role::Bar'],
43 },
44);
45
46BAIL_OUT('Cannot continue if the anon class does not have a metaclass')
47 unless $anon_name->can('meta');
48
49my $meta = $anon_name->meta;
50ok( $meta, 'cached anon class still has a metaclass applying a metarole' );
51
52done_testing;