X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F01-basic.t;h=bfe227ce3cc6e5e302fb1a7d7c4ce97383e41041;hb=b058bf611520d8f60af9252d77886af53a907c3c;hp=b3643e59e0ce31d32cd0c8c9d874b54b9af6aebb;hpb=f327aa7a233f5405a5255d22abf1a5744c990eed;p=gitmo%2FMooseX-AlwaysCoerce.git diff --git a/t/01-basic.t b/t/01-basic.t index b3643e5..bfe227c 100644 --- a/t/01-basic.t +++ b/t/01-basic.t @@ -2,7 +2,7 @@ use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 7; { package MyClass; @@ -13,6 +13,8 @@ use Test::More tests => 5; subtype 'MyType', as 'Int'; coerce 'MyType', from 'Str', via { length $_ }; + subtype 'Uncoerced', as 'Int'; + has foo => (is => 'rw', isa => 'MyType'); class_has bar => (is => 'rw', isa => 'MyType'); @@ -20,15 +22,19 @@ use Test::More tests => 5; class_has baz => (is => 'rw', isa => 'MyType', coerce => 0); has quux => (is => 'rw', isa => 'MyType', coerce => 0); + + has uncoerced_attr => (is => 'rw', isa => 'Uncoerced'); + + class_has uncoerced_class_attr => (is => 'rw', isa => 'Uncoerced'); } ok( (my $instance = MyClass->new), 'instance' ); eval { $instance->foo('bar') }; -ok( (!$@), 'attribute coercion ran' ); +is $@, "", 'attribute coercion ran'; eval { $instance->bar('baz') }; -ok( (!$@), 'class attribute coercion ran' ); +is $@, "", 'class attribute coercion ran'; eval { $instance->baz('quux') }; ok( $@, 'class attribute coercion did not run with coerce => 0' ); @@ -37,3 +43,9 @@ undef $@; eval { $instance->quux('mtfnpy') }; ok( $@, 'attribute coercion did not run with coerce => 0' ); + +eval { $instance->uncoerced_attr(10) }; +is $@, "", 'set attribute having type with no coercion and no coerce=0'; + +eval { $instance->uncoerced_class_attr(10) }; +is $@, "", 'set class attribute having type with no coercion and no coerce=0';