Commit | Line | Data |
b6a00b82 |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
a28e50e4 |
4 | use Test::More; |
b6a00b82 |
5 | use Moose (); |
6 | |
7 | my $role = Moose::Meta::Role->create( |
2d5f3fab |
8 | 'MyItem::Role::Equipment', |
b6a00b82 |
9 | attributes => { |
10 | is_worn => { |
11 | is => 'rw', |
12 | isa => 'Bool', |
13 | }, |
14 | }, |
15 | methods => { |
16 | remove => sub { shift->is_worn(0) }, |
17 | }, |
18 | ); |
19 | |
20 | my $class = Moose::Meta::Class->create('MyItem::Armor::Helmet' => |
21 | roles => ['MyItem::Role::Equipment'], |
22 | ); |
23 | |
1c11ec03 |
24 | my $visored = $class->new_object(is_worn => 0); |
b6a00b82 |
25 | ok(!$visored->is_worn, "attribute, accessor was consumed"); |
26 | $visored->is_worn(1); |
27 | ok($visored->is_worn, "accessor was consumed"); |
28 | $visored->remove; |
29 | ok(!$visored->is_worn, "method was consumed"); |
30 | |
bf26e705 |
31 | ok(!$role->is_anon_role, "the role is not anonymous"); |
32 | |
0c3696e9 |
33 | my $composed_role = Moose::Meta::Role->create( |
34 | 'MyItem::Role::Equipment2', |
35 | roles => [ $role ], |
36 | ); |
37 | |
38 | ok($composed_role->does_role('MyItem::Role::Equipment2'), "Role composed into role"); |
39 | |
a28e50e4 |
40 | done_testing; |