[Bioperl-l] evalues/floating point tests
Chris Fields
cjfields at illinois.edu
Mon Jan 19 17:02:51 UTC 2009
On Jan 19, 2009, at 1:33 AM, Chad Davis wrote:
> I would like to suggest, once the naming issue has been resolved,
> that this
> also be sent on to the Test::More people. Seems it would be generally
> useful, beyond Bioperl, to validate floating point numbers in tests.
> I'm
> doing this by hand in my current tests with something like:
>
> $tolerance = 0.001;
> ok($got < $expected + $tolerance && $got > $expected - $tolerance,
> "Within
> tolerated rounding error ...");
>
> ... which is a very indirect workaround.
The method is just a simple wrapper around is() like so:
is(sprintf("%g",$val1), sprintf("%g",$val2), $msg);
It captures possibly undef values and performs a simple is() on them.
If we needed we can add an extra parameter that indicates the level of
precision:
sub float_is ($$$;$) {
my ($val1, $val2, $precision, $msg) = @_;
# after some routine checks
is(sprintf("%.${precision}g",$val1), sprintf("%.${precision}g",
$val2), $msg);
}
> And if anyone is counting, I also vote for Mark's
> "float_is" ("float" being
> the adjective modifying the type of "is", rather than a predicate,
> which can
> become confusing, as you noted).
Agreed. Any dissent? Again, I can change that but once it's in then
it's a done deal.
> Thanks for all the work on 1.6,
> Cheers,
> Chad
Thanks Chad. I've looked on the Test::Simple/More google list to see
if implementing something similar has been suggested in the past but
nothing popped up. I'll post something and see what schwern says.
chris
More information about the Bioperl-l
mailing list