X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F03-roles.t;h=f3ff3ecf2210c5d26fe7ed29a4f87b91d44eaaa2;hb=6daa454a2c6b01d3ea2cc40a9436fb5c8c844fcd;hp=1dfd692e9f827f51d6aeb41ce9f48086e90c70a2;hpb=13005566e6870be3ac9c1cd688f1e73b962eedf1;p=gitmo%2FMooseX-AlwaysCoerce.git diff --git a/t/03-roles.t b/t/03-roles.t index 1dfd692..f3ff3ec 100644 --- a/t/03-roles.t +++ b/t/03-roles.t @@ -2,8 +2,8 @@ use strict; use warnings; -use Test::More tests => 8; -use Test::Exception; +use Test::More tests => 16; +use Test::Fatal; use Test::NoWarnings; { @@ -28,6 +28,10 @@ use Test::NoWarnings; has uncoerced_attr => (is => 'rw', isa => 'Uncoerced'); class_has uncoerced_class_attr => (is => 'rw', isa => 'Uncoerced'); + + has untyped_attr => (is => 'rw'); + + class_has untyped_class_attr => (is => 'rw'); } { @@ -39,22 +43,39 @@ use Test::NoWarnings; ok( (my $instance = MyClass->new), 'instance' ); { - local $TODO = 'waiting on Moose changes for role support'; + local $TODO = (Moose->VERSION < 1.9900 ? 'waiting on Moose changes for role support' : undef); - lives_ok { $instance->foo('bar') } 'attribute coercion ran'; + is( exception { + $instance->foo('bar'); + }, undef, 'attribute coercion ran' ); + is($instance->foo, 3); } -lives_ok { $instance->bar('baz') } 'class attribute coercion ran'; +is( exception { + $instance->bar('baz'); + is $instance->bar, 3; +}, undef, 'class attribute coercion ran' ); + +isnt( exception { $instance->baz('quux') }, undef, 'class attribute coercion did not run with coerce => 0' ); -dies_ok { $instance->baz('quux') } - 'class attribute coercion did not run with coerce => 0'; +isnt( exception { $instance->quux('mtfnpy') }, undef, 'attribute coercion did not run with coerce => 0' ); -dies_ok { $instance->quux('mtfnpy') } - 'attribute coercion did not run with coerce => 0'; +is( exception { + $instance->uncoerced_attr(10); + is $instance->uncoerced_attr(10), 10; +}, undef, 'set attribute having type with no coercion and no coerce=0' ); -lives_ok { $instance->uncoerced_attr(10) } - 'set attribute having type with no coercion and no coerce=0'; +is( exception { + $instance->uncoerced_class_attr(10); + is $instance->uncoerced_class_attr(10), 10; +}, undef, 'set class attribute having type with no coercion and no coerce=0' ); -lives_ok { $instance->uncoerced_class_attr(10) } - 'set class attribute having type with no coercion and no coerce=0'; +is( exception { + $instance->untyped_attr(10); + is $instance->untyped_attr, 10; +}, undef, 'set untyped attribute' ); +is( exception { + $instance->untyped_class_attr(10); + is $instance->untyped_class_attr, 10; +}, undef, 'set untyped class attribute' );