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