git ssb

0+

cel / pull-git-pack-concat



Tree: b763dc91d24d0b1d54f6e8eb7d4587259deb5a52

Files: b763dc91d24d0b1d54f6e8eb7d4587259deb5a52 / test.js

1598 bytesRaw
1var tape = require('tape')
2var concat = require('.')
3var pull = require('pull-stream')
4var crypto = require('crypto')
5
6var emptyPack = new Buffer([0x50, 0x41, 0x43, 0x4b, 0, 0, 0, 2, 0, 0, 0, 0,
7 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55,
8 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09])
9
10function readPack(numObjects, payload) {
11 var header = new Buffer([0x50, 0x41, 0x43, 0x4b, 0, 0, 0, 2, 0, 0, 0, 0])
12 if (numObjects) header.writeUInt32BE(numObjects, 8)
13 var checksum = crypto.createHash('sha1')
14 if (!payload) payload = new Buffer([])
15 checksum.update(payload)
16 return pull.values([header, payload, checksum.digest()])
17}
18
19function pack(n, p, numObjects) {
20 return {read: readPack(n, p), numObjects: numObjects}
21}
22
23function pullEquals(a, b) {
24 return function (t) {
25 pull(a, pull.collect(function (err, bufsA) {
26 t.error(err, 'collect 1')
27 pull(b, pull.collect(function (err, bufsB) {
28 t.error(err, 'collect 2')
29 t.deepEquals(Buffer.concat(bufsA), Buffer.concat(bufsB), 'bufs')
30 t.end()
31 }))
32 }))
33 }
34}
35
36tape('empty 0', pullEquals(concat([]), readPack()))
37tape('empty 1', pullEquals(concat([pack()]), readPack()))
38tape('empty 2', pullEquals(concat([pack(), pack()]), readPack()))
39
40tape('sum num objs', pullEquals(concat([pack(1), pack(3)]), readPack(4)))
41
42tape('sum num objs with property',
43 pullEquals(concat([pack(1, null, 1), pack(3)]), readPack(4)))
44
45tape('concat data', pullEquals(
46 concat([
47 pack(0, new Buffer([5,4,3])),
48 pack(1, new Buffer([7,9]))
49 ]),
50 readPack(1, new Buffer([5,4,3,7,9]))
51))
52

Built with git-ssb-web