X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F03-roles.t;h=271e79f430d7abead960d5f9105ff97c2624a2c0;hb=dfab7c8b29f43615983ca90c1c4474554cebfaa6;hp=ed83fa9b11448ca7b477a463d2e08104a92bacb7;hpb=0d42c8e8c15eb1addd4fb1b1669e89cffc36d7e6;p=gitmo%2FMooseX-AlwaysCoerce.git diff --git a/t/03-roles.t b/t/03-roles.t index ed83fa9..271e79f 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 => 15; +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'); } { @@ -38,19 +42,40 @@ use Test::NoWarnings; ok( (my $instance = MyClass->new), 'instance' ); -lives_ok { $instance->foo('bar') } 'attribute coercion ran'; +{ + local $TODO = 'waiting on Moose changes for role support'; + + is( exception { + $instance->foo('bar'); + is $instance->foo, 3; + }, undef, 'attribute coercion ran' ); +} + +is( exception { + $instance->bar('baz'); + is $instance->bar, 3; +}, undef, 'class attribute coercion ran' ); -lives_ok { $instance->bar('baz') } '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' );