Move t/*/t into t/001_mouse
[gitmo/Mouse.git] / t / 001_mouse / 400-define-role.t
CommitLineData
995061c2 1#!/usr/bin/env perl
2use strict;
3use warnings;
43e6a50b 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 };
612d3e1a 74 our $TODO;
75 local $TODO = "Mouse::Role does not currently support 'excludes'";
e9d57bdf 76 ::ok(!$@, "excludes");
eb812bde 77
78 no Mouse::Role;
e9d57bdf 79};
eb812bde 80
4377514b 81throws_ok {
82 package Role;
83 use Mouse::Role;
84
85 confess "Mouse::Role exports confess";
86
87} qr/^Mouse::Role exports confess/;
88
89lives_ok {
90 package Role;
91 use Mouse::Role;
92
93 my $obj = bless {} => "Impromptu::Class";
94 ::is(blessed($obj), "Impromptu::Class");
95};
96
ff687069 97lives_ok{
b3bfbec3 98 package Class;
99 use Mouse;
100
101 with 'Role', 'Other::Role';
ff687069 102};
b3bfbec3 103