The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

# test that overloaded compare works when NaN are involved

use strict;
use Test::More;

BEGIN
  {
  $| = 1;
  chdir 't' if -d 't';
  unshift @INC, '../lib';	# for running manually
  plan tests => 26;
  }

use Math::BigInt;
use Math::BigFloat;

compare (Math::BigInt->bnan(),   Math::BigInt->bone() );
compare (Math::BigFloat->bnan(), Math::BigFloat->bone() );

sub compare
  {
  my ($nan, $one) = @_;

  is ($one, $one, '1 == 1');

  is ($one != $nan, 1, "1 != NaN");
  is ($nan != $one, 1, "NaN != 1");
  is ($nan != $nan, 1, "NaN != NaN");

  is ($nan == $one, '', "NaN == 1");
  is ($one == $nan, '', "1 == NaN");
  is ($nan == $nan, '', "NaN == NaN");

  is ($nan <= $one, '', "NaN <= 1");
  is ($one <= $nan, '', "1 <= NaN");
  is ($nan <= $nan, '', "NaN <= NaN");

  is ($nan >= $one, '', "NaN >= 1");
  is ($one >= $nan, '', "1 >= NaN");
  is ($nan >= $nan, '', "NaN >= NaN");
  }