1# -*- mode: perl; -*-
2
3# test that overloaded compare works when NaN are involved
4
5use strict;
6use warnings;
7
8use Test::More tests => 26;
9
10use Math::BigInt;
11use Math::BigFloat;
12
13compare('Math::BigInt');
14compare('Math::BigFloat');
15
16sub compare {
17    my $class = shift;
18
19    my $nan = $class->bnan();
20    my $one = $class->bone();
21
22    is($one, $one, "$class->bone() == $class->bone()");
23
24    is($one != $nan, 1, "$class->bone() != $class->bnan()");
25    is($nan != $one, 1, "$class->bnan() != $class->bone()");
26    is($nan != $nan, 1, "$class->bnan() != $class->bnan()");
27
28    is($nan == $one, '', "$class->bnan() == $class->bone()");
29    is($one == $nan, '', "$class->bone() == $class->bnan()");
30    is($nan == $nan, '', "$class->bnan() == $class->bnan()");
31
32    is($nan <= $one, '', "$class->bnan() <= $class->bone()");
33    is($one <= $nan, '', "$class->bone() <= $class->bnan()");
34    is($nan <= $nan, '', "$class->bnan() <= $class->bnan()");
35
36    is($nan >= $one, '', "$class->bnan() >= $class->bone()");
37    is($one >= $nan, '', "$class->bone() >= $class->bnan()");
38    is($nan >= $nan, '', "$class->bnan() >= $class->bnan()");
39}
40