X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Frole-basic-composition.t;h=a70fe4c4d5b2f06fb1bc6008b296cbb116353609;hb=245a1d76a717352045e5360925d1d65bae7d1f0a;hp=33c8ac2178c6563159323c4f0abd4e18220ef782;hpb=b0efdecc4116c74330e9ecbc5073a9f2a67c794d;p=gitmo%2FRole-Tiny.git diff --git a/t/role-basic-composition.t b/t/role-basic-composition.t index 33c8ac2..a70fe4c 100644 --- a/t/role-basic-composition.t +++ b/t/role-basic-composition.t @@ -1,5 +1,3 @@ -#!/usr/bin/env perl - use lib 'lib', 't/role-basic/lib'; use MyTests; require Role::Tiny; @@ -125,25 +123,82 @@ $ENV{DEBUG} = 1; { { - package Role1; + package Method::Role1; use Role::Tiny; sub method1 { } requires 'method2'; } { - package Role2; + package Method::Role2; use Role::Tiny; sub method2 { } requires 'method1'; } - my $success = eval <<'END'; + my $success = eval q{ package Class; use Role::Tiny::With; - with 'Role1', 'Role2'; + with 'Method::Role1', 'Method::Role2'; + 1; + }; + is $success, 1, 'composed mutually dependent methods successfully' or diag "Error: $@"; +} + +SKIP: { + skip "Class::Method::Modifiers not installed or too old", 1 + unless eval "use Class::Method::Modifiers 1.05; 1"; + { + package Modifier::Role1; + use Role::Tiny; + sub foo { + } + before 'bar', sub {}; + } + + { + package Modifier::Role2; + use Role::Tiny; + sub bar { + } + before 'foo', sub {}; + } + my $success = eval q{ + package Class; + use Role::Tiny::With; + with 'Modifier::Role1', 'Modifier::Role2'; + 1; + }; + is $success, 1, 'composed mutually dependent modifiers successfully' or diag "Error: $@"; +} + +{ + { + package Base::Role; + use Role::Tiny; + requires qw/method1 method2/; + } + + { + package Sub::Role1; + use Role::Tiny; + with 'Base::Role'; + sub method1 {} + } + + { + package Sub::Role2; + use Role::Tiny; + with 'Base::Role'; + sub method2 {} + } + + my $success = eval q{ + package Diamant::Class; + use Role::Tiny::With; + with qw/Sub::Role1 Sub::Role2/; 1; -END - is $success, 1, 'composed mutually dependent roles successfully' or diag "Error: $@"; + }; + is $success, 1, 'composed diamantly dependent roles successfully' or diag "Error: $@"; } done_testing;