var tape = require('tape') var concat = require('.') var pull = require('pull-stream') var crypto = require('crypto') var emptyPack = new Buffer([0x50, 0x41, 0x43, 0x4b, 0, 0, 0, 2, 0, 0, 0, 0, 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09]) function readPack(numObjects, payload) { var header = new Buffer([0x50, 0x41, 0x43, 0x4b, 0, 0, 0, 2, 0, 0, 0, 0]) if (numObjects) header.writeUInt32BE(numObjects, 8) var checksum = crypto.createHash('sha1') if (!payload) payload = new Buffer([]) checksum.update(payload) return pull.values([header, payload, checksum.digest()]) } function pack(n, p, numObjects) { return {read: readPack(n, p), numObjects: numObjects} } function pullEquals(a, b) { return function (t) { pull(a, pull.collect(function (err, bufsA) { t.error(err, 'collect 1') pull(b, pull.collect(function (err, bufsB) { t.error(err, 'collect 2') t.deepEquals(Buffer.concat(bufsA), Buffer.concat(bufsB), 'bufs') t.end() })) })) } } tape('empty 0', pullEquals(concat([]), readPack())) tape('empty 1', pullEquals(concat([pack()]), readPack())) tape('empty 2', pullEquals(concat([pack(), pack()]), readPack())) tape('sum num objs', pullEquals(concat([pack(1), pack(3)]), readPack(4))) tape('sum num objs with property', pullEquals(concat([pack(1, null, 1), pack(3)]), readPack(4))) tape('concat data', pullEquals( concat([ pack(0, new Buffer([5,4,3])), pack(1, new Buffer([7,9])) ]), readPack(1, new Buffer([5,4,3,7,9])) ))