UNPKG

3.01 kBJavaScriptView Raw
1#!/usr/bin/env mocha -R spec
2
3var assert = require("assert");
4var Stream = require("stream");
5var concat = require("concat-stream");
6
7var msgpack = require("../index");
8var TITLE = __filename.replace(/^.*\//, "");
9var example = require("./example.json");
10
11var src = [
12 ["foo"],
13 ["bar"],
14 ["baz"]
15];
16
17var encoded = [
18 msgpack.encode(src[0]),
19 msgpack.encode(src[1]),
20 msgpack.encode(src[2])
21];
22
23var encodeall = Buffer.concat(encoded);
24
25describe(TITLE, function() {
26
27 it("msgpack.createEncodeStream()", function(done) {
28 var encoder = msgpack.createEncodeStream();
29 encoder.pipe(concat(onEnd));
30 encoder.write(src[0]);
31 encoder.write(src[1]);
32 encoder.write(src[2]);
33 encoder.end();
34
35 function onEnd(data) {
36 assert.deepEqual(data, encodeall);
37 done();
38 }
39 });
40
41 it("msgpack.createDecodeStream()", function(done) {
42 var count = 0;
43 var decoder = msgpack.createDecodeStream();
44
45 decoder.on("data", onData);
46 decoder.write(encoded[0]);
47 decoder.write(encoded[1]);
48 decoder.write(encoded[2]);
49 decoder.end();
50
51 function onData(data) {
52 assert.deepEqual(data, src[count++]);
53 if (count === 3) done();
54 }
55 });
56
57 it("pipe(encoder).pipe(decoder)", function(done) {
58 var count = 0;
59 var inputStream = new Stream.PassThrough({objectMode: true});
60 var encoder = msgpack.createEncodeStream();
61 var passThrough = new Stream.PassThrough();
62 var decoder = msgpack.createDecodeStream();
63 var outputStream = new Stream.PassThrough({objectMode: true});
64
65 inputStream.pipe(encoder).pipe(passThrough).pipe(decoder).pipe(outputStream);
66 outputStream.on("data", onData);
67 inputStream.write(src[0]);
68 inputStream.write(src[1]);
69 inputStream.write(src[2]);
70 inputStream.end();
71
72 function onData(data) {
73 assert.deepEqual(data, src[count++]);
74 if (count === 3) done();
75 }
76 });
77
78 it("pipe(decoder).pipe(encoder)", function(done) {
79 var inputStream = new Stream.PassThrough();
80 var decoder = msgpack.createDecodeStream();
81 var passThrough = new Stream.PassThrough({objectMode: true});
82 var encoder = msgpack.createEncodeStream();
83
84 inputStream.pipe(decoder).pipe(passThrough).pipe(encoder).pipe(concat(onEnd));
85 inputStream.write(encoded[0]);
86 inputStream.write(encoded[1]);
87 inputStream.write(encoded[2]);
88 inputStream.end();
89
90 function onEnd(data) {
91 assert.deepEqual(data, encodeall);
92 done();
93 }
94 });
95
96 it("write()", function(done) {
97 var count = 0;
98 var buf = msgpack.encode(example);
99 var decoder = msgpack.createDecodeStream();
100 decoder.on("data", onData);
101
102 for (var i = 0; i < 3; i++) {
103 Array.prototype.forEach.call(buf, each);
104 }
105
106 // decode stream should be closed
107 decoder.end();
108
109 // write a single byte into the decode stream
110 function each(x) {
111 decoder.write(Buffer([x]));
112 }
113
114 function onData(data) {
115 assert.deepEqual(data, example);
116 if (++count === 3) done();
117 }
118 });
119});