summaryrefslogtreecommitdiff
path: root/big-integer/spec/spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'big-integer/spec/spec.js')
-rw-r--r--big-integer/spec/spec.js31
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 () {