Add what does moose stand for section back to docs
[gitmo/Moose.git] / t / metaclasses / metaclass_parameterized_traits.t
CommitLineData
ea505fce 1#!/usr/bin/env perl
2use strict;
3use warnings;
a28e50e4 4use Test::More;
ea505fce 5
6{
7 package My::Trait;
8 use Moose::Role;
9
10 sub reversed_name {
11 my $self = shift;
12 scalar reverse $self->name;
13 }
14}
15
16{
17 package My::Class;
18 use Moose -traits => [
19 'My::Trait' => {
c8b8d92f 20 -alias => {
ea505fce 21 reversed_name => 'enam',
22 },
23 },
24 ];
25}
26
386c056b 27{
28 package My::Other::Class;
29 use Moose -traits => [
30 'My::Trait' => {
c8b8d92f 31 -alias => {
386c056b 32 reversed_name => 'reversed',
33 },
c8b8d92f 34 -excludes => 'reversed_name',
386c056b 35 },
36 ];
37}
38
39my $meta = My::Class->meta;
40is($meta->enam, 'ssalC::yM', 'parameterized trait applied');
41ok(!$meta->can('reversed'), "the method was not installed under the other class' alias");
42
43my $other_meta = My::Other::Class->meta;
44is($other_meta->reversed, 'ssalC::rehtO::yM', 'parameterized trait applied');
45ok(!$other_meta->can('enam'), "the method was not installed under the other class' alias");
46ok(!$other_meta->can('reversed_name'), "the method was not installed under the original name when that was excluded");
ea505fce 47
a28e50e4 48done_testing;