Test the meta in t/004_basic_number
[gitmo/MooseX-AttributeHelpers.git] / t / 004_basic_number.t
CommitLineData
565fe238 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
f053fc2f 6use Test::More tests => 20;
565fe238 7
8BEGIN {
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
33my $real = Real->new;
c25a396f 34isa_ok($real, 'Real');
35
36can_ok($real, $_) for qw[
37 set add sub mul div mod abs
38];
565fe238 39
40is $real->integer, 5, 'Default to five';
41
42$real->add(10);
43
44is $real->integer, 15, 'Add ten for fithteen';
45
46$real->sub(3);
47
48is $real->integer, 12, 'Subtract three for 12';
49
50$real->set(10);
51
52is $real->integer, 10, 'Set to ten';
53
54$real->div(2);
55
56is $real->integer, 5, 'divide by 2';
57
58$real->mul(2);
59
60is $real->integer, 10, 'multiplied by 2';
61
62$real->mod(2);
63
64is $real->integer, 0, 'Mod by 2';
65
66$real->set(7);
67
68$real->mod(5);
69
70is $real->integer, 2, 'Mod by 5';
71
72$real->set(-1);
73
74$real->abs;
75
f053fc2f 76is $real->integer, 1, 'abs 1';
77
78## test the meta
79
80my $attr = $real->meta->get_attribute('integer');
81isa_ok($attr, 'MooseX::AttributeHelpers::Number');
82
83is_deeply($attr->provides, {
84 set => 'set',
85 add => 'add',
86 sub => 'sub',
87 mul => 'mul',
88 div => 'div',
89 mod => 'mod',
90 abs => 'abs',
91}, '... got the right provides mapping');
92