root/branches/release-40/t/lib/Test/Deep/Number.pm @ 2583

Revision 2583, 1.0 kB (checked in by mpaschal, 18 months ago)

Add Test::Deep to t/lib, since we already use it in driver-tests.pl
BugzID: 79953

Line 
1use strict;
2use warnings;
3
4package Test::Deep::Number;
5
6use Test::Deep::Cmp;
7
8use Scalar::Util;
9
10sub init
11{
12        my $self = shift;
13
14        $self->{val} = shift(@_) + 0;
15        $self->{tolerance} = shift;
16}
17
18sub descend
19{
20        my $self = shift;
21        my $got = shift;
22        $self->data->{got_string} = $got;
23        {
24                no warnings 'numeric';
25                $got += 0;
26        }
27
28        $self->data->{got} = $got;
29        if (defined(my $tolerance = $self->{tolerance}))
30        {
31                return abs($got - $self->{val}) <= $tolerance;
32        }
33        else
34        {
35                return $got == $self->{val};
36        }
37}
38
39sub diag_message
40{
41        my $self = shift;
42
43        my $where = shift;
44
45        return "Comparing $where as a number";
46}
47
48sub renderGot
49{
50        my $self = shift;
51        my $val = shift;
52
53        my $got_string = $self->data->{got_string};
54        if ("$val" ne "$got_string")
55        {
56                $got_string = $self->SUPER::renderGot($got_string);
57                return "$val ($got_string)"
58        }
59        else
60        {
61                return $val;
62        }
63}
64sub renderExp
65{
66        my $self = shift;
67
68        my $exp = $self->{val};
69
70        if (defined(my $tolerance = $self->{tolerance}))
71        {
72                return "$exp +/- $tolerance";
73        }
74        else
75        {
76                return $exp;
77        }
78}
79
801;
Note: See TracBrowser for help on using the browser.