BEGIN { chdir 't' if -d 't' };
use strict;
use lib '../lib';
use Test::More 'no_plan';
use Data::Dumper;
my $Class = 'Object::Accessor';
use_ok($Class);
my $Object = $Class->new;
my $Acc = 'foo';
my $Alias = 'bar';
ok( $Object, "Object created" );
isa_ok( $Object, $Class, " Object" );
### add an accessor
{ my $rv = $Object->mk_accessors( $Acc );
ok( $rv, "Created accessor '$Acc'" );
ok( $Object->$Acc( $$ )," Set value" );
is( $Object->$Acc, $$, " Retrieved value" );
}
### add an alias
{ my $rv = $Object->mk_aliases( $Alias => $Acc );
ok( $rv, "Created alias '$Alias'" );
ok( $Object->can( $Alias ),
" Alias '$Alias' exists" );
is( $Object->$Alias, $Object->$Acc,
" Alias & original return the same value" );
ok( $Object->$Alias( $$.$$ ),
" Changed value using alias" );
is( $Object->$Alias, $Object->$Acc,
" Alias & original return the same value" );
}
### test if cloning works
{ my $clone = $Object->mk_clone;
ok( $clone, "Cloned object" );
is_deeply( [sort $clone->ls_accessors], [sort $Object->ls_accessors],
" All accessors cloned" );
ok( $clone->$Acc( $$ ), " Set value" );
is( $clone->$Alias, $clone->$Acc,
" Alias & original return the same value" );
ok( $clone->$Alias( $$.$$ ),
" Changed value using alias" );
is( $clone->$Alias, $clone->$Acc,
" Alias & original return the same value" );
}