use
lib
qw( ./lib ./t/lib ../inc ./inc )
;
ok(!BigInteger->coercion->frozen,
'coercions are not initially frozen'
);
BigInteger->coercion->add_type_coercions(Undef,
sub
{ 777 });
ok(!BigInteger->coercion->frozen,
'coercions do not freeze because of adding code'
);
is(BigInteger->coerce(
undef
), 777,
'... and they work'
);
BigInteger->coercion->moose_coercion;
ok(BigInteger->coercion->frozen,
'coercions do freeze when forced inflation to Moose'
);
my
$e
= exception {
BigInteger->coercion->add_type_coercions(Item,
sub
{ 999 })
};
like(
$e
,
qr{Attempt to add coercion code to a Type::Coercion which has been frozen}
,
'cannot add code to a frozen coercion'
);
BigInteger->coercion->i_really_want_to_unfreeze;
ok(!BigInteger->coercion->frozen,
'i_really_want_to_unfreeze'
);
$e
= exception {
BigInteger->coercion->add_type_coercions(Item,
sub
{ 888 })
};
is(
$e
,
undef
,
'... can now add coercions'
);
is(BigInteger->coerce(\
$e
), 888,
'... ... which work'
);
done_testing;