nicer action sorting for Path
[catagits/Catalyst-Runtime.git] / t / unit_core_classdata.t
CommitLineData
76aab993 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5use Scalar::Util qw/refaddr blessed/;
46d0346d 6use 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
38my @accessors = qw/_arrayref _hashref _scalarref _coderef _scalar/;
39ClassDataTest->mk_classdata($_) for @accessors;
40can_ok('ClassDataTest', @accessors);
41
42ClassDataTest2->mk_classdata("beep", "meep");
43is(ClassDataTest2->beep, "meep");
44
45ClassDataTest->_arrayref($arrayref);
46ClassDataTest->_hashref($hashref);
47ClassDataTest->_scalarref($scalarref);
48ClassDataTest->_coderef($coderef);
49ClassDataTest->_scalar($scalar);
50
51is(ref(ClassDataTest->_arrayref), 'ARRAY');
52is(ref(ClassDataTest->_hashref), 'HASH');
53is(ref(ClassDataTest->_scalarref), 'SCALAR');
54is(ref(ClassDataTest->_coderef), 'CODE');
55ok( !ref(ClassDataTest->_scalar) );
56is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref));
57is(refaddr(ClassDataTest->_hashref), refaddr($hashref));
58is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref));
59is(refaddr(ClassDataTest->_coderef), refaddr($coderef));
60is(ClassDataTest->_scalar, $scalar);
61
62
63is(ref(ClassDataTest2->_arrayref), 'ARRAY');
64is(ref(ClassDataTest2->_hashref), 'HASH');
65is(ref(ClassDataTest2->_scalarref), 'SCALAR');
66is(ref(ClassDataTest2->_coderef), 'CODE');
67ok( !ref(ClassDataTest2->_scalar) );
68is(refaddr(ClassDataTest2->_arrayref), refaddr($arrayref));
69is(refaddr(ClassDataTest2->_hashref), refaddr($hashref));
70is(refaddr(ClassDataTest2->_scalarref), refaddr($scalarref));
71is(refaddr(ClassDataTest2->_coderef), refaddr($coderef));
72is(ClassDataTest2->_scalar, $scalar);
73
74ClassDataTest2->_arrayref($arrayref2);
75ClassDataTest2->_hashref($hashref2);
76ClassDataTest2->_scalarref($scalarref2);
77ClassDataTest2->_coderef($coderef2);
78ClassDataTest2->_scalar($scalar2);
79
80is(refaddr(ClassDataTest2->_arrayref), refaddr($arrayref2));
81is(refaddr(ClassDataTest2->_hashref), refaddr($hashref2));
82is(refaddr(ClassDataTest2->_scalarref), refaddr($scalarref2));
83is(refaddr(ClassDataTest2->_coderef), refaddr($coderef2));
84is(ClassDataTest2->_scalar, $scalar2);
85
86is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref));
87is(refaddr(ClassDataTest->_hashref), refaddr($hashref));
88is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref));
89is(refaddr(ClassDataTest->_coderef), refaddr($coderef));
90is(ClassDataTest->_scalar, $scalar);
46d0346d 91
92ClassDataTest->_arrayref($arrayref3);
93ClassDataTest->_hashref($hashref3);
94ClassDataTest->_scalarref($scalarref3);
95ClassDataTest->_coderef($coderef3);
96ClassDataTest->_scalar($scalar3);
97
98is(refaddr(ClassDataTest->_arrayref), refaddr($arrayref3));
99is(refaddr(ClassDataTest->_hashref), refaddr($hashref3));
100is(refaddr(ClassDataTest->_scalarref), refaddr($scalarref3));
101is(refaddr(ClassDataTest->_coderef), refaddr($coderef3));
102is(ClassDataTest->_scalar, $scalar3);