1 | #!/usr/bin/env mocha -R spec
|
2 |
|
3 | var assert = require("assert");
|
4 | var Stream = require("stream");
|
5 | var concat = require("concat-stream");
|
6 |
|
7 | var msgpack = require("../index");
|
8 | var TITLE = __filename.replace(/^.*\//, "");
|
9 | var example = require("./example.json");
|
10 |
|
11 | var src = [
|
12 | ["foo"],
|
13 | ["bar"],
|
14 | ["baz"]
|
15 | ];
|
16 |
|
17 | var encoded = [
|
18 | msgpack.encode(src[0]),
|
19 | msgpack.encode(src[1]),
|
20 | msgpack.encode(src[2])
|
21 | ];
|
22 |
|
23 | var encodeall = Buffer.concat(encoded);
|
24 |
|
25 | describe(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 |
|
107 | decoder.end();
|
108 |
|
109 |
|
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 | });
|