Commit | Line | Data |
567f5231 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | package ClassFoo; |
5 | use Moose; |
6 | use MooseX::ClassAttribute; |
7 | |
8 | class_has 'chas' => ( |
9 | isa => 'Int', |
10 | is => 'ro', |
11 | default => 1, |
12 | initializer => sub { $_[2]->($_[1] + 1) } |
13 | ); |
14 | |
15 | package ClassBar; |
16 | use Moose; |
17 | |
18 | has 'chas' => ( |
19 | isa => 'Int', |
20 | is => 'ro', |
21 | default => 1, |
22 | initializer => sub { $_[2]->($_[1] + 1) } |
23 | ); |
24 | |
25 | package ClassBaz; |
26 | use Moose; |
27 | use MooseX::ClassAttribute; |
28 | |
29 | class_has 'chas' => ( |
30 | isa => 'Str', |
31 | is => 'rw', |
32 | default => 'Foobar', |
33 | trigger => sub { die __PACKAGE__ } |
34 | ); |
35 | |
36 | package ClassQuz; |
37 | use Moose; |
38 | |
39 | has 'chas' => ( |
40 | isa => 'Str', |
41 | is => 'rw', |
42 | default => 'Foobar', |
43 | trigger => sub { die __PACKAGE__ } |
44 | ); |
45 | |
46 | |
47 | |
48 | package main; |
49 | use Test::More tests => 4; |
50 | |
51 | is ( ClassFoo->chas, 2, "ClassFoo's class_has (ClassAttribute) initializer fires" ); |
52 | |
53 | is ( ClassBar->new->chas, 2, "ClassBar's has (non-ClassAttribute) initializer fires" ); |
54 | |
55 | eval { ClassBaz->new->chas('foobar') }; |
56 | like ( $@, qr/ClassBaz/, "ClassBaz's class_has (ClassAttribute) trigger fires" ); |
57 | |
58 | eval { ClassQuz->new->chas('foobar') }; |
59 | like ( $@, qr/ClassQuz/, "ClassQuz's has (non-ClassAttribute) trigger fires" ); |