actually document the new request body_data method
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_classdata.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Scalar::Util qw/refaddr blessed/;
6 use Test::More tests => 37;
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
31   my $scalar3 = '300';
32   my $arrayref3 = [];
33   my $hashref3 = {};
34   my $scalarref3 = \$scalar3;
35   my $coderef3 = sub { "beep" };
36
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);
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);
103
104 my $i = bless {}, 'ClassDataTest';
105 $i->_scalar('foo');
106