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