chai-bn
Chai
assertions for comparing arbitrary-precision integers using the bn.js library. Forked from chai-bignumber, which uses the bignumber.js library.
Installation
npm install --save-dev chai-bn
Usage
const chai = require('chai');
const BN = require('bn.js');
// Enable and inject BN dependency
chai.use(require('chai-bn')(BN));
Assertions
The following assertion methods are provided and will override the existing builtin assertions if the bignumber
property is set as part of the assertion chain:
- equal/equals/eq
- above/gt/greaterThan
- least/gte
- below/lt/lessThan
- most/lte
- closeTo
A set of additional assertion properties is also provided:
- negative
- zero
Both actual values (the values being asserted) and expected values (the values the actual value is expected to match) can be either instances of BN
, or strings which can be converted into a valid number. This is a key difference with chai-bignumber, which automatically converts JavaScript numbers to BigNumber
instances for both actual and expected values.
Only BDD style (expect
or should
) assertions are supported.
Examples
Methods:
const actual = new BN('100000000000000000').plus(new BN('1'));
const expected = '100000000000000001';
actual.should.be.a.bignumber.that.equals(expected);
expect(actual).to.be.a.bignumber.that.is.at.most(expected);
(new BN('1000')).should.be.a.bignumber.that.is.lessThan('2000');
Properties:
(new BN('-100')).should.be.a.bignumber.that.is.negative;
expect(new BN('1').sub(new BN('1'))).to.be.a.bignumber.that.is.zero;
Some Chai
properties (e.g. the that.is
chain) have no effect other than increasing readability, and can be dropped if less verbosity is desired.