From 38acabfa6089ab8ac469c12b5f55022fb96935e5 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 23 Aug 2021 16:46:06 -0300 Subject: added web vendors --- big-integer/spec/spec.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'big-integer/spec/spec.js') diff --git a/big-integer/spec/spec.js b/big-integer/spec/spec.js index 4d01dd8..be999e9 100644 --- a/big-integer/spec/spec.js +++ b/big-integer/spec/spec.js @@ -630,6 +630,9 @@ describe("BigInteger", function () { } catch (e) { expect(true).toBe(true); } + + expect(bigInt(2).modPow(-3, 11)).toEqualBigInt(7); + expect(bigInt(76455).modPow(-3758223534, 346346)).toEqualBigInt(339949); }); }); @@ -818,7 +821,7 @@ describe("BigInteger", function () { } }); it("correctly identifies pseudo primes", function () { - var largePrimes = ["3825123056546413051", "3825123056546413051", "3825123056546413051", "318665857834031151167461"]; + var largePrimes = ["4033", "4681", "3825123056546413051", "3825123056546413051", "3825123056546413051", "318665857834031151167461"]; for (var i = 0; i < largePrimes.length; i++) { expect(bigInt(largePrimes[i]).isPrime()).toBe(false); } @@ -854,6 +857,24 @@ describe("BigInteger", function () { } } expect(falsePrimes / totalPrimes < 0.001).toBe(true); + }); + it("is predictable given predictable rng", function () { + function getProbablePrimes(fakeRNG) { + var result = []; + for (var i = 1; i < 100; i++) { + var x = bigInt(i); + if (x.isProbablePrime(1, fakeRNG)) { + result.push(i); + } + } + return result; + } + for (var i = 0; i < 100; i++) { + function fakeRNG() { + return (i * 0.3571) % 1; + } + expect(getProbablePrimes(fakeRNG)).toEqual(getProbablePrimes(fakeRNG)); + } }); }); @@ -1153,6 +1174,14 @@ describe("BigInteger", function () { expect(Math.abs(buckets[i] - ideal) / ideal < 0.1).toBe(true); } }); + it("is predictable given predictable rng", function () { + for (var i = 0; i < 1e3; i++) { + function fakeRNG() { + return (i * 0.3571) % 1; + } + expect(bigInt.randBetween(0, 1024, fakeRNG)).toEqualBigInt(bigInt.randBetween(0, 1024, fakeRNG)); + } + }); }); describe("isInstance", function () { -- cgit v1.2.3