Commit | Line | Data |
ea505fce |
1 | #!/usr/bin/env perl |
2 | use strict; |
3 | use warnings; |
a28e50e4 |
4 | use 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 | |
39 | my $meta = My::Class->meta; |
40 | is($meta->enam, 'ssalC::yM', 'parameterized trait applied'); |
41 | ok(!$meta->can('reversed'), "the method was not installed under the other class' alias"); |
42 | |
43 | my $other_meta = My::Other::Class->meta; |
44 | is($other_meta->reversed, 'ssalC::rehtO::yM', 'parameterized trait applied'); |
45 | ok(!$other_meta->can('enam'), "the method was not installed under the other class' alias"); |
46 | ok(!$other_meta->can('reversed_name'), "the method was not installed under the original name when that was excluded"); |
ea505fce |
47 | |
a28e50e4 |
48 | done_testing; |