refactor constructor generation and test more complex cases
[gitmo/Role-Tiny.git] / t / accessor-mixed.t
CommitLineData
3a9a65a4 1use strictures 1;
2use Test::More;
3
4my @result;
5
6{
7 package Foo;
8
9 use Class::Tiny;
10
11 my @isa = (isa => sub { push @result, 'isa', $_[0] });
12 my @trigger = (trigger => sub { push @result, 'trigger', $_[1] });
13 sub _mkdefault {
14 my $val = shift;
15 (default => sub { push @result, 'default', $val; $val; })
16 }
17
18 has a1 => (
19 is => 'ro', @isa
20 );
21 has a2 => (
22 is => 'ro', @isa, @trigger
23 );
24 has a3 => (
25 is => 'ro', @isa, @trigger
26 );
27 has a4 => (
28 is => 'ro', @trigger, _mkdefault('a4')
29 );
30 has a5 => (
31 is => 'ro', @trigger, _mkdefault('a5')
32 );
33 has a6 => (
34 is => 'ro', @isa, @trigger, _mkdefault('a6')
35 );
36 has a7 => (
37 is => 'ro', @isa, @trigger, _mkdefault('a7')
38 );
39}
40
41my $foo = Foo->new(a1 => 'a1', a2 => 'a2', a4 => 'a4', a6 => 'a6');
42
43is_deeply(
44 \@result,
45 [ qw(isa a1 isa a2 trigger a2 trigger a4 default a5 isa a6 trigger a6
46 default a7 isa a7) ],
47 'Stuff fired in expected order'
48);
49
50done_testing;