X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F01-types-parameterizable.t;h=c1bf2f6b8e139356c35000e70bc5a2c482c37ea7;hb=80b1af4c2a0a99a96f00e866824670d684e8c1cf;hp=deb719e0df2102311163c18d65b7c74602cfbe2c;hpb=88f7dcd23a5adc905f0fd92f9bcfdb01ccbb5e99;p=gitmo%2FMooseX-Dependent.git diff --git a/t/01-types-parameterizable.t b/t/01-types-parameterizable.t index deb719e..c1bf2f6 100644 --- a/t/01-types-parameterizable.t +++ b/t/01-types-parameterizable.t @@ -1,280 +1,280 @@ use Test::More tests=>79; { - - use strict; - use warnings; - - use MooseX::Parameterizable::Types qw(Parameterizable); - use MooseX::Types::Moose qw(Int Any Maybe); - use Moose::Util::TypeConstraints; - - use MooseX::Types -declare=>[qw(SubParameterizable IntLessThan EvenInt - LessThan100GreatThen5andEvenIntNot44 IntNot54 - GreatThen5andEvenIntNot54or64)]; - - ok Parameterizable->check(1), - 'Parameterizable is basically an "Any"'; - - is Parameterizable->validate(1), undef, - 'No Error Message'; - - is Parameterizable->parent, 'Any', - 'Parameterizable is an Any'; - - is Parameterizable->name, 'MooseX::Parameterizable::Types::Parameterizable', - 'Parameterizable has expected name'; - - like Parameterizable->get_message, - qr/Validation failed for 'MooseX::Parameterizable::Types::Parameterizable' with value undef/, - 'Got Expected Message'; - - ok Parameterizable->equals(Parameterizable), - 'Parameterizable equal Parameterizable'; - - ok Parameterizable->is_a_type_of(Parameterizable), - 'Parameterizable is_a_type_of Parameterizable'; - - ok Parameterizable->is_a_type_of('Any'), - 'Parameterizable is_a_type_of Any'; - - ok Parameterizable->is_subtype_of('Any'), - 'Parameterizable is_subtype_of Parameterizable'; + + use strict; + use warnings; + + use MooseX::Types::Parameterizable qw(Parameterizable); + use MooseX::Types::Moose qw(Int Any Maybe); + use Moose::Util::TypeConstraints; + + use MooseX::Types -declare=>[qw(SubParameterizable IntLessThan EvenInt + LessThan100GreatThen5andEvenIntNot44 IntNot54 + GreatThen5andEvenIntNot54or64)]; + + ok Parameterizable->check(1), + 'Parameterizable is basically an "Any"'; + + is Parameterizable->validate(1), undef, + 'No Error Message'; + + is Parameterizable->parent, 'Any', + 'Parameterizable is an Any'; + + is Parameterizable->name, 'MooseX::Types::Parameterizable::Parameterizable', + 'Parameterizable has expected name'; + + like Parameterizable->get_message, + qr/Validation failed for 'MooseX::Types::Parameterizable::Parameterizable' with value undef/, + 'Got Expected Message'; + + ok Parameterizable->equals(Parameterizable), + 'Parameterizable equal Parameterizable'; + + ok Parameterizable->is_a_type_of(Parameterizable), + 'Parameterizable is_a_type_of Parameterizable'; + + ok Parameterizable->is_a_type_of('Any'), + 'Parameterizable is_a_type_of Any'; + + ok Parameterizable->is_subtype_of('Any'), + 'Parameterizable is_subtype_of Parameterizable'; - is Parameterizable->parent_type_constraint, 'Any', - 'Correct parent type'; + is Parameterizable->parent_type_constraint, 'Any', + 'Correct parent type'; - is subtype( SubParameterizable, as Parameterizable ), - 'main::SubParameterizable', - 'Create a useless subtype'; + is subtype( SubParameterizable, as Parameterizable ), + 'main::SubParameterizable', + 'Create a useless subtype'; - ok SubParameterizable->check(1), - 'SubParameterizable is basically an "Any"'; - - is SubParameterizable->validate(1), undef, - 'validate returned no error message'; + ok SubParameterizable->check(1), + 'SubParameterizable is basically an "Any"'; + + is SubParameterizable->validate(1), undef, + 'validate returned no error message'; - is SubParameterizable->parent, 'MooseX::Parameterizable::Types::Parameterizable', - 'SubParameterizable is a Parameterizable'; - - is SubParameterizable->name, 'main::SubParameterizable', - 'Parameterizable has expected name'; - - like SubParameterizable->get_message, - qr/Validation failed for 'main::SubParameterizable' with value undef/, - 'Got Expected Message'; - - ok SubParameterizable->equals(SubParameterizable), - 'SubParameterizable equal SubParameterizable'; - - ok !SubParameterizable->equals(Parameterizable), - 'SubParameterizable does not equal Parameterizable'; - - ok SubParameterizable->is_a_type_of(Parameterizable), - 'SubParameterizable is_a_type_of Parameterizable'; - - ok SubParameterizable->is_a_type_of(Any), - 'SubParameterizable is_a_type_of Any'; - - ok SubParameterizable->is_subtype_of('Any'), - 'SubParameterizable is_subtype_of Parameterizable'; - - ok !SubParameterizable->is_subtype_of(SubParameterizable), - 'SubParameterizable is not is_subtype_of SubParameterizable'; - - ok subtype( EvenInt, - as Int, - where { - my $val = shift @_; - return $val % 2 ? 0:1; - }), - 'Created a subtype of Int'; + is SubParameterizable->parent, 'MooseX::Types::Parameterizable::Parameterizable', + 'SubParameterizable is a Parameterizable'; + + is SubParameterizable->name, 'main::SubParameterizable', + 'Parameterizable has expected name'; + + like SubParameterizable->get_message, + qr/Validation failed for 'main::SubParameterizable' with value undef/, + 'Got Expected Message'; + + ok SubParameterizable->equals(SubParameterizable), + 'SubParameterizable equal SubParameterizable'; + + ok !SubParameterizable->equals(Parameterizable), + 'SubParameterizable does not equal Parameterizable'; + + ok SubParameterizable->is_a_type_of(Parameterizable), + 'SubParameterizable is_a_type_of Parameterizable'; + + ok SubParameterizable->is_a_type_of(Any), + 'SubParameterizable is_a_type_of Any'; + + ok SubParameterizable->is_subtype_of('Any'), + 'SubParameterizable is_subtype_of Parameterizable'; + + ok !SubParameterizable->is_subtype_of(SubParameterizable), + 'SubParameterizable is not is_subtype_of SubParameterizable'; + + ok subtype( EvenInt, + as Int, + where { + my $val = shift @_; + return $val % 2 ? 0:1; + }), + 'Created a subtype of Int'; - ok !EvenInt->check('aaa'), '"aaa" not an Int'; - ok !EvenInt->check(1), '1 is not even'; - ok EvenInt->check(2), 'but 2 is!'; - - ok subtype( IntLessThan, - as Parameterizable[EvenInt, Maybe[Int]], - where { - my $value = shift @_; - my $constraining = shift @_ || 200; - return ($value < $constraining && $value > 5); - }), - 'Created IntLessThan subtype'; - - ok !IntLessThan->check('aaa'), - '"aaa" is not an integer'; - - like IntLessThan->validate('aaa'), - qr/Validation failed for 'main::EvenInt' with value aaa/, - 'Got expected error messge for "aaa"'; - - ok !IntLessThan->check(1), - '1 smaller than 5'; + ok !EvenInt->check('aaa'), '"aaa" not an Int'; + ok !EvenInt->check(1), '1 is not even'; + ok EvenInt->check(2), 'but 2 is!'; + + ok subtype( IntLessThan, + as Parameterizable[EvenInt, Maybe[Int]], + where { + my $value = shift @_; + my $constraining = shift @_ || 200; + return ($value < $constraining && $value > 5); + }), + 'Created IntLessThan subtype'; + + ok !IntLessThan->check('aaa'), + '"aaa" is not an integer'; + + like IntLessThan->validate('aaa'), + qr/Validation failed for 'main::EvenInt' with value aaa/, + 'Got expected error messge for "aaa"'; + + ok !IntLessThan->check(1), + '1 smaller than 5'; - ok !IntLessThan->check(2), - '2 smaller than 5'; - - ok !IntLessThan->check(15), - '15 greater than 5 (but odd)'; + ok !IntLessThan->check(2), + '2 smaller than 5'; + + ok !IntLessThan->check(15), + '15 greater than 5 (but odd)'; - ok !IntLessThan->check(301), - '301 is too big'; - - ok !IntLessThan->check(400), - '400 is too big'; - - ok IntLessThan->check(10), - '10 greater than 5 (and even)'; - - like IntLessThan->validate(1), - qr/Validation failed for 'main::EvenInt' with value 1/, - 'error message is correct'; - - is IntLessThan->name, 'main::IntLessThan', - 'Got correct name for IntLessThan'; - - is IntLessThan->parent, 'MooseX::Parameterizable::Types::Parameterizable[main::EvenInt, Maybe[Int]]', - 'IntLessThan is a Parameterizable'; - - is IntLessThan->parent_type_constraint, EvenInt, - 'Parent is an Int'; - - is IntLessThan->constraining_value_type_constraint, (Maybe[Int]), - 'constraining is an Int'; - - ok IntLessThan->equals(IntLessThan), - 'IntLessThan equals IntLessThan'; + ok !IntLessThan->check(301), + '301 is too big'; + + ok !IntLessThan->check(400), + '400 is too big'; + + ok IntLessThan->check(10), + '10 greater than 5 (and even)'; + + like IntLessThan->validate(1), + qr/Validation failed for 'main::EvenInt' with value 1/, + 'error message is correct'; + + is IntLessThan->name, 'main::IntLessThan', + 'Got correct name for IntLessThan'; + + is IntLessThan->parent, 'MooseX::Types::Parameterizable::Parameterizable[main::EvenInt, Maybe[Int]]', + 'IntLessThan is a Parameterizable'; + + is IntLessThan->parent_type_constraint, EvenInt, + 'Parent is an Int'; + + is IntLessThan->constraining_value_type_constraint, (Maybe[Int]), + 'constraining is an Int'; + + ok IntLessThan->equals(IntLessThan), + 'IntLessThan equals IntLessThan'; - ok IntLessThan->is_subtype_of(Parameterizable), - 'IntLessThan is_subtype_of Parameterizable'; + ok IntLessThan->is_subtype_of(Parameterizable), + 'IntLessThan is_subtype_of Parameterizable'; - ok IntLessThan->is_subtype_of(Int), - 'IntLessThan is_subtype_of Int'; + ok IntLessThan->is_subtype_of(Int), + 'IntLessThan is_subtype_of Int'; - ok IntLessThan->is_a_type_of(Parameterizable), - 'IntLessThan is_a_type_of Parameterizable'; + ok IntLessThan->is_a_type_of(Parameterizable), + 'IntLessThan is_a_type_of Parameterizable'; - ok IntLessThan->is_a_type_of(Int), - 'IntLessThan is_a_type_of Int'; + ok IntLessThan->is_a_type_of(Int), + 'IntLessThan is_a_type_of Int'; - ok IntLessThan->is_a_type_of(IntLessThan), - 'IntLessThan is_a_type_of IntLessThan'; - - ok( (my $lessThan100GreatThen5andEvenInt = IntLessThan[100]), - 'Parameterized!'); - - ok !$lessThan100GreatThen5andEvenInt->check(150), - '150 Not less than 100'; - - ok !$lessThan100GreatThen5andEvenInt->check(151), - '151 Not less than 100'; - - ok !$lessThan100GreatThen5andEvenInt->check(2), - 'Not greater than 5'; + ok IntLessThan->is_a_type_of(IntLessThan), + 'IntLessThan is_a_type_of IntLessThan'; + + ok( (my $lessThan100GreatThen5andEvenInt = IntLessThan[100]), + 'Parameterized!'); + + ok !$lessThan100GreatThen5andEvenInt->check(150), + '150 Not less than 100'; + + ok !$lessThan100GreatThen5andEvenInt->check(151), + '151 Not less than 100'; + + ok !$lessThan100GreatThen5andEvenInt->check(2), + 'Not greater than 5'; - ok !$lessThan100GreatThen5andEvenInt->check(51), - 'Not even'; + ok !$lessThan100GreatThen5andEvenInt->check(51), + 'Not even'; - ok !$lessThan100GreatThen5andEvenInt->check('aaa'), - 'Not Int'; - - ok $lessThan100GreatThen5andEvenInt->check(42), - 'is Int, is even, greater than 5, less than 100'; + ok !$lessThan100GreatThen5andEvenInt->check('aaa'), + 'Not Int'; + + ok $lessThan100GreatThen5andEvenInt->check(42), + 'is Int, is even, greater than 5, less than 100'; - ok subtype( LessThan100GreatThen5andEvenIntNot44, - as IntLessThan[100], - where { - my $value = shift @_; - return $value != 44; - }), - 'Created LessThan100GreatThen5andEvenIntNot44 subtype'; + ok subtype( LessThan100GreatThen5andEvenIntNot44, + as IntLessThan[100], + where { + my $value = shift @_; + return $value != 44; + }), + 'Created LessThan100GreatThen5andEvenIntNot44 subtype'; - ok !LessThan100GreatThen5andEvenIntNot44->check(150), - '150 Not less than 100'; - - ok !LessThan100GreatThen5andEvenIntNot44->check(300), - '300 Not less than 100 (check to make sure we are not defaulting 200)'; - - ok !LessThan100GreatThen5andEvenIntNot44->check(151), - '151 Not less than 100'; - - ok !LessThan100GreatThen5andEvenIntNot44->check(2), - 'Not greater than 5'; + ok !LessThan100GreatThen5andEvenIntNot44->check(150), + '150 Not less than 100'; + + ok !LessThan100GreatThen5andEvenIntNot44->check(300), + '300 Not less than 100 (check to make sure we are not defaulting 200)'; + + ok !LessThan100GreatThen5andEvenIntNot44->check(151), + '151 Not less than 100'; + + ok !LessThan100GreatThen5andEvenIntNot44->check(2), + 'Not greater than 5'; - ok !LessThan100GreatThen5andEvenIntNot44->check(51), - 'Not even'; + ok !LessThan100GreatThen5andEvenIntNot44->check(51), + 'Not even'; - ok !LessThan100GreatThen5andEvenIntNot44->check('aaa'), - 'Not Int'; - - ok LessThan100GreatThen5andEvenIntNot44->check(42), - 'is Int, is even, greater than 5, less than 100'; + ok !LessThan100GreatThen5andEvenIntNot44->check('aaa'), + 'Not Int'; + + ok LessThan100GreatThen5andEvenIntNot44->check(42), + 'is Int, is even, greater than 5, less than 100'; - ok !LessThan100GreatThen5andEvenIntNot44->check(44), - 'is Int, is even, greater than 5, less than 100 BUT 44!'; - - ok subtype( IntNot54, - as Maybe[Int], - where { - my $val = shift @_ || 200; - return $val != 54 - }), - 'Created a subtype of Int'; - - ok IntNot54->check(100), 'Not 54'; - ok !IntNot54->check(54), '54!!'; - - ok( subtype( GreatThen5andEvenIntNot54or64, - as IntLessThan[IntNot54], - where { - my $value = shift @_; - return $value != 64; - }), - 'Created GreatThen5andEvenIntNot54or64 subtype'); - - is( (GreatThen5andEvenIntNot54or64->name), - 'main::GreatThen5andEvenIntNot54or64', - 'got expected name'); - - ok GreatThen5andEvenIntNot54or64->check(150), - '150 is even, less than 200, not 54 or 64 but > 5'; + ok !LessThan100GreatThen5andEvenIntNot44->check(44), + 'is Int, is even, greater than 5, less than 100 BUT 44!'; + + ok subtype( IntNot54, + as Maybe[Int], + where { + my $val = shift @_ || 200; + return $val != 54 + }), + 'Created a subtype of Int'; + + ok IntNot54->check(100), 'Not 54'; + ok !IntNot54->check(54), '54!!'; + + ok( subtype( GreatThen5andEvenIntNot54or64, + as IntLessThan[IntNot54], + where { + my $value = shift @_; + return $value != 64; + }), + 'Created GreatThen5andEvenIntNot54or64 subtype'); + + is( (GreatThen5andEvenIntNot54or64->name), + 'main::GreatThen5andEvenIntNot54or64', + 'got expected name'); + + ok GreatThen5andEvenIntNot54or64->check(150), + '150 is even, less than 200, not 54 or 64 but > 5'; - ok !GreatThen5andEvenIntNot54or64->check(202), - '202 is even, exceeds 200, not 54 or 64 but > 5'; - - is( ((GreatThen5andEvenIntNot54or64[100])->name), - 'main::GreatThen5andEvenIntNot54or64[100]', - 'got expected name'); - - ok !GreatThen5andEvenIntNot54or64([100])->check(150), - '150 Not less than 100'; - - ok !GreatThen5andEvenIntNot54or64([100])->check(300), - '300 Not less than 100 (check to make sure we are not defaulting 200)'; - - ok !GreatThen5andEvenIntNot54or64([100])->check(151), - '151 Not less than 100'; - - ok !GreatThen5andEvenIntNot54or64([100])->check(2), - 'Not greater than 5'; + ok !GreatThen5andEvenIntNot54or64->check(202), + '202 is even, exceeds 200, not 54 or 64 but > 5'; + + is( ((GreatThen5andEvenIntNot54or64[100])->name), + 'main::GreatThen5andEvenIntNot54or64[100]', + 'got expected name'); + + ok !GreatThen5andEvenIntNot54or64([100])->check(150), + '150 Not less than 100'; + + ok !GreatThen5andEvenIntNot54or64([100])->check(300), + '300 Not less than 100 (check to make sure we are not defaulting 200)'; + + ok !GreatThen5andEvenIntNot54or64([100])->check(151), + '151 Not less than 100'; + + ok !GreatThen5andEvenIntNot54or64([100])->check(2), + 'Not greater than 5'; - ok !GreatThen5andEvenIntNot54or64([100])->check(51), - 'Not even'; + ok !GreatThen5andEvenIntNot54or64([100])->check(51), + 'Not even'; - ok !GreatThen5andEvenIntNot54or64([100])->check('aaa'), - 'Not Int'; - - ok GreatThen5andEvenIntNot54or64([100])->check(42), - 'is Int, is even, greater than 5, less than 100'; - - ok !GreatThen5andEvenIntNot54or64([100])->check(64), - 'is Int, is even, greater than 5, less than 100 BUT 64!'; - - CHECKPARAM: { - eval { GreatThen5andEvenIntNot54or64([54])->check(32) }; - like $@, - qr/Validation failed for 'main::IntNot54' with value 54/, - 'Got Expected Error'; - } + ok !GreatThen5andEvenIntNot54or64([100])->check('aaa'), + 'Not Int'; + + ok GreatThen5andEvenIntNot54or64([100])->check(42), + 'is Int, is even, greater than 5, less than 100'; + + ok !GreatThen5andEvenIntNot54or64([100])->check(64), + 'is Int, is even, greater than 5, less than 100 BUT 64!'; + + CHECKPARAM: { + eval { GreatThen5andEvenIntNot54or64([54])->check(32) }; + like $@, + qr/Validation failed for 'main::IntNot54' with value 54/, + 'Got Expected Error'; + } }