Commit | Line | Data |
098a367b |
1 | use strictures 1; |
2 | use Test::More; |
3 | |
4 | my @ran; |
5 | |
6 | { |
7 | package Foo; use Class::Tiny; sub BUILD { push @ran, 'Foo' } |
8 | package Bar; use Class::Tiny; extends 'Foo'; sub BUILD { push @ran, 'Bar' } |
9 | package Baz; use Class::Tiny; extends 'Bar'; |
10 | package Quux; use Class::Tiny; extends 'Baz'; sub BUILD { push @ran, 'Quux' } |
11 | } |
12 | |
077bd026 |
13 | { |
14 | package Fleem; |
15 | use Class::Tiny; |
16 | extends 'Quux'; |
17 | has 'foo' => (is => 'ro'); |
18 | sub BUILD { push @ran, $_[0]->foo, $_[1]->{bar} } |
19 | } |
20 | |
098a367b |
21 | my $o = Quux->new; |
22 | |
23 | is(ref($o), 'Quux', 'object returned'); |
24 | is_deeply(\@ran, [ qw(Foo Bar Quux) ], 'BUILDs ran in order'); |
25 | |
077bd026 |
26 | @ran = (); |
27 | |
28 | $o = Fleem->new(foo => 'Fleem1', bar => 'Fleem2'); |
29 | |
30 | is(ref($o), 'Fleem', 'object with inline constructor returned'); |
31 | is_deeply(\@ran, [ qw(Foo Bar Quux Fleem1 Fleem2) ], 'BUILDs ran in order'); |
32 | |
098a367b |
33 | done_testing; |