1package MyBase;
2use Class::Std;
3{
4    my %public_of  :ATTR( :init_arg<pub> );
5    my %private_of :ATTR;
6
7    sub BUILD {
8        my ($self, $ident) = @_;
9
10        $private_of{$ident} = 'base priv';
11    }
12}
13
14package MyDer;
15use base qw( MyBase );
16use Class::Std;
17{
18    my %public_of  :ATTR( :init_arg<pub> );
19    my %private_of :ATTR;
20
21    sub BUILD {
22        my ($self, $ident) = @_;
23
24        $private_of{$ident} = 'der priv';
25    }
26}
27
28
29package main;
30
31my $rep = MyDer->new({
32              MyBase => { pub => 'base pub' },
33              MyDer  => { pub => 'der pub'  },
34          })->_DUMP;
35
36my $hash = eval $rep;
37
38use Test::More 'no_plan';
39
40ok !ref $rep                              => 'Representation is string';
41
42ok $hash                                  => 'Representation is valid';
43
44is $hash->{MyBase}{pub}, 'base pub'       => 'Public base attribute'; 
45is $hash->{MyBase}{'????'}, 'base priv'   => 'Private base attribute'; 
46
47is $hash->{MyDer}{pub}, 'der pub'         => 'Public derived attribute'; 
48is $hash->{MyDer}{'????'}, 'der priv'     => 'Private derived attribute'; 
49