| var B = require('../').Buffer |
| var test = require('tape') |
| |
| test('buffer.toJSON', function (t) { |
| var data = [1, 2, 3, 4] |
| t.deepEqual( |
| new B(data).toJSON(), |
| { type: 'Buffer', data: [ 1, 2, 3, 4 ] } |
| ) |
| t.end() |
| }) |
| |
| test('buffer.copy', function (t) { |
| // copied from nodejs.org example |
| var buf1 = new B(26) |
| var buf2 = new B(26) |
| |
| for (var i = 0; i < 26; i++) { |
| buf1[i] = i + 97 // 97 is ASCII a |
| buf2[i] = 33 // ASCII ! |
| } |
| |
| buf1.copy(buf2, 8, 16, 20) |
| |
| t.equal( |
| buf2.toString('ascii', 0, 25), |
| '!!!!!!!!qrst!!!!!!!!!!!!!' |
| ) |
| t.end() |
| }) |
| |
| test('test offset returns are correct', function (t) { |
| var b = new B(16) |
| t.equal(4, b.writeUInt32LE(0, 0)) |
| t.equal(6, b.writeUInt16LE(0, 4)) |
| t.equal(7, b.writeUInt8(0, 6)) |
| t.equal(8, b.writeInt8(0, 7)) |
| t.equal(16, b.writeDoubleLE(0, 8)) |
| t.end() |
| }) |
| |
| test('concat() a varying number of buffers', function (t) { |
| var zero = [] |
| var one = [ new B('asdf') ] |
| var long = [] |
| for (var i = 0; i < 10; i++) { |
| long.push(new B('asdf')) |
| } |
| |
| var flatZero = B.concat(zero) |
| var flatOne = B.concat(one) |
| var flatLong = B.concat(long) |
| var flatLongLen = B.concat(long, 40) |
| |
| t.equal(flatZero.length, 0) |
| t.equal(flatOne.toString(), 'asdf') |
| t.deepEqual(flatOne, one[0]) |
| t.equal(flatLong.toString(), (new Array(10 + 1).join('asdf'))) |
| t.equal(flatLongLen.toString(), (new Array(10 + 1).join('asdf'))) |
| t.end() |
| }) |
| |
| test('concat() works on Uint8Array instances', function (t) { |
| var result = B.concat([new Uint8Array([1, 2]), new Uint8Array([3, 4])]) |
| var expected = Buffer.from([1, 2, 3, 4]) |
| t.deepEqual(result, expected) |
| t.end() |
| }) |
| |
| test('fill', function (t) { |
| var b = new B(10) |
| b.fill(2) |
| t.equal(b.toString('hex'), '02020202020202020202') |
| t.end() |
| }) |
| |
| test('fill (string)', function (t) { |
| var b = new B(10) |
| b.fill('abc') |
| t.equal(b.toString(), 'abcabcabca') |
| b.fill('է') |
| t.equal(b.toString(), 'էէէէէ') |
| t.end() |
| }) |
| |
| test('copy() empty buffer with sourceEnd=0', function (t) { |
| var source = new B([42]) |
| var destination = new B([43]) |
| source.copy(destination, 0, 0, 0) |
| t.equal(destination.readUInt8(0), 43) |
| t.end() |
| }) |
| |
| test('copy() after slice()', function (t) { |
| var source = new B(200) |
| var dest = new B(200) |
| var expected = new B(200) |
| for (var i = 0; i < 200; i++) { |
| source[i] = i |
| dest[i] = 0 |
| } |
| |
| source.slice(2).copy(dest) |
| source.copy(expected, 0, 2) |
| t.deepEqual(dest, expected) |
| t.end() |
| }) |
| |
| test('copy() ascending', function (t) { |
| var b = new B('abcdefghij') |
| b.copy(b, 0, 3, 10) |
| t.equal(b.toString(), 'defghijhij') |
| t.end() |
| }) |
| |
| test('copy() descending', function (t) { |
| var b = new B('abcdefghij') |
| b.copy(b, 3, 0, 7) |
| t.equal(b.toString(), 'abcabcdefg') |
| t.end() |
| }) |
| |
| test('buffer.slice sets indexes', function (t) { |
| t.equal((new B('hallo')).slice(0, 5).toString(), 'hallo') |
| t.end() |
| }) |
| |
| test('buffer.slice out of range', function (t) { |
| t.plan(2) |
| t.equal((new B('hallo')).slice(0, 10).toString(), 'hallo') |
| t.equal((new B('hallo')).slice(10, 2).toString(), '') |
| t.end() |
| }) |