#!perl -w
use strict;
use Test::More tests => 4;
use Test::Exception;
use Storable qw(freeze);
use Class::Monadic qw(:all);
{
package T;
sub new{
my $class = shift;
return bless {@_}, $class;
}
sub clone{
Storable::dclone($_[0]);
}
}
my $t = T->new(foo => 42);
is_deeply $t->clone, $t;
monadic($t)->add_method(pi => sub{ 3.14 });
lives_and{
my $x = $t->clone;
isa_ok $t, 'T';
can_ok $t, 'pi';
};
dies_ok{
freeze($t);
};