53 lines
1.0 KiB
JavaScript
53 lines
1.0 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
// Every test file (you can create as many as you want) should start like this
|
||
|
// Please, do NOT touch. They will be automatically removed for browser tests -->
|
||
|
const _pkg = require('../lib/index.node')
|
||
|
const chai = require('chai')
|
||
|
// <--
|
||
|
|
||
|
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)
|
||
|
},
|
||
|
{
|
||
|
a: BigInt(2),
|
||
|
n: BigInt(4),
|
||
|
modInv: NaN
|
||
|
},
|
||
|
{
|
||
|
a: BigInt(0),
|
||
|
n: BigInt(0),
|
||
|
modInv: NaN
|
||
|
},
|
||
|
{
|
||
|
a: BigInt(0),
|
||
|
n: BigInt(37),
|
||
|
modInv: NaN
|
||
|
}
|
||
|
]
|
||
|
|
||
|
describe('modInv', function () {
|
||
|
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))
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
})
|