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