Add OrZero types for numbers
[gitmo/MooseX-Types-Common.git] / t / 02-numeric.t
CommitLineData
ac73ab52 1#! /usr/bin/perl -w
2
3use strict;
4use warnings;
d52d9696 5use Test::More tests => 34;
ac73ab52 6use Test::Exception;
7
8{
9 package FooTest;
10 use Moose;
5b561c82 11 use MooseX::Types::Common::Numeric (
d52d9696 12 qw(PositiveNum PositiveOrZeroNum
13 PositiveInt PositiveOrZeroInt
14 NegativeNum NegativeOrZeroNum
15 NegativeInt NegativeOrZeroInt
16 SingleDigit)
ac73ab52 17 );
18
19 has digit => ( is => 'rw', isa => SingleDigit);
20 has posnum => ( is => 'rw', isa => PositiveNum);
21 has posint => ( is => 'rw', isa => PositiveInt);
22 has negnum => ( is => 'rw', isa => NegativeNum);
23 has negint => ( is => 'rw', isa => NegativeInt);
d52d9696 24 has posorzeronum => ( is => 'rw', isa => PositiveOrZeroNum);
25 has posorzeroint => ( is => 'rw', isa => PositiveOrZeroInt);
26 has negorzeronum => ( is => 'rw', isa => NegativeOrZeroNum);
27 has negorzeroint => ( is => 'rw', isa => NegativeOrZeroInt);
ac73ab52 28}
29
30my $ins = FooTest->new;
31
32dies_ok { $ins->digit(100); } 'SingleDigit';
33lives_ok { $ins->digit(1); } 'SingleDigit 2';
34
0cedb310 35dies_ok { $ins->posint(-100); } 'PositiveInt (-100)';
36dies_ok { $ins->posint(0); } 'PositiveInt (0)';
37dies_ok { $ins->posint(100.885); } 'PositiveInt (100.885)';
38lives_ok { $ins->posint(100); } 'PositiveInt (100)';
39dies_ok { $ins->posnum(0); } 'PositiveNum (0)';
40lives_ok { $ins->posnum(100.885); } 'PositiveNum (100.885)';
41dies_ok { $ins->posnum(-100.885); } 'PositiveNum (-100.885)';
42lives_ok { $ins->posnum(0.0000000001); } 'PositiveNum (0.0000000001)';
ac73ab52 43
d52d9696 44dies_ok { $ins->posorzeroint(-100); } 'PositiveOrZeroInt (-100)';
45lives_ok { $ins->posorzeroint(0); } 'PositiveOrZeroInt (0)';
46dies_ok { $ins->posorzeroint(100.885); } 'PositiveOrZeroInt (100.885)';
47lives_ok { $ins->posorzeroint(100); } 'PositiveOrZeroInt (100)';
48lives_ok { $ins->posorzeronum(0); } 'PositiveOrZeroNum (0)';
49lives_ok { $ins->posorzeronum(100.885); } 'PositiveOrZeroNum (100.885)';
50dies_ok { $ins->posorzeronum(-100.885); } 'PositiveOrZeroNum (-100.885)';
51lives_ok { $ins->posorzeronum(0.0000000001); } 'PositiveOrZeroNum (0.0000000001)';
52
0cedb310 53dies_ok { $ins->negint(100); } 'NegativeInt (100)';
54dies_ok { $ins->negint(-100.885); } 'NegativeInt (-100.885)';
55lives_ok { $ins->negint(-100); } 'NegativeInt (-100)';
56dies_ok { $ins->negint(0); } 'NegativeInt (0)';
57lives_ok { $ins->negnum(-100.885); } 'NegativeNum (-100.885)';
58dies_ok { $ins->negnum(100.885); } 'NegativeNum (100.885)';
59dies_ok { $ins->negnum(0); } 'NegativeNum (0)';
60lives_ok { $ins->negnum(-0.0000000001); } 'NegativeNum (-0.0000000001)';
d52d9696 61
62dies_ok { $ins->negorzeroint(100); } 'NegativeOrZeroInt (100)';
63dies_ok { $ins->negorzeroint(-100.885); } 'NegativeOrZeroInt (-100.885)';
64lives_ok { $ins->negorzeroint(-100); } 'NegativeOrZeroInt (-100)';
65lives_ok { $ins->negorzeroint(0); } 'NegativeOrZeroInt (0)';
66lives_ok { $ins->negorzeronum(-100.885); } 'NegativeOrZeroNum (-100.885)';
67dies_ok { $ins->negorzeronum(100.885); } 'NegativeOrZeroNum (100.885)';
68lives_ok { $ins->negorzeronum(0); } 'NegativeOrZeroNum (0)';
69lives_ok { $ins->negorzeronum(-0.0000000001); } 'NegativeOrZeroNum (-0.0000000001)';