More compatibility
[gitmo/Mouse.git] / t / 400-define-role.t
CommitLineData
995061c2 1#!/usr/bin/env perl
2use strict;
3use warnings;
59089ec3 4use Test::More tests => 11;
eab81545 5use Test::Exception;
995061c2 6
7lives_ok {
8 package Role;
9 use Mouse::Role;
10
11 no Mouse::Role;
12};
13
8da998d9 14throws_ok {
15 package Role;
16 use Mouse::Role;
17
18 extends 'Role::Parent';
964eaf79 19
20 no Mouse::Role;
ff687069 21} qr/Roles do not support 'extends'/;
8da998d9 22
72381201 23lives_ok {
24 package Role;
25 use Mouse::Role;
26
27 sub foo {}
26482d3f 28
29 no Mouse::Role;
72381201 30};
31
32lives_ok {
33 package Role;
34 use Mouse::Role;
35
36 before foo => sub {};
37 after foo => sub {};
38 around foo => sub {};
26482d3f 39
40 no Mouse::Role;
41};
42
43lives_ok {
44 package Role;
45 use Mouse::Role;
46
ab1a1cce 47 has 'foo' => (is => 'bare');
26482d3f 48
49 no Mouse::Role;
72381201 50};
51
00c0e9c2 52do {
53 package Other::Role;
54 use Mouse::Role;
55 no Mouse::Role;
56};
57
b1b81553 58lives_ok {
00c0e9c2 59 package Role;
60 use Mouse::Role;
61
62 with 'Other::Role';
63
64 no Mouse::Role;
b1b81553 65};
00c0e9c2 66
e9d57bdf 67TODO: {
eb812bde 68 package Role;
69 use Mouse::Role;
70
e9d57bdf 71 eval {
72 excludes 'excluded';
73 };
74 local our $TODO = "Mouse::Role does not currently support 'excludes'";
75 ::ok(!$@, "excludes");
eb812bde 76
77 no Mouse::Role;
e9d57bdf 78};
eb812bde 79
4377514b 80throws_ok {
81 package Role;
82 use Mouse::Role;
83
84 confess "Mouse::Role exports confess";
85
86} qr/^Mouse::Role exports confess/;
87
88lives_ok {
89 package Role;
90 use Mouse::Role;
91
92 my $obj = bless {} => "Impromptu::Class";
93 ::is(blessed($obj), "Impromptu::Class");
94};
95
ff687069 96lives_ok{
b3bfbec3 97 package Class;
98 use Mouse;
99
100 with 'Role', 'Other::Role';
ff687069 101};
b3bfbec3 102