diff options
Diffstat (limited to 'big-integer/spec/spec.js')
-rw-r--r-- | big-integer/spec/spec.js | 31 |
1 files changed, 30 insertions, 1 deletions
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 () {
|