Require Dist::Zilla 4.200016+
[gitmo/Moose.git] / t / roles / create_role.t
CommitLineData
b6a00b82 1#!/usr/bin/env perl
2use strict;
3use warnings;
a28e50e4 4use Test::More;
b6a00b82 5use Moose ();
6
7my $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
20my $class = Moose::Meta::Class->create('MyItem::Armor::Helmet' =>
21 roles => ['MyItem::Role::Equipment'],
22);
23
1c11ec03 24my $visored = $class->new_object(is_worn => 0);
b6a00b82 25ok(!$visored->is_worn, "attribute, accessor was consumed");
26$visored->is_worn(1);
27ok($visored->is_worn, "accessor was consumed");
28$visored->remove;
29ok(!$visored->is_worn, "method was consumed");
30
bf26e705 31ok(!$role->is_anon_role, "the role is not anonymous");
32
0c3696e9 33my $composed_role = Moose::Meta::Role->create(
34 'MyItem::Role::Equipment2',
35 roles => [ $role ],
36);
37
38ok($composed_role->does_role('MyItem::Role::Equipment2'), "Role composed into role");
39
a28e50e4 40done_testing;