Commit | Line | Data |
c9ee520d |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
a28e50e4 |
4 | use Test::More; |
c9ee520d |
5 | use Moose (); |
6 | |
7 | my $role = Moose::Meta::Role->create_anon_role( |
8 | attributes => { |
9 | is_worn => { |
10 | is => 'rw', |
11 | isa => 'Bool', |
12 | }, |
13 | }, |
14 | methods => { |
15 | remove => sub { shift->is_worn(0) }, |
16 | }, |
17 | ); |
18 | |
19 | my $class = Moose::Meta::Class->create('MyItem::Armor::Helmet'); |
20 | $role->apply($class); |
21 | # XXX: Moose::Util::apply_all_roles doesn't cope with references yet |
22 | |
1c11ec03 |
23 | my $visored = $class->new_object(is_worn => 0); |
c9ee520d |
24 | ok(!$visored->is_worn, "attribute, accessor was consumed"); |
25 | $visored->is_worn(1); |
26 | ok($visored->is_worn, "accessor was consumed"); |
27 | $visored->remove; |
28 | ok(!$visored->is_worn, "method was consumed"); |
29 | |
bf26e705 |
30 | like($role->name, qr/^Moose::Meta::Role::__ANON__::SERIAL::\d+$/, ""); |
31 | ok($role->is_anon_role, "the role knows it's anonymous"); |
32 | |
08478633 |
33 | ok(Class::MOP::is_class_loaded(Moose::Meta::Role->create_anon_role->name), "creating an anonymous role satisifes is_class_loaded"); |
c8d9f1e2 |
34 | ok(Class::MOP::class_of(Moose::Meta::Role->create_anon_role->name), "creating an anonymous role satisifes class_of"); |
08478633 |
35 | |
a28e50e4 |
36 | done_testing; |