bigint-mod-arith/test/modInv.ts

55 lines
1.2 KiB
TypeScript
Raw Normal View History

describe('modInv', function () {
const inputs = [
{
a: BigInt(1),
n: BigInt(19),
modInv: BigInt(1)
},
{
a: BigInt(2),
n: BigInt(5),
modInv: BigInt(3)
},
{
a: BigInt(-2),
n: BigInt(5),
modInv: BigInt(2)
2021-03-24 17:30:45 +00:00
}]
const invalidInputs = [
{
a: BigInt(2),
2021-03-24 17:30:45 +00:00
n: BigInt(4)
},
{
a: BigInt(0),
2021-03-24 17:30:45 +00:00
n: BigInt(0)
},
{
a: BigInt(0),
2021-03-24 17:30:45 +00:00
n: BigInt(37)
}
]
for (const input of inputs) {
describe(`modInv(${input.a}, ${input.n})`, function () {
it(`should return ${input.modInv}`, function () {
const ret = _pkg.modInv(input.a, input.n)
// chai.assert( String(ret) === String(input.modInv) );
chai.expect(String(ret)).to.be.equal(String(input.modInv))
})
})
}
2021-03-24 17:30:45 +00:00
for (const input of invalidInputs) {
describe(`modInv(${input.a}, ${input.n})`, function () {
it('should throw RangeError', function () {
try {
_pkg.modInv(input.a, input.n)
throw new Error('should have failed')
} catch (err) {
chai.expect(err).to.be.instanceOf(RangeError)
}
})
})
}
})