X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F01-basic.t;h=f6d017fce0fa77b997906b836711ac806a15343b;hb=31af4cd4e807c9f9f716b5226d7023d17fa2fdc0;hp=f056dd94ef4a8b78b0b16f207c1d5ba8b2487cab;hpb=ad1917d79f5490b78c921ce0e7ae708c300d97e4;p=gitmo%2FMooseX-AlwaysCoerce.git diff --git a/t/01-basic.t b/t/01-basic.t index f056dd9..f6d017f 100644 --- a/t/01-basic.t +++ b/t/01-basic.t @@ -2,27 +2,50 @@ use strict; use warnings; -use Test::More tests => 3; +use Test::More tests => 8; +use Test::Exception; +use Test::NoWarnings; { package MyClass; use Moose; - use MooseX::ClassAttribute; use MooseX::AlwaysCoerce; use Moose::Util::TypeConstraints; 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'); + + 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'); + + class_has untyped_class_attr => (is => 'rw'); } ok( (my $instance = MyClass->new), 'instance' ); -eval { $instance->foo('bar') }; -ok( (!$@), 'attribute coercion ran' ); +lives_ok { $instance->foo('bar') } 'attribute coercion ran'; + +lives_ok { $instance->bar('baz') } 'class attribute coercion ran'; + +dies_ok { $instance->baz('quux') } + 'class attribute coercion did not run with coerce => 0'; + +dies_ok { $instance->quux('mtfnpy') } + 'attribute coercion did not run with coerce => 0'; + +lives_ok { $instance->uncoerced_attr(10) } + 'set attribute having type with no coercion and no coerce=0'; -eval { $instance->bar('baz') }; -ok( (!$@), 'class attribute coercion ran' ); +lives_ok { $instance->uncoerced_class_attr(10) } + 'set class attribute having type with no coercion and no coerce=0';