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