X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F800_shikabased%2F013-compatibility-get_method_list.t;h=4b5b124b18d136e4492110fba93c26f947d51269;hb=5ad574d90e0d07d8ad2f88f5020f96922b8aeccf;hp=e75ce2674bdc300ab875b344d09c58a477eb31df;hpb=8de42c413af07a9e26501c06d217383929d7f3d3;p=gitmo%2FMouse.git diff --git a/t/800_shikabased/013-compatibility-get_method_list.t b/t/800_shikabased/013-compatibility-get_method_list.t index e75ce26..4b5b124 100644 --- a/t/800_shikabased/013-compatibility-get_method_list.t +++ b/t/800_shikabased/013-compatibility-get_method_list.t @@ -1,37 +1,60 @@ use strict; use warnings; -use Test::More; -plan skip_all => "This test requires Moose 0.68" unless eval { require Moose; Moose->VERSION(0.68); }; -plan tests => 6; +use Test::More tests => 6; -test($_) for qw/Moose Mouse/; -exit; - -sub test { - my $class = shift; - eval <<"..."; { - package ${class}Class; - use ${class}; + package MouseClass; + use Carp; # import external functions (not our methods) + use Mouse; sub foo { } - no ${class}; + no Mouse; } { - package ${class}ClassImm; - use ${class}; + package MouseClassImm; + use Carp; # import external functions (not our methods) + use Mouse; sub foo { } - no ${class}; + no Mouse; __PACKAGE__->meta->make_immutable(); } { - package ${class}Role; - use ${class}::Role; + package MouseRole; + use Carp; # import external functions (not our methods) + use Mouse::Role; sub bar { } + no Mouse::Role; } -... - die $@ if $@; - is join(',', sort "${class}Class"->meta->get_method_list()), 'foo,meta'; - is join(',', sort "${class}ClassImm"->meta->get_method_list()), 'foo,meta,new'; - is join(',', sort "${class}Role"->meta->get_method_list()), 'bar'; +{ + package MouseRoleWithoutNoMouseRole; + use Mouse::Role; + + sub baz { } + # without no Mouse::Role; } +{ + package MouseClassWithRole; + use Mouse; + + with 'MouseRole'; + no Mouse; +} +{ + package MouseClassWithRoles; + use Mouse; + + with qw(MouseRole MouseRoleWithoutNoMouseRole); +} + +is join(',', sort MouseClass->meta->get_method_list()), 'foo,meta', "mutable Mouse"; +is join(',', sort MouseClassImm->meta->get_method_list()), 'DESTROY,foo,meta,new', "immutable Mouse"; + +is join(',', sort MouseRole->meta->get_method_list()), 'bar,meta', "role Mouse"; +is join(',', sort MouseRoleWithoutNoMouseRole->meta->get_method_list()), + 'baz,meta', "role Mouse"; + +is join(',', sort MouseClassWithRole->meta->get_method_list()), + 'bar,meta', "Mouse with a role"; +is join(',', sort MouseClassWithRoles->meta->get_method_list()), + 'bar,baz,meta', "Mouse with roles"; +