X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=t%2F001_mouse%2F034-apply_all_roles.t;fp=t%2F001_mouse%2F034-apply_all_roles.t;h=2ae47e1a47bb3979051008f1559eea81bf99c3eb;hp=c2979ef88f3829b2c0001396c01d07de40b9984e;hb=23791e495220e73530e7b2f7ea3347681e4d49cd;hpb=7d4507ba0976d10a036aaa3a3a2ecb74c2bc38fb diff --git a/t/001_mouse/034-apply_all_roles.t b/t/001_mouse/034-apply_all_roles.t index c2979ef..2ae47e1 100644 --- a/t/001_mouse/034-apply_all_roles.t +++ b/t/001_mouse/034-apply_all_roles.t @@ -1,34 +1,75 @@ -#!/usr/bin/env perl +#!perl use strict; use warnings; -use Test::More tests => 4; +use Test::More; +my $foo = 0; +my $bar = 0; { package FooRole; use Mouse::Role; sub foo { 'ok1' } + + before method => sub { $foo++ }; } { package BarRole; use Mouse::Role; sub bar { 'ok2' } + + before method => sub { $bar++ }; } { package Baz; use Mouse; + sub method {} no Mouse; } -eval { Mouse::Util::apply_all_roles('Baz', 'BarRole', 'FooRole') }; -ok !$@; +{ + package Qux; + use Mouse; + sub method {} + no Mouse; +} -Mouse::Util::apply_all_roles('Baz', 'BarRole'); -Mouse::Util::apply_all_roles('Baz', 'FooRole'); +Mouse::Util::apply_all_roles('Baz', 'BarRole', 'FooRole'); my $baz = Baz->new; is $baz->foo, 'ok1'; is $baz->bar, 'ok2'; -is join(",", sort $baz->meta->get_method_list), 'bar,foo,meta'; +is join(",", sort $baz->meta->get_method_list), 'bar,foo,meta,method'; + +# applyu to instance + +my $qux = Qux->new; +Mouse::Util::apply_all_roles($qux, 'FooRole'); +note $qux; +$foo = 0; +$bar = 0; +$qux->method; +is $foo, 1; +is $bar, 0; + +$qux = Qux->new; +Mouse::Util::apply_all_roles($qux, 'BarRole'); +note $qux; +$foo = 0; +$bar = 0; +$qux->method; +is $foo, 0; +is $bar, 1; + +$qux = Qux->new; +Mouse::Util::apply_all_roles($qux, 'FooRole', 'BarRole'); +note $qux; +$foo = 0; +$bar = 0; +$qux->method; +is $foo, 1; +is $bar, 1; + +done_testing;