#!perl -w
; use strict
; use Test::More tests => 18
; use strict
#; use Data::Dumper
; my $base = BaseClass->new
; my $sub = SubClass->new
; my $other = Other->new
; is_deeply( scalar $base->group1
, { one => 2
, two => 2
}
)
; is_deeply( scalar BaseClass->group1
, { one => 2
, two => 2
}
)
; is_deeply( \%BaseClass::group1
, { one => 2
, two => 2
}
)
; is_deeply( scalar $sub->group1
, { one => 4
, three => 4,
}
)
; is_deeply( scalar SubClass->group1
, { one => 4
, three => 4,
}
)
; is_deeply( \%SubClass::group1
, { one => 4
, three => 4,
}
)
; is_deeply( \%BaseClass::group1
, { one => 2
, two => 2
}
)
; $base->group1( one => 1
, two => 2
)
; is_deeply( scalar $base->group1
, { one => 1
, two => 2
}
)
; is_deeply( scalar BaseClass->group1
, { one => 1
, two => 2
}
)
; is_deeply( \%BaseClass::group1
, { one => 1
, two => 2
}
)
; $sub->one = 1
; SubClass->three = 3
; is_deeply( scalar $sub->group1
, { one => 1
, three => 3,
}
)
; is_deeply( scalar SubClass->group1
, { one => 1
, three => 3,
}
)
; is_deeply( \%SubClass::group1
, { one => 1
, three => 3,
}
)
; is_deeply( scalar $other->group1
, { four => undef
}
)
; is_deeply( scalar Other->group1
, { four => undef
}
)
; is_deeply( \%Other::group1
, { four => undef
}
)
# double check init and defaults
; is_deeply( scalar $other->group1
, { four => undef
}
)
; is_deeply( \%Other::group1
, { four => undef
}
)
; package BaseClass
; use Class::constr
; our @props
; BEGIN
{ @props = { name => [ "one"
, "two"
]
, default => 2
}
}
; use Package::groups{ name => 'group1'
, props => \@props
}
; package SubClass
; use base 'BaseClass'
; use Package::groups { name => 'group1'
, props => [ { name => [ "one"
, "three"
]
, default => 4
}
]
}
; package Other
; use base 'SubClass'
; use Package::groups { name => 'group1'
, props => [ 'four' ]
}