mirror of
https://github.com/node-ebics/node-ebics-client.git
synced 2024-11-25 15:42:07 +00:00
48 lines
1.8 KiB
JavaScript
48 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
/* eslint-env node, mocha */
|
|
|
|
const { assert } = require('chai');
|
|
const { jsbn: { BigInteger } } = require('node-forge');
|
|
|
|
const BigNumber = require('../../lib/crypto/BigNumber');
|
|
|
|
const types = [
|
|
{ name: 'BigNumber', value: new BigNumber(11) },
|
|
{ name: 'BigInteger', value: new BigInteger('11') },
|
|
{ name: 'string with default radix', value: '11' },
|
|
{ name: 'string with radix 16', value: '0b', radix: 16 },
|
|
{ name: 'Buffer', value: Buffer.from('0b', 'hex') },
|
|
{ name: 'Array', value: [11] },
|
|
];
|
|
|
|
describe('BigNumber', () => {
|
|
describe('creating an instance', () => {
|
|
it('should throw with no value given', () => assert.throws(() => new BigNumber()));
|
|
it('should throw wrong value type', () => assert.throws(() => new BigNumber({})));
|
|
|
|
for (const { name, value, radix } of types) {
|
|
let instance;
|
|
describe(`out of ${name}`, () => {
|
|
it('create instance', () => assert.doesNotThrow(() => {
|
|
instance = new BigNumber(value, radix);
|
|
}));
|
|
it('toString with radix 10', () => assert.equal(instance.toString(), '11'));
|
|
it('toString with radix 16', () => assert.equal(instance.toString(16), '0b'));
|
|
it('toBEBuffer without length', () => assert.equal(instance.toBEBuffer().toString('hex'), '0b'));
|
|
it('toBEBuffer with length', () => assert.equal(instance.toBEBuffer(4).toString('hex'), '0000000b'));
|
|
});
|
|
}
|
|
});
|
|
describe('exports', () => {
|
|
it('toBEBuffer with too short length should throw', () => assert.throw(() => new BigNumber(837462187362).toBEBuffer(1)));
|
|
});
|
|
describe('operators', () => {
|
|
const num = new BigNumber(1);
|
|
it('and', () => assert.equal(num.and(1), 1));
|
|
it('mul', () => assert.equal(num.mul(2), 2));
|
|
it('mod', () => assert.equal(num.mod(1), 0));
|
|
it('shrn', () => assert.equal(num.shrn(1), 0));
|
|
});
|
|
});
|