Commit | Line | Data |
76aab993 |
1 | use strict; |
2 | use warnings; |
3 | use Scalar::Util qw/refaddr blessed/; |
46d0346d |
4 | use Test::More tests => 37; |
76aab993 |
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 | |
46d0346d |
29 | my $scalar3 = '300'; |
30 | my $arrayref3 = []; |
31 | my $hashref3 = {}; |
32 | my $scalarref3 = \$scalar3; |
33 | my $coderef3 = sub { "beep" }; |
34 | |
76aab993 |
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); |
46d0346d |
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); |
81f25ce6 |
101 | |
102 | my $i = bless {}, 'ClassDataTest'; |
103 | $i->_scalar('foo'); |
104 | |