Commit | Line | Data |
21035624 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | |
5 | { |
6 | package ClassFoo; |
7 | |
8 | use Moose; |
9 | use MooseX::ClassAttribute; |
10 | |
11 | class_has 'chas' => ( |
12 | isa => 'Int', |
13 | is => 'ro', |
14 | default => 1, |
15 | initializer => sub { $_[2]->( $_[1] + 1 ) } |
16 | ); |
17 | } |
18 | |
19 | { |
20 | package ClassBar; |
21 | use Moose; |
22 | |
23 | has 'chas' => ( |
24 | isa => 'Int', |
25 | is => 'ro', |
26 | default => 1, |
27 | initializer => sub { $_[2]->( $_[1] + 1 ) } |
28 | ); |
29 | } |
30 | |
31 | { |
32 | package ClassBaz; |
33 | use Moose; |
34 | use MooseX::ClassAttribute; |
35 | |
36 | class_has 'chas' => ( |
37 | isa => 'Str', |
38 | is => 'rw', |
39 | default => 'Foobar', |
40 | trigger => sub { die __PACKAGE__ } |
41 | ); |
42 | } |
43 | |
44 | { |
45 | package ClassQuz; |
46 | use Moose; |
47 | |
48 | has 'chas' => ( |
49 | isa => 'Str', |
50 | is => 'rw', |
51 | default => 'Foobar', |
52 | trigger => sub { die __PACKAGE__ } |
53 | ); |
54 | } |
55 | |
56 | { |
57 | local $TODO |
58 | = 'Class attributes with an initializer are not initialized properly'; |
59 | |
60 | is( |
61 | ClassFoo->chas, 2, |
62 | "ClassFoo's class_has (ClassAttribute) initializer fires" |
63 | ); |
64 | } |
65 | |
66 | is( |
67 | ClassBar->new->chas, 2, |
68 | "ClassBar's has (non-ClassAttribute) initializer fires" |
69 | ); |
70 | |
71 | eval { ClassBaz->new->chas('foobar') }; |
72 | like( |
73 | $@, qr/ClassBaz/, |
74 | "ClassBaz's class_has (ClassAttribute) trigger fires" |
75 | ); |
76 | |
77 | eval { ClassQuz->new->chas('foobar') }; |
78 | like( $@, qr/ClassQuz/, "ClassQuz's has (non-ClassAttribute) trigger fires" ); |
79 | |
80 | done_testing(); |