error_tests
[gitmo/Moose.git] / t / 043_role_composition_errors.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 5;
7 use Test::Exception;
8
9 BEGIN {  
10     use_ok('Moose');               
11 }
12
13 {
14     package Foo::Role;
15     use strict;
16     use warnings;
17     use Moose::Role;
18     
19     requires 'foo';
20 }
21
22 # classes which does not implement required method
23 {
24     package Foo::Class;
25     use strict;
26     use warnings;
27     use Moose;
28     
29     ::dies_ok { with('Foo::Role') } '... no foo method implemented by Foo::Class';
30 }
31
32 # class which does implement required method
33 {
34     package Bar::Class;
35     use strict;
36     use warnings;
37     use Moose;
38     
39     ::lives_ok { with('Foo::Role') } '... has a foo method implemented by Bar::Class';
40     
41     sub foo { 'Bar::Class::foo' }
42 }
43
44 # role which does implement required method
45 {
46     package Bar::Role;
47     use strict;
48     use warnings;
49     use Moose::Role;
50     
51     ::lives_ok { with('Foo::Role') } '... has a foo method implemented by Bar::Role';
52     
53     sub foo { 'Bar::Role::foo' }
54 }
55
56 # role which does not implement required method
57 {
58     package Baz::Role;
59     use strict;
60     use warnings;
61     use Moose;
62     
63     ::lives_ok { with('Foo::Role') } '... no foo method implemented by Baz::Role';
64 }
65