5 use Scalar::Util qw/refaddr blessed/;
6 use Test::More tests => 32;
11 with 'Catalyst::ClassData';
13 package ClassDataTest2;
15 extends 'ClassDataTest';
22 my $scalarref = \$scalar;
23 my $coderef = sub { "beep" };
28 my $scalarref2 = \$scalar2;
29 my $coderef2 = sub { "beep" };
32 my @accessors = qw/_arrayref _hashref _scalarref _coderef _scalar/;
33 ClassDataTest->mk_classdata($_) for @accessors;
34 can_ok('ClassDataTest', @accessors);
36 ClassDataTest2->mk_classdata("beep", "meep");
37 is(ClassDataTest2->beep, "meep");
39 ClassDataTest->_arrayref($arrayref);
40 ClassDataTest->_hashref($hashref);
41 ClassDataTest->_scalarref($scalarref);
42 ClassDataTest->_coderef($coderef);
43 ClassDataTest->_scalar($scalar);
45 is(ref(ClassDataTest->_arrayref), 'ARRAY');
46 is(ref(ClassDataTest->_hashref), 'HASH');
47 is(ref(ClassDataTest->_scalarref), 'SCALAR');
48 is(ref(ClassDataTest->_coderef), 'CODE');
49 ok( !ref(ClassDataTest->_scalar) );
50 is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref));
51 is(refaddr(ClassDataTest->_hashref), refaddr($hashref));
52 is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref));
53 is(refaddr(ClassDataTest->_coderef), refaddr($coderef));
54 is(ClassDataTest->_scalar, $scalar);
57 is(ref(ClassDataTest2->_arrayref), 'ARRAY');
58 is(ref(ClassDataTest2->_hashref), 'HASH');
59 is(ref(ClassDataTest2->_scalarref), 'SCALAR');
60 is(ref(ClassDataTest2->_coderef), 'CODE');
61 ok( !ref(ClassDataTest2->_scalar) );
62 is(refaddr(ClassDataTest2->_arrayref), refaddr($arrayref));
63 is(refaddr(ClassDataTest2->_hashref), refaddr($hashref));
64 is(refaddr(ClassDataTest2->_scalarref), refaddr($scalarref));
65 is(refaddr(ClassDataTest2->_coderef), refaddr($coderef));
66 is(ClassDataTest2->_scalar, $scalar);
68 ClassDataTest2->_arrayref($arrayref2);
69 ClassDataTest2->_hashref($hashref2);
70 ClassDataTest2->_scalarref($scalarref2);
71 ClassDataTest2->_coderef($coderef2);
72 ClassDataTest2->_scalar($scalar2);
74 is(refaddr(ClassDataTest2->_arrayref), refaddr($arrayref2));
75 is(refaddr(ClassDataTest2->_hashref), refaddr($hashref2));
76 is(refaddr(ClassDataTest2->_scalarref), refaddr($scalarref2));
77 is(refaddr(ClassDataTest2->_coderef), refaddr($coderef2));
78 is(ClassDataTest2->_scalar, $scalar2);
80 is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref));
81 is(refaddr(ClassDataTest->_hashref), refaddr($hashref));
82 is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref));
83 is(refaddr(ClassDataTest->_coderef), refaddr($coderef));
84 is(ClassDataTest->_scalar, $scalar);