merged conflicts
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_classdata.t
1 use strict;
2 use warnings;
3 use Scalar::Util qw/refaddr blessed/;
4 use Test::More tests => 37;
5
6 {
7   package ClassDataTest;
8   use Moose;
9   with 'Catalyst::ClassData';
10
11   package ClassDataTest2;
12   use Moose;
13   extends 'ClassDataTest';
14
15 }
16
17   my $scalar = '100';
18   my $arrayref = [];
19   my $hashref = {};
20   my $scalarref = \$scalar;
21   my $coderef = sub { "beep" };
22
23   my $scalar2 = '200';
24   my $arrayref2 = [];
25   my $hashref2 = {};
26   my $scalarref2 = \$scalar2;
27   my $coderef2 = sub { "beep" };
28
29   my $scalar3 = '300';
30   my $arrayref3 = [];
31   my $hashref3 = {};
32   my $scalarref3 = \$scalar3;
33   my $coderef3 = sub { "beep" };
34
35
36 my @accessors = qw/_arrayref _hashref _scalarref _coderef _scalar/;
37 ClassDataTest->mk_classdata($_) for @accessors;
38 can_ok('ClassDataTest', @accessors);
39
40 ClassDataTest2->mk_classdata("beep", "meep");
41 is(ClassDataTest2->beep, "meep");
42
43 ClassDataTest->_arrayref($arrayref);
44 ClassDataTest->_hashref($hashref);
45 ClassDataTest->_scalarref($scalarref);
46 ClassDataTest->_coderef($coderef);
47 ClassDataTest->_scalar($scalar);
48
49 is(ref(ClassDataTest->_arrayref), 'ARRAY');
50 is(ref(ClassDataTest->_hashref), 'HASH');
51 is(ref(ClassDataTest->_scalarref), 'SCALAR');
52 is(ref(ClassDataTest->_coderef), 'CODE');
53 ok( !ref(ClassDataTest->_scalar) );
54 is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref));
55 is(refaddr(ClassDataTest->_hashref), refaddr($hashref));
56 is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref));
57 is(refaddr(ClassDataTest->_coderef), refaddr($coderef));
58 is(ClassDataTest->_scalar, $scalar);
59
60
61 is(ref(ClassDataTest2->_arrayref), 'ARRAY');
62 is(ref(ClassDataTest2->_hashref), 'HASH');
63 is(ref(ClassDataTest2->_scalarref), 'SCALAR');
64 is(ref(ClassDataTest2->_coderef), 'CODE');
65 ok( !ref(ClassDataTest2->_scalar) );
66 is(refaddr(ClassDataTest2->_arrayref), refaddr($arrayref));
67 is(refaddr(ClassDataTest2->_hashref), refaddr($hashref));
68 is(refaddr(ClassDataTest2->_scalarref), refaddr($scalarref));
69 is(refaddr(ClassDataTest2->_coderef), refaddr($coderef));
70 is(ClassDataTest2->_scalar, $scalar);
71
72 ClassDataTest2->_arrayref($arrayref2);
73 ClassDataTest2->_hashref($hashref2);
74 ClassDataTest2->_scalarref($scalarref2);
75 ClassDataTest2->_coderef($coderef2);
76 ClassDataTest2->_scalar($scalar2);
77
78 is(refaddr(ClassDataTest2->_arrayref), refaddr($arrayref2));
79 is(refaddr(ClassDataTest2->_hashref), refaddr($hashref2));
80 is(refaddr(ClassDataTest2->_scalarref), refaddr($scalarref2));
81 is(refaddr(ClassDataTest2->_coderef), refaddr($coderef2));
82 is(ClassDataTest2->_scalar, $scalar2);
83
84 is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref));
85 is(refaddr(ClassDataTest->_hashref), refaddr($hashref));
86 is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref));
87 is(refaddr(ClassDataTest->_coderef), refaddr($coderef));
88 is(ClassDataTest->_scalar, $scalar);
89
90 ClassDataTest->_arrayref($arrayref3);
91 ClassDataTest->_hashref($hashref3);
92 ClassDataTest->_scalarref($scalarref3);
93 ClassDataTest->_coderef($coderef3);
94 ClassDataTest->_scalar($scalar3);
95
96 is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref3));
97 is(refaddr(ClassDataTest->_hashref), refaddr($hashref3));
98 is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref3));
99 is(refaddr(ClassDataTest->_coderef), refaddr($coderef3));
100 is(ClassDataTest->_scalar, $scalar3);
101
102 my $i = bless {}, 'ClassDataTest';
103 $i->_scalar('foo');
104