Files: 4245279c2ef32bf04008004ee86aa1e3e7b17038 / test.js
1598 bytesRaw
1 | var tape = require('tape') |
2 | var concat = require('.') |
3 | var pull = require('pull-stream') |
4 | var crypto = require('crypto') |
5 | |
6 | var 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 | |
10 | function 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 | |
19 | function pack(n, p, numObjects) { |
20 | return {read: readPack(n, p), numObjects: numObjects} |
21 | } |
22 | |
23 | function 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 | |
36 | tape('empty 0', pullEquals(concat([]), readPack())) |
37 | tape('empty 1', pullEquals(concat([pack()]), readPack())) |
38 | tape('empty 2', pullEquals(concat([pack(), pack()]), readPack())) |
39 | |
40 | tape('sum num objs', pullEquals(concat([pack(1), pack(3)]), readPack(4))) |
41 | |
42 | tape('sum num objs with property', |
43 | pullEquals(concat([pack(1, null, 1), pack(3)]), readPack(4))) |
44 | |
45 | tape('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