1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
use strictures 1;
use Test::More;
{
package MyClass0;
BEGIN { our @ISA = 'ZeroZero' }
use Moo;
}
BEGIN {
is(
$INC{'Class/Tiny/Object.pm'}, undef,
'Object.pm not loaded if not required'
);
}
{
package MyClass1;
use Moo;
}
is_deeply(
[ @MyClass1::ISA ], [ 'Moo::Object' ], 'superclass defaulted'
);
{
package MyClass2;
use base qw(MyClass1);
use Moo;
}
is_deeply(
[ @MyClass2::ISA ], [ 'MyClass1' ], 'prior superclass left alone'
);
{
package MyClass3;
use Moo;
extends 'MyClass2';
}
is_deeply(
[ @MyClass3::ISA ], [ 'MyClass2' ], 'extends sets superclass'
);
{ package WhatTheFlyingFornication; sub wtff {} }
{
package MyClass4;
use Moo;
extends 'WhatTheFlyingFornication';
extends qw(MyClass2 MyClass3);
}
is_deeply(
[ @MyClass4::ISA ], [ qw(MyClass2 MyClass3) ], 'extends overwrites'
);
{
package MyClass5;
use Moo;
sub foo { 'foo' }
around foo => sub { my $orig = shift; $orig->(@_).' with around' };
}
is(MyClass5->foo, 'foo with around', 'method modifier');
done_testing;
|