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