UNPKG

5.58 kBJavaScriptView Raw
1'use strict';
2/* jshint unused: false */
3
4var should = require('chai').should();
5var expect = require('chai').expect;
6
7// var bitcore = require('../..');
8// var errors = bitcore.errors;
9// var BufferUtil = bitcore.util.BitcoreBuffer;
10var BufferUtil = require('../../lib/index').BitcoreBuffer
11
12describe('buffer utils', function() {
13
14 describe('equals', function() {
15 it('recognizes these two equal buffers', function() {
16 var bufferA = new Buffer([1, 2, 3]);
17 var bufferB = new Buffer('010203', 'hex');
18 BufferUtil.equal(bufferA, bufferB).should.equal(true);
19 });
20 it('no false positive: returns false with two different buffers', function() {
21 var bufferA = new Buffer([1, 2, 3]);
22 var bufferB = new Buffer('010204', 'hex');
23 BufferUtil.equal(bufferA, bufferB).should.equal(false);
24 });
25 it('coverage: quickly realizes a difference in size and returns false', function() {
26 var bufferA = new Buffer([1, 2, 3]);
27 var bufferB = new Buffer([]);
28 BufferUtil.equal(bufferA, bufferB).should.equal(false);
29 });
30 it('"equals" is an an alias for "equal"', function() {
31 var bufferA = new Buffer([1, 2, 3]);
32 var bufferB = new Buffer([1, 2, 3]);
33 BufferUtil.equal(bufferA, bufferB).should.equal(true);
34 BufferUtil.equals(bufferA, bufferB).should.equal(true);
35 });
36 });
37
38 describe('fill', function() {
39 it('checks arguments', function() {
40 expect(function() {
41 BufferUtil.fill('something');
42 }).to.throw('Invalid Argument');
43 expect(function() {
44 BufferUtil.fill(new Buffer([0, 0, 0]), 'invalid');
45 }).to.throw('Invalid Argument');
46 });
47 it('works correctly for a small buffer', function() {
48 var buffer = BufferUtil.fill(new Buffer(10), 6);
49 for (var i = 0; i < 10; i++) {
50 buffer[i].should.equal(6);
51 }
52 });
53 });
54
55 describe('isBuffer', function() {
56 it('has no false positive', function() {
57 expect(BufferUtil.isBuffer(1)).to.equal(false);
58 });
59 it('has no false negative', function() {
60 expect(BufferUtil.isBuffer(new Buffer(0))).to.equal(true);
61 });
62 });
63
64 describe('emptyBuffer', function() {
65 it('creates a buffer filled with zeros', function() {
66 var buffer = BufferUtil.emptyBuffer(10);
67 expect(buffer.length).to.equal(10);
68 for (var i = 0; i < 10; i++) {
69 expect(buffer[i]).to.equal(0);
70 }
71 });
72 it('checks arguments', function() {
73 expect(function() {
74 BufferUtil.emptyBuffer('invalid');
75 }).to.throw('Invalid Argument');
76 });
77 });
78
79 describe('single byte buffer <=> integer', function() {
80 it('integerAsSingleByteBuffer should return a buffer of length 1', function() {
81 expect(BufferUtil.integerAsSingleByteBuffer(100)[0]).to.equal(100);
82 });
83 it('should check the type', function() {
84 expect(function() {
85 BufferUtil.integerAsSingleByteBuffer('invalid');
86 }).to.throw('Invalid Argument');
87 expect(function() {
88 BufferUtil.integerFromSingleByteBuffer('invalid');
89 }).to.throw('Invalid Argument');
90 });
91 it('works correctly for edge cases', function() {
92 expect(BufferUtil.integerAsSingleByteBuffer(255)[0]).to.equal(255);
93 expect(BufferUtil.integerAsSingleByteBuffer(-1)[0]).to.equal(255);
94 });
95 it('does a round trip', function() {
96 expect(BufferUtil.integerAsSingleByteBuffer(
97 BufferUtil.integerFromSingleByteBuffer(new Buffer([255]))
98 )[0]).to.equal(255);
99 });
100 });
101
102 describe('4byte buffer integer <=> integer', function() {
103 it('integerAsBuffer should return a buffer of length 4', function() {
104 expect(BufferUtil.integerAsBuffer(100).length).to.equal(4);
105 });
106 it('is little endian', function() {
107 expect(BufferUtil.integerAsBuffer(100)[3]).to.equal(100);
108 });
109 it('should check the type', function() {
110 expect(function() {
111 BufferUtil.integerAsBuffer('invalid');
112 }).to.throw('Invalid Argument');
113 expect(function() {
114 BufferUtil.integerFromBuffer('invalid');
115 }).to.throw('Invalid Argument');
116 });
117 it('works correctly for edge cases', function() {
118 expect(BufferUtil.integerAsBuffer(4294967295)[0]).to.equal(255);
119 expect(BufferUtil.integerAsBuffer(4294967295)[3]).to.equal(255);
120 expect(BufferUtil.integerAsBuffer(-1)[0]).to.equal(255);
121 expect(BufferUtil.integerAsBuffer(-1)[3]).to.equal(255);
122 });
123 it('does a round trip', function() {
124 expect(BufferUtil.integerFromBuffer(
125 BufferUtil.integerAsBuffer(10000)
126 )).to.equal(10000);
127 });
128 });
129
130 describe('buffer to hex', function() {
131 it('returns an expected value in hexa', function() {
132 expect(BufferUtil.bufferToHex(new Buffer([255, 0, 128]))).to.equal('ff0080');
133 });
134 it('checks the argument type', function() {
135 expect(function() {
136 BufferUtil.bufferToHex('invalid');
137 }).to.throw('Invalid Argument');
138 });
139 it('round trips', function() {
140 var original = new Buffer([255, 0, 128]);
141 var hexa = BufferUtil.bufferToHex(original);
142 var back = BufferUtil.hexToBuffer(hexa);
143 expect(BufferUtil.equal(original, back)).to.equal(true);
144 });
145 });
146
147 describe('reverse', function() {
148 it('reverses a buffer', function() {
149 // http://bit.ly/1J2Ai4x
150 var original = new Buffer([255, 0, 128]);
151 var reversed = BufferUtil.reverse(original);
152 original[0].should.equal(reversed[2]);
153 original[1].should.equal(reversed[1]);
154 original[2].should.equal(reversed[0]);
155 });
156 });
157});