Package Exports
- chai-bn
- chai-bn/chai-bn.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (chai-bn) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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.