Commit | Line | Data |
41888e7d |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
8aba926d |
4 | |
41888e7d |
5 | use Test::More tests => 5; |
6 | |
7 | { |
8 | package My::Trait; |
9 | use Mouse::Role; |
10 | |
11 | sub reversed_name { |
12 | my $self = shift; |
13 | scalar reverse $self->name; |
14 | } |
15 | } |
16 | |
17 | { |
18 | package My::Class; |
19 | use Mouse -traits => [ |
20 | 'My::Trait' => { |
21 | -alias => { |
22 | reversed_name => 'enam', |
23 | }, |
24 | }, |
25 | ]; |
26 | } |
27 | |
28 | { |
29 | package My::Other::Class; |
30 | use Mouse -traits => [ |
31 | 'My::Trait' => { |
32 | -alias => { |
33 | reversed_name => 'reversed', |
34 | }, |
35 | -excludes => 'reversed_name', |
36 | }, |
37 | ]; |
38 | } |
39 | |
40 | my $meta = My::Class->meta; |
41 | is($meta->enam, 'ssalC::yM', 'parameterized trait applied'); |
42 | ok(!$meta->can('reversed'), "the method was not installed under the other class' alias"); |
43 | |
44 | my $other_meta = My::Other::Class->meta; |
45 | is($other_meta->reversed, 'ssalC::rehtO::yM', 'parameterized trait applied'); |
46 | ok(!$other_meta->can('enam'), "the method was not installed under the other class' alias"); |
47 | ok(!$other_meta->can('reversed_name'), "the method was not installed under the original name when that was excluded"); |
48 | |