X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F400-define-role.t;h=5e1e2d10b53cd1434ec3b75ad5f321b3bfb7ff93;hb=78b163fb6086e794180c5dbee9456371a408a646;hp=4c27de01168019229afd6a729878362d0bee0890;hpb=8da998d9d52f4f1bed58f3b196cccbd725959c56;p=gitmo%2FMouse.git diff --git a/t/400-define-role.t b/t/400-define-role.t index 4c27de0..5e1e2d1 100644 --- a/t/400-define-role.t +++ b/t/400-define-role.t @@ -1,8 +1,8 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 2; -use Test::Exception; +use Test::More tests => 11; +use t::Exception; lives_ok { package Role; @@ -16,5 +16,83 @@ throws_ok { use Mouse::Role; extends 'Role::Parent'; -} qr/Mouse::Role does not currently support 'extends'/; + + no Mouse::Role; +} qr/Roles do not support 'extends'/; + +lives_ok { + package Role; + use Mouse::Role; + + sub foo {} + + no Mouse::Role; +}; + +lives_ok { + package Role; + use Mouse::Role; + + before foo => sub {}; + after foo => sub {}; + around foo => sub {}; + + no Mouse::Role; +}; + +lives_ok { + package Role; + use Mouse::Role; + + has 'foo'; + + no Mouse::Role; +}; + +do { + package Other::Role; + use Mouse::Role; + no Mouse::Role; +}; + +lives_ok { + package Role; + use Mouse::Role; + + with 'Other::Role'; + + no Mouse::Role; +}; + +throws_ok { + package Role; + use Mouse::Role; + + excludes 'excluded'; + + no Mouse::Role; +} qr/Mouse::Role does not currently support 'excludes'/; + +throws_ok { + package Role; + use Mouse::Role; + + confess "Mouse::Role exports confess"; + +} qr/^Mouse::Role exports confess/; + +lives_ok { + package Role; + use Mouse::Role; + + my $obj = bless {} => "Impromptu::Class"; + ::is(blessed($obj), "Impromptu::Class"); +}; + +throws_ok { + package Class; + use Mouse; + + with 'Role', 'Other::Role'; +} qr/Mouse::Role only supports 'with' on individual roles at a time/;