bn-chai
bn-chai は Chai に bn.js の 10 進数の評価基準に関するアサーションを追加して拡張するもの。
インストール
npm install -s bn-chai
設定
var chai = require('chai');
var BN = require('bn.js');
var bnChai = require('bn-chai');
chai.use(bnChai(BN));
使用方法
2 つの bn.js の 10 進数 bn1 と bn2 を比較するときは、以下を実行するのではなく
expect(bn1.eq(bn2)).to.be.true;
代わりに以下を実行します。
expect(bn1).to.eq.BN(bn2);
このプラグインは、bn.js の 10 進数とインライン定数を比較する場合にも便利です。次のように書くのではなく
expect(bn1.eq(new BN('1'))).to.be.true;
次のように書くことができます。
expect(bn1).to.eq.BN(1);
よりシンプルで読みやすいでしょう。
アサーション
eq
ターゲットが、与えられたオブジェクトと **等しい** とアサートする。
expect(new BN('1')).to.eq.BN(1);
expect(new BN('1')).not.to.eq.BN(0);
lt
ターゲットが、与えられたオブジェクトより **小さい** とアサートする。
expect(new BN('0')).to.be.lt.BN(1);
expect(new BN('1')).not.to.be.lt.BN(1);
lte
ターゲットが、与えられたオブジェクトより **小さい** か、または **等しい** とアサートする。
expect(new BN('0')).to.be.lte.BN(1);
expect(new BN('1')).to.be.lte.BN(1);
expect(new BN('2')).not.to.be.lte.BN(1);
gt
ターゲットが、与えられたオブジェクトより **大きい** とアサートする。
expect(new BN('1')).to.be.gt.BN(0);
expect(new BN('1')).not.to.be.gt.BN(1);
gte
ターゲットが、与えられたオブジェクトより **大きい** か、または **等しい** とアサートする。
expect(new BN('1')).to.be.gte.BN(0);
expect(new BN('1')).to.be.gte.BN(1);
expect(new BN('1')).not.to.be.gte.BN(2);
negative
ターゲットが **負** であるとアサートする。
expect(new BN('-1')).to.be.negative;
expect(new BN('1')).not.to.be.negative;
even
ターゲットが **偶数** であるとアサートする。
expect(new BN('2')).to.be.even;
expect(new BN('1')).not.to.be.even;
odd
ターゲットが **奇数** であるとアサートする。
expect(new BN('1')).to.be.odd;
expect(new BN('2')).not.to.be.odd;
zero
ターゲットが 0 に等しいとアサートする。
expect(new BN('0')).to.be.zero;
expect(new BN('1')).not.to.be.zero;
BN、数値、文字列をミックスする
BN は、数値と文字列と自由自在にミックスできます。
expect(new BN('1')).to.eq.BN(new BN('1'));
expect(new BN('1')).to.eq.BN('1');
expect(new BN('1')).to.eq.BN(1);
expect('1').to.eq.BN(new BN('1'));
expect('1').to.eq.BN('1');
expect('1').to.eq.BN(1);
expect(1).to.eq.BN(new BN('1'));
expect(1).to.eq.BN('1');
expect(1).to.eq.BN(1);