Blob Blame History Raw
From bc6b3c66ce09ecd2e787702954029f18a44aa776 Mon Sep 17 00:00:00 2001
From: Karel Miko <karel.miko@gmail.com>
Date: Sat, 19 Oct 2019 19:28:41 +0200
Subject: [PATCH] fix #56 Math::BigInt 1.999817 breaks the tests of CryptX
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Petr Písař <ppisar@redhat.com>
---
 t/mbi_ltm/bigintpm.inc |  8 +++----
 t/mbi_ltm_bigintpm.t   |  2 +-
 t/mbi_ltm_bugs.t       | 54 +++++++++++-------------------------------
 3 files changed, 19 insertions(+), 45 deletions(-)

diff --git a/t/mbi_ltm/bigintpm.inc b/t/mbi_ltm/bigintpm.inc
index 35efeca4..2792cca7 100644
--- a/t/mbi_ltm/bigintpm.inc
+++ b/t/mbi_ltm/bigintpm.inc
@@ -2643,10 +2643,10 @@ abc:12:NaN
 -2:3:-8
 -2:4:16
 -2:5:-32
-2:-1:NaN
--2:-1:NaN
-2:-2:NaN
--2:-2:NaN
+2:-1:0
+-2:-1:0
+2:-2:0
+-2:-2:0
 # inf tests
 +inf:1234500012:inf
 -inf:1234500012:inf
diff --git a/t/mbi_ltm_bigintpm.t b/t/mbi_ltm_bigintpm.t
index 976e7b1e..b90213f7 100644
--- a/t/mbi_ltm_bigintpm.t
+++ b/t/mbi_ltm_bigintpm.t
@@ -6,7 +6,7 @@ use warnings;
 use Test::More;
 
 BEGIN {
-  plan skip_all => "requires Math::BigInt 1.999712+" unless eval { require Math::BigInt && eval($Math::BigInt::VERSION) >= 1.999712 };
+  plan skip_all => "requires Math::BigInt 1.999817+" unless eval { require Math::BigInt && eval($Math::BigInt::VERSION) >= 1.999817 };
   plan tests => 3712            # tests in require'd file
                  + 6;           # tests in this file
 }
diff --git a/t/mbi_ltm_bugs.t b/t/mbi_ltm_bugs.t
index 976e7b1e..3c535285 100644
--- a/t/mbi_ltm_bugs.t
+++ b/t/mbi_ltm_bugs.t
@@ -6,47 +6,21 @@ use warnings;
 use Test::More;
 
 BEGIN {
-  plan skip_all => "requires Math::BigInt 1.999712+" unless eval { require Math::BigInt && eval($Math::BigInt::VERSION) >= 1.999712 };
-  plan tests => 3712            # tests in require'd file
-                 + 6;           # tests in this file
+  plan skip_all => "requires Math::BigInt" unless eval { require Math::BigInt };
+  plan tests => 2;
 }
 
 use Math::BigInt lib => 'LTM';
 
-our ($CLASS, $CALC);
-$CLASS = "Math::BigInt";
-$CALC  = "Math::BigInt::LTM";
-
-my $x;
-
-#############################################################################
-# from_hex(), from_bin() and from_oct() tests
-
-$x = Math::BigInt->from_hex('0xcafe');
-is($x, "51966",
-   qq|Math::BigInt->from_hex("0xcafe")|);
-
-$x = Math::BigInt->from_hex('0xcafebabedead');
-is($x, "223195403574957",
-   qq|Math::BigInt->from_hex("0xcafebabedead")|);
-
-$x = Math::BigInt->from_bin('0b1001');
-is($x, "9",
-   qq|Math::BigInt->from_bin("0b1001")|);
-
-$x = Math::BigInt->from_bin('0b1001100110011001100110011001');
-is($x, "161061273",
-   qq|Math::BigInt->from_bin("0b1001100110011001100110011001");|);
-
-$x = Math::BigInt->from_oct('0775');
-is($x, "509",
-   qq|Math::BigInt->from_oct("0775");|);
-
-$x = Math::BigInt->from_oct('07777777777777711111111222222222');
-is($x, "9903520314281112085086151826",
-   qq|Math::BigInt->from_oct("07777777777777711111111222222222");|);
-
-#############################################################################
-# all the other tests
-
-require './t/mbi_ltm/bigintpm.inc';       # all tests here for sharing
+my $V = $Math::BigInt::VERSION;
+
+# https://github.com/DCIT/perl-CryptX/issues/56
+{
+  my ($x, $y);
+  $x = Math::BigInt->new("2");
+  $y = Math::BigInt->new("-1");
+  is($x ** $y, $V < 1.999817 ? 'NaN' : 0);
+  $x = Math::BigInt->new("-2");
+  $y = Math::BigInt->new("-2");
+  is($x ** $y, $V < 1.999817 ? 'NaN' : 0);
+}
-- 
2.21.0