chai-bignumber

Build Status

Chai 斷言,用於使用 bignumber.js 函式庫比較任意精度的十進位數。

安裝

npm install --save-dev chai-bignumber

用法

var chai = require('chai');

//use default BigNumber
chai.use(require('chai-bignumber')());

//use custom BigNumber
chai.use(require('chai-bignumber')(BigNumber));

斷言

如果斷言鏈中明確設定了 bignumber 屬性,則會提供以下斷言方法,並覆蓋現有的內建斷言。

  • equal/equals/eq
  • above/gt/greaterThan
  • least/gte/greaterThanOrEqual
  • below/lt/lessThan
  • most/lte/lessThanOrEqual

上述方法具有以下簽名:(value, dp, rm)。其中,dp 是一個可選參數,指定比較時將每一方四捨五入到的小數位數(預設值不進行四捨五入),而 rm 是一個可選參數,指定 bignumber.js 支援的捨入模式(預設為 BigNumber.ROUND_HALF_UP)。

還提供了一組額外的斷言屬性

  • finite
  • integer
  • negative
  • zero

值可以是 numberBigNumberstring 的實例,這些實例可以轉換為有效的數字。僅支援 BDD 樣式(expectshould)斷言。

範例

方法

var result = new BigNumber('100000000000000000').plus(1);
var expected = '100000000000000001';
result.should.be.bignumber.equal(expected);
expect(result).to.be.bignumber.at.most(expected);
'1000'.should.be.bignumber.lessThan(2000);

帶有捨入的方法

var BigNumber = require('bignumber.js');
(100.343).should.be.bignumber.equal(100.341, 2);
(100.349).should.be.bignumber.equal(100.341, 2, BigNumber.ROUND_DOWN);

屬性

(100 / 0).should.not.be.finite;
expect(10).to.be.integer;
(-100).should.be.negative;
expect(1 - 1).to.be.zero;

許可證

MIT