Commit | Line | Data |
27f2f43f |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
a28e50e4 |
6 | use Test::More; |
27f2f43f |
7 | use Test::Moose qw(does_ok); |
8 | |
9 | BEGIN { |
10 | package Foo::Meta::Role; |
11 | use Moose::Role; |
12 | Moose::Util::meta_class_alias |
13 | FooRole => 'Foo::Meta::Role'; |
14 | |
15 | package Foo::Meta::Class; |
16 | use Moose; |
17 | extends 'Moose::Meta::Class'; |
18 | with 'Foo::Meta::Role'; |
19 | Moose::Util::meta_class_alias |
20 | FooClass => 'Foo::Meta::Class'; |
21 | |
22 | package Foo::Meta::Role::Attribute; |
23 | use Moose::Role; |
24 | Moose::Util::meta_attribute_alias |
25 | FooAttrRole => 'Foo::Meta::Role::Attribute'; |
26 | |
27 | package Foo::Meta::Attribute; |
28 | use Moose; |
29 | extends 'Moose::Meta::Attribute'; |
30 | with 'Foo::Meta::Role::Attribute'; |
31 | Moose::Util::meta_attribute_alias |
32 | FooAttrClass => 'Foo::Meta::Attribute'; |
33 | |
34 | package Bar::Meta::Role; |
35 | use Moose::Role; |
36 | Moose::Util::meta_class_alias 'BarRole'; |
37 | |
38 | package Bar::Meta::Class; |
39 | use Moose; |
40 | extends 'Moose::Meta::Class'; |
41 | with 'Bar::Meta::Role'; |
42 | Moose::Util::meta_class_alias 'BarClass'; |
43 | |
44 | package Bar::Meta::Role::Attribute; |
45 | use Moose::Role; |
46 | Moose::Util::meta_attribute_alias 'BarAttrRole'; |
47 | |
48 | package Bar::Meta::Attribute; |
49 | use Moose; |
50 | extends 'Moose::Meta::Attribute'; |
51 | with 'Bar::Meta::Role::Attribute'; |
52 | Moose::Util::meta_attribute_alias 'BarAttrClass'; |
53 | } |
54 | |
55 | package FooWithMetaClass; |
56 | use Moose -metaclass => 'FooClass'; |
57 | |
58 | has bar => ( |
59 | metaclass => 'FooAttrClass', |
60 | is => 'ro', |
61 | ); |
62 | |
63 | |
64 | package FooWithMetaTrait; |
65 | use Moose -traits => 'FooRole'; |
66 | |
67 | has bar => ( |
68 | traits => [qw(FooAttrRole)], |
69 | is => 'ro', |
70 | ); |
71 | |
72 | package BarWithMetaClass; |
73 | use Moose -metaclass => 'BarClass'; |
74 | |
75 | has bar => ( |
76 | metaclass => 'BarAttrClass', |
77 | is => 'ro', |
78 | ); |
79 | |
80 | |
81 | package BarWithMetaTrait; |
82 | use Moose -traits => 'BarRole'; |
83 | |
84 | has bar => ( |
85 | traits => [qw(BarAttrRole)], |
86 | is => 'ro', |
87 | ); |
88 | |
89 | package main; |
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'); |
96 | |
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'); |
a28e50e4 |
103 | |
104 | done_testing; |