Added get/set_component_class
[p5sagit/Class-Accessor-Grouped.git] / t / inherited.t
CommitLineData
c46050d3 1use Test::More tests => 33;
e6f2a0fd 2use strict;
3use warnings;
4use lib 't/lib';
5use SuperInheritedGroups;
6use NotHashBased;
7
8my $super = SuperInheritedGroups->new;
9my $base = BaseInheritedGroups->new;
10
11# set base. base, super, object = base
12is(BaseInheritedGroups->basefield('All Your Base'), 'All Your Base');
13is(SuperInheritedGroups->basefield, 'All Your Base');
14is($super->basefield, 'All Your Base');
15is($base->basefield, 'All Your Base');
16
17# set super. super = super, base = base, object = super
18is(SuperInheritedGroups->basefield('Now Its Our Base'), 'Now Its Our Base');
19is(SuperInheritedGroups->basefield, 'Now Its Our Base');
20is(BaseInheritedGroups->basefield, 'All Your Base');
21is($super->basefield, 'Now Its Our Base');
22is($base->basefield, 'All Your Base');
23
24#set base
25is($base->basefield('First Base'), 'First Base');
26is($base->basefield, 'First Base');
27is($super->basefield, 'Now Its Our Base');
28is(BaseInheritedGroups->basefield, 'All Your Base');
29is(SuperInheritedGroups->basefield, 'Now Its Our Base');
30
31# set object, object = object, super = super, base = base
32is($super->basefield('Third Base'), 'Third Base');
33is($super->basefield, 'Third Base');
34is(SuperInheritedGroups->basefield, 'Now Its Our Base');
35is(BaseInheritedGroups->basefield, 'All Your Base');
36
37# create new super. new = base, object = object, super = super, base = base
38my $newsuper = SuperInheritedGroups->new;
39is($newsuper->basefield, 'Now Its Our Base');
40is($super->basefield, 'Third Base');
41is(SuperInheritedGroups->basefield, 'Now Its Our Base');
42is(BaseInheritedGroups->basefield, 'All Your Base');
43
44# create new base. new = base, super = super, base = base
45my $newbase = BaseInheritedGroups->new;
46is($newbase->basefield, 'All Your Base');
47is($newsuper->basefield, 'Now Its Our Base');
48is($super->basefield, 'Third Base');
49is(SuperInheritedGroups->basefield, 'Now Its Our Base');
50is(BaseInheritedGroups->basefield, 'All Your Base');
51
52# croak on get/set on non hash-based object
53my $dying = NotHashBased->new;
54
55eval {
56 $dying->killme;
57};
58ok($@ =~ /Cannot get.*is not hash-based/);
59
60eval {
61 $dying->killme('foo');
62};
63ok($@ =~ /Cannot set.*is not hash-based/);
2d6912a0 64
65# make sure we're get defined items, even 0, ''
66BaseInheritedGroups->basefield('base');
67SuperInheritedGroups->basefield(0);
68is(SuperInheritedGroups->basefield, 0);
69
70BaseInheritedGroups->basefield('base');
71SuperInheritedGroups->basefield('');
72is(SuperInheritedGroups->basefield, '');
73
74BaseInheritedGroups->basefield('base');
75SuperInheritedGroups->basefield(undef);
76is(SuperInheritedGroups->basefield, 'base');
77
c46050d3 78is(BaseInheritedGroups->undefined, undef);