"method" keyword
[gitmo/MooseX-Role-Parameterized.git] / t / 002-role-block.t
CommitLineData
753682d4 1#!/usr/bin/env perl
2use strict;
3use warnings;
c389f1df 4use Test::More tests => 5;
753682d4 5use Test::Exception;
6
7my ($parameters, %args);
8
9do {
c389f1df 10 package MyPerson;
753682d4 11 use MooseX::Role::Parameterized;
12
c389f1df 13 parameter default_age => (
753682d4 14 is => 'rw',
15 isa => 'Int',
16 required => 1,
17 );
18
19 role {
20 ($parameters, %args) = @_;
c389f1df 21
22 has age => (
23 is => 'ro',
24 default => $parameters->default_age,
25 );
753682d4 26 };
27};
28
c389f1df 29ok(MyPerson->meta->has_role_generator, "MyPerson has a role generator");
753682d4 30
c389f1df 31my $role = MyPerson->meta->generate_role(
32 default_age => 7,
753682d4 33);
34
35isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role');
36
c389f1df 37is($parameters->default_age, 7);
38is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on");
39
40my $age_attr = $role->get_attribute('age');
41is($age_attr->{default}, 7, "role's age attribute has the right default");
753682d4 42