#!/usr/bin/perl -w
use strict;

use Test::More tests => 8;

use POE::Component::IKC::Freezer qw(freeze thaw dclone);

pass( "Loaded" );

######################### End of black magic.

my $data={foo=>"bar", biff=>[qw(hello world)]};


my $str=freeze($data);
ok( $str, "freeze" );

my $data2=thaw($str);
ok( $data2, "thaw" );
is_deeply( $data, $data2, "Round trip" );


$data2=dclone($data);
is_deeply($data, $data2, "dclone");


$data->{biffle}=$data->{biff};
$data2=dclone($data);
is( $data->{biffle}, $data->{biff}, "Both" );
is_deeply($data, $data2, "dclone");


# circular reference
$data->{flap}=$data->{biffle};
push @{$data->{biffle}}, $data->{flap};
$data2=dclone($data);

is( $data->{biffle}[-1], $data->{biffle}, "Deeply" );