Added MooseX::AttributeHelpers::Number
[gitmo/MooseX-AttributeHelpers.git] / t / 004_basic_number.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More no_plan => 1;
7
8 BEGIN {
9     use_ok('MooseX::AttributeHelpers');   
10 }
11
12 {
13     package Real;
14     use Moose;
15
16     has 'integer' => (
17         metaclass => 'Number',
18         is        => 'ro',
19         isa       => 'Int',
20         default   => sub { 5 },
21         provides  => {
22             set => 'set',
23             add => 'add',
24             sub => 'sub',
25             mul => 'mul',
26             div => 'div',
27             mod => 'mod',
28             abs => 'abs',
29         }
30     );
31 }
32
33 my $real = Real->new;
34
35 is $real->integer, 5, 'Default to five';
36
37 $real->add(10);
38
39 is $real->integer, 15, 'Add ten for fithteen';
40
41 $real->sub(3);
42
43 is $real->integer, 12, 'Subtract three for 12';
44
45 $real->set(10);
46
47 is $real->integer, 10, 'Set to ten';
48
49 $real->div(2);
50
51 is $real->integer, 5, 'divide by 2';
52
53 $real->mul(2);
54
55 is $real->integer, 10, 'multiplied by 2';
56
57 $real->mod(2);
58
59 is $real->integer, 0, 'Mod by 2';
60
61 $real->set(7);
62
63 $real->mod(5);
64
65 is $real->integer, 2, 'Mod by 5';
66
67 $real->set(-1);
68
69 $real->abs;
70
71 is $real->integer, 1, 'abs 1'