Clone
view release on metacpan or search on metacpan
t/02-hash.t view on Meta::CPAN
sub new
{
my $class = shift;
my %self = @_;
bless \%self, $class;
}
sub DESTROY
{
my $self = shift;
# warn "DESTROYING $self";
}
package main;
sub ok { print "ok $test\n"; $test++ }
sub not_ok { print "not ok $test\n"; $test++ }
$^W = 0;
$test = 2;
my $a = Test::Hash->new(
level => 1,
href => {
level => 2,
href => {
level => 3,
href => {
level => 4,
},
},
},
);
$a->{a} = $a;
my $b = $a->clone(0);
my $c = $a->clone(3);
$a->{level} == $b->{level} ? ok : not_ok;
$b->{href} == $a->{href} ? ok : not_ok;
$c->{href} != $a->{href} ? ok : not_ok;
$b->{href}{href} == $a->{href}{href} ? ok : not_ok;
$c->{href}{href} != $a->{href}{href} ? ok : not_ok;
$c->{href}{href}{level} == 3 ? ok : not_ok;
$c->{href}{href}{href}{level} == 4 ? ok : not_ok;
$b->{href}{href}{href} == $a->{href}{href}{href} ? ok : not_ok;
$c->{href}{href}{href} == $a->{href}{href}{href} ? ok : not_ok;
my %circ = ();
$circ{c} = \%circ;
my $cref = clone(\%circ);
if ($has_data_dumper) {
Dumper(\%circ) eq Dumper($cref) ? ok : not_ok;
}
# test for unicode support
{
my $a = { chr(256) => 1 };
my $b = clone( $a );
ord( (keys(%$a))[0] ) == ord( (keys(%$b))[0] ) ? ok : not_ok;
}
( run in 1.675 second using v1.01-cache-2.11-cpan-39bf76dae61 )