Blame lib/Test/Deep/Number.pm

Packit 61a564
use strict;
Packit 61a564
use warnings;
Packit 61a564
Packit 61a564
package Test::Deep::Number;
Packit 61a564
Packit 61a564
use Test::Deep::Cmp;
Packit 61a564
Packit 61a564
use Scalar::Util;
Packit 61a564
Packit 61a564
sub init
Packit 61a564
{
Packit 61a564
  my $self = shift;
Packit 61a564
Packit 61a564
  $self->{val} = shift(@_) + 0;
Packit 61a564
  $self->{tolerance} = shift;
Packit 61a564
}
Packit 61a564
Packit 61a564
sub descend
Packit 61a564
{
Packit 61a564
  my $self = shift;
Packit 61a564
  my $got = shift;
Packit 61a564
  $self->data->{got_string} = $got;
Packit 61a564
  {
Packit 61a564
    no warnings 'numeric';
Packit 61a564
    $got += 0;
Packit 61a564
  }
Packit 61a564
Packit 61a564
  $self->data->{got} = $got;
Packit 61a564
  if (defined(my $tolerance = $self->{tolerance}))
Packit 61a564
  {
Packit 61a564
    return abs($got - $self->{val}) <= $tolerance;
Packit 61a564
  }
Packit 61a564
  else
Packit 61a564
  {
Packit 61a564
    return $got == $self->{val};
Packit 61a564
  }
Packit 61a564
}
Packit 61a564
Packit 61a564
sub diag_message
Packit 61a564
{
Packit 61a564
  my $self = shift;
Packit 61a564
Packit 61a564
  my $where = shift;
Packit 61a564
Packit 61a564
  return "Comparing $where as a number";
Packit 61a564
}
Packit 61a564
Packit 61a564
sub renderGot
Packit 61a564
{
Packit 61a564
  my $self = shift;
Packit 61a564
  my $val = shift;
Packit 61a564
Packit 61a564
  my $got_string = $self->data->{got_string};
Packit 61a564
  if ("$val" ne "$got_string")
Packit 61a564
  {
Packit 61a564
    $got_string = $self->SUPER::renderGot($got_string);
Packit 61a564
    return "$val ($got_string)"
Packit 61a564
  }
Packit 61a564
  else
Packit 61a564
  {
Packit 61a564
    return $val;
Packit 61a564
  }
Packit 61a564
}
Packit 61a564
sub renderExp
Packit 61a564
{
Packit 61a564
  my $self = shift;
Packit 61a564
Packit 61a564
  my $exp = $self->{val};
Packit 61a564
Packit 61a564
  if (defined(my $tolerance = $self->{tolerance}))
Packit 61a564
  {
Packit 61a564
    return "$exp +/- $tolerance";
Packit 61a564
  }
Packit 61a564
  else
Packit 61a564
  {
Packit 61a564
    return $exp;
Packit 61a564
  }
Packit 61a564
}
Packit 61a564
Packit 61a564
1;