error_tests
[gitmo/Moose.git] / t / 043_role_composition_errors.t
CommitLineData
e46edf94 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 5;
7use Test::Exception;
8
9BEGIN {
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