X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F01-basic.t;h=f8117ec8c62549ac3ce86a8365dfeb5fa08a777f;hb=9381ff3cc1d01c52adaa24d0cf720fdd486594ab;hp=bfe227ce3cc6e5e302fb1a7d7c4ce97383e41041;hpb=6b46d35cfcd9245e887dbbf8de83fbd63dbbf224;p=gitmo%2FMooseX-AlwaysCoerce.git diff --git a/t/01-basic.t b/t/01-basic.t index bfe227c..f8117ec 100644 --- a/t/01-basic.t +++ b/t/01-basic.t @@ -2,7 +2,9 @@ use strict; use warnings; -use Test::More tests => 7; +use Test::More tests => 16; +use Test::Fatal; +use Test::NoWarnings; { package MyClass; @@ -26,26 +28,76 @@ use Test::More tests => 7; 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') }; -is $@, "", 'attribute coercion ran'; -eval { $instance->bar('baz') }; -is $@, "", 'class attribute coercion ran'; + has untyped_attr => (is => 'rw'); -eval { $instance->baz('quux') }; -ok( $@, 'class attribute coercion did not run with coerce => 0' ); - -undef $@; - -eval { $instance->quux('mtfnpy') }; -ok( $@, 'attribute coercion did not run with coerce => 0' ); + class_has untyped_class_attr => (is => 'rw'); +} -eval { $instance->uncoerced_attr(10) }; -is $@, "", 'set attribute having type with no coercion and no coerce=0'; +ok( (my $instance = MyClass->new), 'instance' ); -eval { $instance->uncoerced_class_attr(10) }; -is $@, "", 'set class attribute having type with no coercion and no coerce=0'; +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', +); + +isnt( + exception { $instance->baz('quux') }, + undef, + 'class attribute coercion did not run with coerce => 0', +); + +isnt( + exception{ $instance->quux('mtfnpy') }, + undef, + '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', +); + +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', +); + +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', +);