X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fbuildall.t;h=9f441f0c171e00311e9c0be64f31dbc0d6dc87b4;hb=e25e8acf5535c74e71e72fda414ebf9504a52ea1;hp=7e4b9534b15b47845632fa72d28be6b4c6361fb7;hpb=077bd02695868c617d424bb451b6e63020d2db25;p=gitmo%2FMoo.git diff --git a/t/buildall.t b/t/buildall.t index 7e4b953..9f441f0 100644 --- a/t/buildall.t +++ b/t/buildall.t @@ -4,20 +4,45 @@ use Test::More; my @ran; { - package Foo; use Class::Tiny; sub BUILD { push @ran, 'Foo' } - package Bar; use Class::Tiny; extends 'Foo'; sub BUILD { push @ran, 'Bar' } - package Baz; use Class::Tiny; extends 'Bar'; - package Quux; use Class::Tiny; extends 'Baz'; sub BUILD { push @ran, 'Quux' } + package Foo; use Moo; sub BUILD { push @ran, 'Foo' } + package Bar; use Moo; extends 'Foo'; sub BUILD { push @ran, 'Bar' } + package Baz; use Moo; extends 'Bar'; + package Quux; use Moo; extends 'Baz'; sub BUILD { push @ran, 'Quux' } } { package Fleem; - use Class::Tiny; + use Moo; extends 'Quux'; has 'foo' => (is => 'ro'); sub BUILD { push @ran, $_[0]->foo, $_[1]->{bar} } } +{ + package Odd1; + use Moo; + has 'odd1' => (is => 'ro'); + sub BUILD { push @ran, 'Odd1' } + package Odd2; + use Moo; + extends 'Odd1'; + package Odd3; + use Moo; + extends 'Odd2'; + has 'odd3' => (is => 'ro'); + sub BUILD { push @ran, 'Odd3' } +} + +{ + package Sub1; + use Moo; + has 'foo' => (is => 'ro'); + package Sub2; + use Moo; + extends 'Sub1'; + sub BUILD { push @ran, "sub2" } +} + my $o = Quux->new; is(ref($o), 'Quux', 'object returned'); @@ -30,4 +55,18 @@ $o = Fleem->new(foo => 'Fleem1', bar => 'Fleem2'); is(ref($o), 'Fleem', 'object with inline constructor returned'); is_deeply(\@ran, [ qw(Foo Bar Quux Fleem1 Fleem2) ], 'BUILDs ran in order'); +@ran = (); + +$o = Odd3->new(odd1 => 1, odd3 => 3); + +is(ref($o), 'Odd3', 'Odd3 object constructed'); +is_deeply(\@ran, [ qw(Odd1 Odd3) ], 'BUILDs ran in order'); + +@ran = (); + +$o = Sub2->new; + +is(ref($o), 'Sub2', 'Sub2 object constructed'); +is_deeply(\@ran, [ qw(sub2) ], 'BUILD ran'); + done_testing;