File: construction.t

package info (click to toggle)
libmoosex-emulate-class-accessor-fast-perl 0.009032-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 168 kB
  • sloc: perl: 224; makefile: 2
file content (71 lines) | stat: -rw-r--r-- 1,522 bytes parent folder | download | duplicates (3)
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
use strict;
use warnings;
use Test::More tests => 9;

#1
require_ok("MooseX::Emulate::Class::Accessor::Fast");

{
  package MyClass;
  use Moose;
  with 'MooseX::Emulate::Class::Accessor::Fast';
}

{
  package MyClass::MooseChild;
  use Moose;
  extends 'MyClass';
}

{
  package MyClass::ImmutableMooseChild;
  use Moose;
  extends 'MyClass';
  __PACKAGE__->meta->make_immutable(allow_mutable_ancestors => 1);
}

{
  package MyClass::TraditionalChild;
  use base qw(MyClass);
}

{
  package MyImmutableClass;
  use Moose;
  with 'MooseX::Emulate::Class::Accessor::Fast';
  __PACKAGE__->meta->make_immutable;
}

{
  package MyImmutableClass::MooseChild;
  use Moose;
  extends 'MyImmutableClass';
}

{
  package MyImmutableClass::ImmutableMooseChild;
  use Moose;
  extends 'MyImmutableClass';
  __PACKAGE__->meta->make_immutable;
}

{
  package MyImmutableClass::TraditionalChild;
  use base qw(MyImmutableClass);
}

# 2-9
foreach my $class (qw/
                      MyClass 
                      MyImmutableClass 
                      MyClass::MooseChild 
                      MyClass::ImmutableMooseChild  
                      MyClass::TraditionalChild 
                      MyImmutableClass::MooseChild 
                      MyImmutableClass::ImmutableMooseChild 
                      MyImmutableClass::TraditionalChild
                                                           /) {
    my $instance = $class->new(foo => 'bar');
    is($instance->{foo}, 'bar', $class . " has CAF construction behavior");
}