7 use Test::Moose qw(does_ok);
10 package Foo::Meta::Role;
12 Moose::Util::meta_class_alias
13 FooRole => 'Foo::Meta::Role';
15 package Foo::Meta::Class;
17 extends 'Moose::Meta::Class';
18 with 'Foo::Meta::Role';
19 Moose::Util::meta_class_alias
20 FooClass => 'Foo::Meta::Class';
22 package Foo::Meta::Role::Attribute;
24 Moose::Util::meta_attribute_alias
25 FooAttrRole => 'Foo::Meta::Role::Attribute';
27 package Foo::Meta::Attribute;
29 extends 'Moose::Meta::Attribute';
30 with 'Foo::Meta::Role::Attribute';
31 Moose::Util::meta_attribute_alias
32 FooAttrClass => 'Foo::Meta::Attribute';
34 package Bar::Meta::Role;
36 Moose::Util::meta_class_alias 'BarRole';
38 package Bar::Meta::Class;
40 extends 'Moose::Meta::Class';
41 with 'Bar::Meta::Role';
42 Moose::Util::meta_class_alias 'BarClass';
44 package Bar::Meta::Role::Attribute;
46 Moose::Util::meta_attribute_alias 'BarAttrRole';
48 package Bar::Meta::Attribute;
50 extends 'Moose::Meta::Attribute';
51 with 'Bar::Meta::Role::Attribute';
52 Moose::Util::meta_attribute_alias 'BarAttrClass';
55 package FooWithMetaClass;
56 use Moose -metaclass => 'FooClass';
59 metaclass => 'FooAttrClass',
64 package FooWithMetaTrait;
65 use Moose -traits => 'FooRole';
68 traits => [qw(FooAttrRole)],
72 package BarWithMetaClass;
73 use Moose -metaclass => 'BarClass';
76 metaclass => 'BarAttrClass',
81 package BarWithMetaTrait;
82 use Moose -traits => 'BarRole';
85 traits => [qw(BarAttrRole)],
90 my $fwmc_meta = FooWithMetaClass->meta;
91 my $fwmt_meta = FooWithMetaTrait->meta;
92 isa_ok($fwmc_meta, 'Foo::Meta::Class');
93 isa_ok($fwmc_meta->get_attribute('bar'), 'Foo::Meta::Attribute');
94 does_ok($fwmt_meta, 'Foo::Meta::Role');
95 does_ok($fwmt_meta->get_attribute('bar'), 'Foo::Meta::Role::Attribute');
97 my $bwmc_meta = BarWithMetaClass->meta;
98 my $bwmt_meta = BarWithMetaTrait->meta;
99 isa_ok($bwmc_meta, 'Bar::Meta::Class');
100 isa_ok($bwmc_meta->get_attribute('bar'), 'Bar::Meta::Attribute');
101 does_ok($bwmt_meta, 'Bar::Meta::Role');
102 does_ok($bwmt_meta->get_attribute('bar'), 'Bar::Meta::Role::Attribute');