2c076028ce142f42b5968d252cb85034abe3151b
[gitmo/MooseX-Emulate-Class-Accessor-Fast.git] / t / construction.t
1 #!perl
2 use strict;
3 use Test::More tests => 9;
4
5 #1
6 require_ok("MooseX::Emulate::Class::Accessor::Fast");
7
8 {
9   package MyClass;
10   use Moose;
11   with 'MooseX::Emulate::Class::Accessor::Fast';
12 }
13
14 {
15   package MyClass::MooseChild;
16   use Moose;
17   extends 'MyClass';
18 }
19
20 {
21   package MyClass::ImmutableMooseChild;
22   use Moose;
23   extends 'MyClass';
24   __PACKAGE__->meta->make_immutable;
25 }
26
27 {
28   package MyClass::TraditionalChild;
29   use base qw(MyClass);
30 }
31
32 {
33   package MyImmutableClass;
34   use Moose;
35   with 'MooseX::Emulate::Class::Accessor::Fast';
36   __PACKAGE__->meta->make_immutable;
37 }
38
39 {
40   package MyImmutableClass::MooseChild;
41   use Moose;
42   extends 'MyImmutableClass';
43 }
44
45 {
46   package MyImmutableClass::ImmutableMooseChild;
47   use Moose;
48   extends 'MyImmutableClass';
49   __PACKAGE__->meta->make_immutable;
50 }
51
52 {
53   package MyImmutableClass::TraditionalChild;
54   use base qw(MyImmutableClass);
55 }
56
57 # 2-9
58 foreach my $class (qw/
59                       MyClass 
60                       MyImmutableClass 
61                       MyClass::MooseChild 
62                       MyClass::ImmutableMooseChild  
63                       MyClass::TraditionalChild 
64                       MyImmutableClass::MooseChild 
65                       MyImmutableClass::ImmutableMooseChild 
66                       MyImmutableClass::TraditionalChild
67                                                            /) {
68     my $instance = $class->new(foo => 'bar');
69     is($instance->{foo}, 'bar', $class . " has CAF construction behavior");
70 }
71