bn-chai

bn-chai は Chaibn.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 進数 bn1bn2 を比較するときは、以下を実行するのではなく

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);