bitcore-lib-zcash/test/bufferwriter.js

176 lines
4.4 KiB
JavaScript
Raw Normal View History

2014-08-18 18:20:54 -07:00
var BufferWriter = require('../lib/bufferwriter');
2014-08-21 11:47:09 -07:00
var BufferReader = require('../lib/bufferreader');
var BN = require('../lib/bn');
2014-08-18 18:20:54 -07:00
var should = require('chai').should();
describe('BufferWriter', function() {
it('should create a new buffer writer', function() {
var bw = new BufferWriter();
should.exist(bw);
});
2014-08-28 16:02:24 -07:00
describe('#set', function() {
it('set bufs', function() {
var buf1 = new Buffer([0]);
var buf2 = new Buffer([1]);
var bufs = [buf1, buf2];
var bw = new BufferWriter().set({bufs: [buf1, buf2]});
bw.concat().toString('hex').should.equal('0001');
});
});
2014-08-18 18:20:54 -07:00
describe('#concat', function() {
it('should concat these two bufs', function() {
var buf1 = new Buffer([0]);
var buf2 = new Buffer([1]);
2014-08-28 16:02:24 -07:00
var bw = new BufferWriter({bufs: [buf1, buf2]});
2014-08-18 18:20:54 -07:00
bw.concat().toString('hex').should.equal('0001');
});
});
describe('#write', function() {
it('should write a buffer', function() {
var buf = new Buffer([0]);
var bw = new BufferWriter();
bw.write(buf);
bw.concat().toString('hex').should.equal('00');
});
});
describe('#writeUInt8', function() {
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt8(1).concat().toString('hex').should.equal('01');
});
});
describe('#writeUInt16BE', function() {
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt16BE(1).concat().toString('hex').should.equal('0001');
});
});
describe('#writeUInt16LE', function() {
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt16LE(1).concat().toString('hex').should.equal('0100');
});
});
describe('#writeUInt32BE', function() {
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt32BE(1).concat().toString('hex').should.equal('00000001');
});
});
describe('#writeUInt32LE', function() {
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt32LE(1).concat().toString('hex').should.equal('01000000');
});
});
describe('#writeUInt64BEBN', function() {
2014-08-18 18:20:54 -07:00
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt64BEBN(BN(1)).concat().toString('hex').should.equal('0000000000000001');
2014-08-18 18:20:54 -07:00
});
});
describe('#writeUInt64LEBN', function() {
2014-08-18 18:20:54 -07:00
it('should write 1', function() {
var bw = new BufferWriter();
bw.writeUInt64LEBN(BN(1)).concat().toString('hex').should.equal('0100000000000000');
2014-08-18 18:20:54 -07:00
});
});
describe('#writeVarInt', function() {
it('should write a 1 byte varInt', function() {
var bw = new BufferWriter();
2014-09-15 14:36:31 -07:00
bw.writeVarIntNum(1);
2014-08-18 18:20:54 -07:00
bw.concat().length.should.equal(1);
});
it('should write a 3 byte varInt', function() {
var bw = new BufferWriter();
2014-09-15 14:36:31 -07:00
bw.writeVarIntNum(1000);
2014-08-18 18:20:54 -07:00
bw.concat().length.should.equal(3);
});
it('should write a 5 byte varInt', function() {
var bw = new BufferWriter();
2014-09-15 14:36:31 -07:00
bw.writeVarIntNum(Math.pow(2, 16 + 1));
2014-08-18 18:20:54 -07:00
bw.concat().length.should.equal(5);
});
it('should write a 9 byte varInt', function() {
var bw = new BufferWriter();
2014-09-15 14:36:31 -07:00
bw.writeVarIntNum(Math.pow(2, 32 + 1));
2014-08-18 18:20:54 -07:00
bw.concat().length.should.equal(9);
});
2014-08-21 11:47:09 -07:00
it('should read back the same value it wrote for a 9 byte varInt', function() {
var bw = new BufferWriter();
var n = Math.pow(2, 53);
n.should.equal(n + 1); //javascript number precision limit
2014-09-15 14:36:31 -07:00
bw.writeVarIntNum(n);
2014-08-28 15:52:32 -07:00
var br = new BufferReader({buf: bw.concat()});
2014-08-21 11:47:09 -07:00
br.readVarIntBN().toNumber().should.equal(n);
});
2014-08-18 18:20:54 -07:00
});
describe('#writeVarIntBN', function() {
it('should write a 1 byte varInt', function() {
var bw = new BufferWriter();
bw.writeVarIntBN(BN(1));
bw.concat().length.should.equal(1);
});
it('should write a 3 byte varInt', function() {
var bw = new BufferWriter();
bw.writeVarIntBN(BN(1000));
bw.concat().length.should.equal(3);
});
it('should write a 5 byte varInt', function() {
var bw = new BufferWriter();
bw.writeVarIntBN(BN(Math.pow(2, 16 + 1)));
bw.concat().length.should.equal(5);
});
it('should write a 9 byte varInt', function() {
var bw = new BufferWriter();
bw.writeVarIntBN(BN(Math.pow(2, 32 + 1)));
bw.concat().length.should.equal(9);
});
});
2014-08-18 18:20:54 -07:00
});