inlining for overloaded object isa/coerce
[gitmo/Moo.git] / t / has-plus.t
CommitLineData
9f10cfe0 1use strictures 1;
2use Test::More;
3use Test::Fatal;
4
5{
6 package RollyRole;
7
8 use Moo::Role;
9
10 has f => (is => 'ro', default => sub { 0 });
11}
12
13{
14 package ClassyClass;
15
16 use Moo;
17
18 has f => (is => 'ro', default => sub { 1 });
19}
20
21{
22 package UsesTheRole;
23
24 use Moo;
25
26 with 'RollyRole';
27}
28
29{
30 package UsesTheRole2;
31
32 use Moo;
33
34 with 'RollyRole';
35
36 has '+f' => (default => sub { 2 });
37}
38
39{
40
41 package ExtendsTheClass;
42
43 use Moo;
44
45 extends 'ClassyClass';
46
47 has '+f' => (default => sub { 3 });
48}
49
50{
51 package BlowsUp;
52
53 use Moo;
54
55 ::like(::exception { has '+f' => () }, qr/\Qhas '+f'/, 'Kaboom');
56}
57
58is(UsesTheRole->new->f, 0, 'role attr');
59is(ClassyClass->new->f, 1, 'class attr');
60is(UsesTheRole2->new->f, 2, 'role attr with +');
61is(ExtendsTheClass->new->f, 3, 'class attr with +');
62
63done_testing;