Commit | Line | Data |
e46edf94 |
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 | |
581674fc |
63 | ::lives_ok { with('Foo::Role') } '... no foo method implemented by Baz::Role'; |
e46edf94 |
64 | } |
65 | |