Fix many
[gitmo/Mouse.git] / t / 050_metaclasses / 020_metaclass_parameterized_traits.t
CommitLineData
41888e7d 1#!/usr/bin/env perl
2use strict;
3use warnings;
8aba926d 4
5use Test::More;
6
7BEGIN{
8 if($] < 5.008){
9 plan skip_all => "segv happens on 5.6.2";
10 }
11}
12
41888e7d 13use Test::More tests => 5;
14
15{
16 package My::Trait;
17 use Mouse::Role;
18
19 sub reversed_name {
20 my $self = shift;
21 scalar reverse $self->name;
22 }
23}
24
25{
26 package My::Class;
27 use Mouse -traits => [
28 'My::Trait' => {
29 -alias => {
30 reversed_name => 'enam',
31 },
32 },
33 ];
34}
35
36{
37 package My::Other::Class;
38 use Mouse -traits => [
39 'My::Trait' => {
40 -alias => {
41 reversed_name => 'reversed',
42 },
43 -excludes => 'reversed_name',
44 },
45 ];
46}
47
48my $meta = My::Class->meta;
49is($meta->enam, 'ssalC::yM', 'parameterized trait applied');
50ok(!$meta->can('reversed'), "the method was not installed under the other class' alias");
51
52my $other_meta = My::Other::Class->meta;
53is($other_meta->reversed, 'ssalC::rehtO::yM', 'parameterized trait applied');
54ok(!$other_meta->can('enam'), "the method was not installed under the other class' alias");
55ok(!$other_meta->can('reversed_name'), "the method was not installed under the original name when that was excluded");
56