renamed helper_type => _helper_type
[gitmo/Moose.git] / t / 070_attribute_helpers / 204_trait_number.t
CommitLineData
e3c07b19 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
59de9de4 6use Test::More tests => 26;
e3c07b19 7use Test::Moose;
8
9BEGIN {
a41de825 10 use_ok('Moose::AttributeHelpers');
e3c07b19 11}
12
13{
14 package Real;
15 use Moose;
16
17 has 'integer' => (
a41de825 18 traits => [qw/Number/],
e3c07b19 19 is => 'ro',
20 isa => 'Int',
21 default => sub { 5 },
0d103ac9 22 handles => {
59de9de4 23 set => 'set',
24 add => 'add',
25 sub => 'sub',
26 mul => 'mul',
27 div => 'div',
28 mod => 'mod',
29 abs => 'abs',
0d103ac9 30 inc => [ add => [ 1 ] ],
31 dec => [ sub => [ 1 ] ],
32 odd => [ mod => [ 2 ] ],
33 cut_in_half => [ div => [ 2 ] ],
34
59de9de4 35 },
e3c07b19 36 );
37}
38
39my $real = Real->new;
40isa_ok($real, 'Real');
41
42can_ok($real, $_) for qw[
59de9de4 43 set add sub mul div mod abs inc dec odd cut_in_half
e3c07b19 44];
45
46is $real->integer, 5, 'Default to five';
47
48$real->add(10);
49
50is $real->integer, 15, 'Add ten for fithteen';
51
52$real->sub(3);
53
54is $real->integer, 12, 'Subtract three for 12';
55
56$real->set(10);
57
58is $real->integer, 10, 'Set to ten';
59
60$real->div(2);
61
62is $real->integer, 5, 'divide by 2';
63
64$real->mul(2);
65
66is $real->integer, 10, 'multiplied by 2';
67
68$real->mod(2);
69
70is $real->integer, 0, 'Mod by 2';
71
72$real->set(7);
73
74$real->mod(5);
75
76is $real->integer, 2, 'Mod by 5';
77
78$real->set(-1);
79
80$real->abs;
81
82is $real->integer, 1, 'abs 1';
83
59de9de4 84$real->set(12);
85
86$real->inc;
87
88is $real->integer, 13, 'inc 12';
89
90$real->dec;
91
92is $real->integer, 12, 'dec 13';
93
e3c07b19 94## test the meta
95
96my $attr = $real->meta->get_attribute('integer');
a41de825 97does_ok($attr, 'Moose::AttributeHelpers::Trait::Number');
e3c07b19 98
0d103ac9 99is_deeply($attr->handles, {
e3c07b19 100 set => 'set',
101 add => 'add',
102 sub => 'sub',
103 mul => 'mul',
104 div => 'div',
105 mod => 'mod',
106 abs => 'abs',
18281451 107 inc => [ add => [ 1 ] ],
108 dec => [ sub => [ 1 ] ],
109 odd => [ mod => [ 2 ] ],
110 cut_in_half => [ div => [ 2 ] ],
0d103ac9 111}, '... got the right handles mapping');
e3c07b19 112