use strict;
use warnings;
use Test::More;
use Scalar::Util qw(refaddr);
{
package Foo;
use Moose;
has 'array' => (
traits => ['Array'],
is => 'ro',
handles => { array_clone => 'shallow_clone' },
);
has 'hash' => (
traits => ['Hash'],
is => 'ro',
handles => { hash_clone => 'shallow_clone' },
);
no Moose;
}
my $array = [ 1, 2, 3 ];
my $hash = { a => 1, b => 2 };
my $obj = Foo->new({
array => $array,
hash => $hash,
});
my $array_clone = $obj->array_clone;
my $hash_clone = $obj->hash_clone;
isnt(refaddr($array), refaddr($array_clone), "array clone refers to new copy");
is_deeply($array_clone, $array, "...but contents are the same");
isnt(refaddr($hash), refaddr($hash_clone), "hash clone refers to new copy");
is_deeply($hash_clone, $hash, "...but contents are the same");
done_testing;