Commit | Line | Data |
3a9a65a4 |
1 | use strictures 1; |
2 | use Test::More; |
3 | |
4 | my @result; |
5 | |
6 | { |
7 | package Foo; |
8 | |
b1eebd55 |
9 | use Moo; |
3a9a65a4 |
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 => ( |
e6f2e914 |
19 | is => 'rw', @isa |
3a9a65a4 |
20 | ); |
21 | has a2 => ( |
e6f2e914 |
22 | is => 'rw', @isa, @trigger |
3a9a65a4 |
23 | ); |
24 | has a3 => ( |
e6f2e914 |
25 | is => 'rw', @isa, @trigger |
3a9a65a4 |
26 | ); |
27 | has a4 => ( |
e6f2e914 |
28 | is => 'rw', @trigger, _mkdefault('a4') |
3a9a65a4 |
29 | ); |
30 | has a5 => ( |
e6f2e914 |
31 | is => 'rw', @trigger, _mkdefault('a5') |
3a9a65a4 |
32 | ); |
33 | has a6 => ( |
e6f2e914 |
34 | is => 'rw', @isa, @trigger, _mkdefault('a6') |
3a9a65a4 |
35 | ); |
36 | has a7 => ( |
e6f2e914 |
37 | is => 'rw', @isa, @trigger, _mkdefault('a7') |
3a9a65a4 |
38 | ); |
39 | } |
40 | |
41 | my $foo = Foo->new(a1 => 'a1', a2 => 'a2', a4 => 'a4', a6 => 'a6'); |
42 | |
43 | is_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 | |
50 | done_testing; |