diff --git a/Buffers.monkey.js b/Buffers.monkey.js index ef7c73d26..5cf677085 100644 --- a/Buffers.monkey.js +++ b/Buffers.monkey.js @@ -9,8 +9,7 @@ exports.patch = function(Buffers) { } var pos = this.pos(i); this.buffers = this.buffers.slice(pos.buf); - this.buffers[0].length -= pos.offset; - this.buffers[0].offset += pos.offset; + this.buffers[0] = new Buffer(this.buffers[0].slice(pos.offset)); this.length -= i; }; }; diff --git a/bitcore.js b/bitcore.js index 93e1a8dd4..66eb47cfb 100644 --- a/bitcore.js +++ b/bitcore.js @@ -14,6 +14,7 @@ requireWhenAccessed('bignum', 'bignum'); requireWhenAccessed('base58', 'base58-native'); requireWhenAccessed('bufferput', 'bufferput'); requireWhenAccessed('buffertools', 'buffertools'); +requireWhenAccessed('Buffers.monkey', './Buffers.monkey'); requireWhenAccessed('config', './config'); requireWhenAccessed('const', './const'); requireWhenAccessed('Deserialize', './Deserialize'); diff --git a/browser/build.js b/browser/build.js index 941d52078..41280cf10 100644 --- a/browser/build.js +++ b/browser/build.js @@ -101,6 +101,9 @@ var createBitcore = function(opts) { b.require(opts.dir + 'base58-native', { expose: 'base58-native' }); + b.require(opts.dir + 'buffers', { + expose: 'buffers' + }); b.require('./' + opts.dir + 'bitcore', { expose: 'bitcore' }); diff --git a/test/test.misc.js b/test/test.misc.js index b3ecda63b..f3da0b852 100644 --- a/test/test.misc.js +++ b/test/test.misc.js @@ -3,6 +3,7 @@ var chai = chai || require('chai'); var bitcore = bitcore || require('../bitcore'); var buffertools = require('buffertools'); +buffertools.extend(); var should = chai.should(); @@ -15,6 +16,9 @@ var base58Check = base58.base58Check; var Address = bitcore.Address; var networks = bitcore.networks; var WalletKey = bitcore.WalletKey; +var Buffers = require('buffers'); +var m = bitcore['Buffers.monkey'] || require('../Buffers.monkey'); +m.patch(Buffers); describe('Miscelaneous stuff', function() { it('should initialze the config object', function() { @@ -26,7 +30,7 @@ describe('Miscelaneous stuff', function() { it('should initialze the network object', function() { should.exist(networks); var nets = [networks.livenet, networks.testnet]; - for (var i=0; i<2; i++) { + for (var i = 0; i < 2; i++) { var net = nets[i]; should.exist(net.addressVersion); should.exist(net.privKeyVersion); @@ -42,8 +46,39 @@ describe('Miscelaneous stuff', function() { should.exist(bitcore.Deserialize); should.exist(bitcore.Deserialize.intFromCompact); }); + it('should initialze the Buffer class', function() { + should.exist(bitcore.Buffer); + }); + describe('Buffers monkey patch', function() { + var bufs; + beforeEach(function() { + bufs = new Buffers(); + bufs.push(new Buffer('aaaaaa', 'hex')); + bufs.push(new Buffer('bbbb', 'hex')); + bufs.push(new Buffer('cc', 'hex')); + }); + it('should monkey patch the Buffers class', function() { + should.exist(bufs.skip); + }); + it('should work for 0', function() { + bufs.skip(0); + bufs.toBuffer().toHex().should.equal('aaaaaabbbbcc'); + }); + it('should work for length', function() { + bufs.skip(bufs.length); + bufs.toBuffer().toHex().should.equal(''); + }); + it('should work for middle values', function() { + bufs.skip(4); + bufs.toBuffer().toHex().should.equal('bbcc'); + bufs.skip(1); + bufs.toBuffer().toHex().should.equal('cc'); + bufs.skip(1); + bufs.toBuffer().toHex().should.equal(''); + }); + }); // bignum it('should initialze the bignum object', function() { should.exist(bitcore.bignum);