diff --git a/lib/varint.js b/lib/varint.js index 5d8fc11ff..c114ae272 100644 --- a/lib/varint.js +++ b/lib/varint.js @@ -31,6 +31,11 @@ Varint.prototype.fromBufferReader = function(br) { return this; }; +Varint.prototype.fromBN = function(bn) { + this.buf = BufferWriter().writeVarintBN(bn).concat(); + return this; +}; + Varint.prototype.fromNumber = function(num) { this.buf = BufferWriter().writeVarintNum(num).concat(); return this; @@ -40,6 +45,10 @@ Varint.prototype.toBuffer = function() { return this.buf; }; +Varint.prototype.toBN = function() { + return BufferReader(this.buf).readVarintBN(); +}; + Varint.prototype.toNumber = function() { return BufferReader(this.buf).readVarintNum(); }; diff --git a/test/varint.js b/test/varint.js index 86ad0c9a7..fc4ae2512 100644 --- a/test/varint.js +++ b/test/varint.js @@ -1,3 +1,4 @@ +var BN = require('../lib/bn'); var should = require('chai').should(); var BufferReader = require('../lib/bufferreader'); var BufferWriter = require('../lib/bufferwriter'); @@ -48,6 +49,15 @@ describe('Varint', function() { }); + describe('#fromBN', function() { + + it('should set a number', function() { + var varint = Varint().fromNumber(BN(5)); + varint.toNumber().should.equal(5); + }); + + }); + describe('#fromNumber', function() { it('should set a number', function() { @@ -67,6 +77,15 @@ describe('Varint', function() { }); + describe('#toBN', function() { + + it('should return a buffer', function() { + var varint = Varint(5); + varint.toBN().toString().should.equal(BN(5).toString()); + }); + + }); + describe('#toNumber', function() { it('should return a buffer', function() {