X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F04-parameterized-roles.t;h=158362ebde5c37b0fafbd83c96469b8b0042f839;hb=3d261da4c038501ad117f1536ed18d615c240077;hp=cf50dfa3797f97fd4d31d44465ee7f65f2baddc6;hpb=73760f4826b785ef0bc960d80a8b814c50482a48;p=gitmo%2FMooseX-AlwaysCoerce.git diff --git a/t/04-parameterized-roles.t b/t/04-parameterized-roles.t index cf50dfa..158362e 100644 --- a/t/04-parameterized-roles.t +++ b/t/04-parameterized-roles.t @@ -3,54 +3,49 @@ use strict; use warnings; use Test::More; -use Test::Exception; +use Test::Fatal; use Test::Requires { - 'MooseX::Role::Parameterized' => 0.01, + 'MooseX::Role::Parameterized' => 0.25, }; eval <<'EOF'; package Role; - use MooseX::Role::Parameterized; + use MooseX::Role::Parameterized 0.25; + use MooseX::ClassAttribute 0.24; use MooseX::AlwaysCoerce; use Moose::Util::TypeConstraints; - # I do nothing! - role {}; + role { + subtype 'MyType', as 'Int'; + coerce 'MyType', from 'Str', via { length $_ }; - subtype 'MyType', as 'Int'; - coerce 'MyType', from 'Str', via { length $_ }; + subtype 'Uncoerced', as 'Int'; - subtype 'Uncoerced', as 'Int'; + has foo => (is => 'rw', isa => 'MyType'); - has foo => (is => 'rw', isa => 'MyType'); + class_has bar => (is => 'rw', isa => 'MyType'); - class_has bar => (is => 'rw', isa => 'MyType'); + class_has baz => (is => 'rw', isa => 'MyType', coerce => 0); - class_has baz => (is => 'rw', isa => 'MyType', coerce => 0); + has quux => (is => 'rw', isa => 'MyType', coerce => 0); - has quux => (is => 'rw', isa => 'MyType', coerce => 0); + has uncoerced_attr => (is => 'rw', isa => 'Uncoerced'); - has uncoerced_attr => (is => 'rw', isa => 'Uncoerced'); + class_has uncoerced_class_attr => (is => 'rw', isa => 'Uncoerced'); - class_has uncoerced_class_attr => (is => 'rw', isa => 'Uncoerced'); + has untyped_attr => (is => 'rw'); - has untyped_attr => (is => 'rw'); + class_has untyped_class_attr => (is => 'rw'); + }; - class_has untyped_class_attr => (is => 'rw'); - - package Foo; + package MyClass; use Moose; with 'Role'; EOF -if ($@) { - plan skip_all => -'MooseX::ClassAttribute is currently incompatible with MooseX::Role::Parameterized'; -} - -plan tests => 10; +plan tests => 12; eval 'use Test::NoWarnings'; ok( (my $instance = MyClass->new), 'instance' ); @@ -58,39 +53,37 @@ ok( (my $instance = MyClass->new), 'instance' ); { local $TODO = 'waiting on Moose changes for role support, and ClassAttribute changes for paramterized role support'; - lives_and { + is( exception { $instance->foo('bar'); is $instance->foo, 3; - } 'attribute coercion ran'; -} + }, undef, 'attribute coercion ran' ); -lives_and { - $instance->bar('baz'); - is $instance->bar, 3; -} 'class attribute coercion ran'; + is( exception { + $instance->bar('baz'); + is $instance->bar, 3; + }, undef, 'class attribute coercion ran' ); -dies_ok { $instance->baz('quux') } - 'class attribute coercion did not run with coerce => 0'; + isnt( exception { $instance->baz('quux') }, undef, 'class attribute coercion did not run with coerce => 0' ); -dies_ok { $instance->quux('mtfnpy') } - 'attribute coercion did not run with coerce => 0'; + isnt( exception { $instance->quux('mtfnpy') }, undef, 'attribute coercion did not run with coerce => 0' ); -lives_and { - $instance->uncoerced_attr(10); - is $instance->uncoerced_attr(10), 10; -} 'set attribute having type with no coercion and no 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_and { - $instance->uncoerced_class_attr(10); - is $instance->uncoerced_class_attr(10), 10; -} 'set class 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_and { - $instance->untyped_attr(10); - is $instance->untyped_attr, 10; -} 'set untyped attribute'; + is( exception { + $instance->untyped_attr(10); + is $instance->untyped_attr, 10; + }, undef, 'set untyped attribute' ); -lives_and { - $instance->untyped_class_attr(10); - is $instance->untyped_class_attr, 10; -} 'set untyped class attribute'; + is( exception { + $instance->untyped_class_attr(10); + is $instance->untyped_class_attr, 10; + }, undef, 'set untyped class attribute' ); +}