#!/usr/bin/env perl -w use strict; use warnings; BEGIN { require "t/test.pl" } note "Positive_Int"; { { package My::Positive::Int; use TB2::Mouse; use TB2::Types; has positive_int => is => 'rw', isa => 'TB2::Positive_Int'; } my $obj = My::Positive::Int->new; $obj->positive_int(0); is $obj->positive_int, 0; $obj->positive_int(1); is $obj->positive_int, 1; $obj->positive_int(2_000_000); is $obj->positive_int, 2_000_000; ok !eval { $obj->positive_int(-1); 1 }, "negative integer"; ok !eval { $obj->positive_int(1.5); 1 }, "decimals"; ok !eval { $obj->positive_int(undef); 1 }, "undef"; ok !eval { $obj->positive_int("one"); 1 }, "strings"; ok !eval { $obj->positive_int(""); 1 }, "empty strings"; ok !eval { $obj->positive_int(" 12 "); 1 }, "stringy numbers"; } note "Positive_NonZero_Int"; { { package My::Positive::NonZero::Int; use TB2::Mouse; use TB2::Types; has positive_nonzero_int => is => 'rw', isa => 'TB2::Positive_NonZero_Int'; } my $obj = My::Positive::NonZero::Int->new; $obj->positive_nonzero_int(1); is $obj->positive_nonzero_int, 1; $obj->positive_nonzero_int(2_000_000); is $obj->positive_nonzero_int, 2_000_000; ok !eval { $obj->positive_nonzero_int(0); 1 }, "zero"; ok !eval { $obj->positive_nonzero_int(-1); 1 }, "negative integer"; ok !eval { $obj->positive_nonzero_int(1.5); 1 }, "decimals"; ok !eval { $obj->positive_nonzero_int(undef); 1 }, "undef"; ok !eval { $obj->positive_nonzero_int("one"); 1 }, "strings"; ok !eval { $obj->positive_nonzero_int(""); 1 }, "empty strings"; ok !eval { $obj->positive_nonzero_int(" 12 "); 1 }, "stringy numbers"; } done_testing;