UNPKG

3.41 kBJavaScriptView Raw
1
2var tape = require('tape')
3
4var ps = require('../')
5
6tape('messages', function (t) {
7
8 var actual = []
9
10 var a = ps({
11 message: function (msg) {
12 console.log('MSG', msg)
13 actual.push(msg)
14 }
15 })
16
17 var b = ps({})
18
19 // a.pipe(b).pipe(a)
20 a.read = b.write; b.read = a.write
21
22 var expected = ['hello', 'foo', 'bar']
23
24 expected.forEach(b.message)
25 t.deepEqual(actual, expected)
26
27 t.end()
28})
29
30tape('request-response', function (t) {
31
32 var a = ps({
33 request: function (value, cb) {
34 cb(null, value * 2)
35
36 //calling a second time should throw.
37 try { cb() } catch (err) { t.end() }
38 }
39 })
40
41 var b = ps({})
42
43 a.read = b.write; b.read = a.write
44
45 b.request(7, function (err, value) {
46 t.notOk(err)
47 t.equal(value, 14)
48 })
49
50})
51
52tape('stream', function (t) {
53
54 var actual = [], expected = [1, 2, 3, 4, 5]
55
56 var a = ps({
57 stream: function (stream) {
58 //echo server
59 stream.read = stream.write
60 }
61 })
62
63 var b = ps({})
64
65 a.read = b.write; b.read = a.write
66
67 var s = b.stream()
68
69 s.read = function (data, end) {
70 if(!end)
71 actual.push(data)
72 else
73 t.end()
74 }
75
76 expected.forEach(function (data) {
77 s.write(data)
78 })
79
80 t.deepEqual(actual, expected)
81
82 s.end()
83
84})
85
86tape('error async when stream ends', function (t) {
87
88 var a = ps({})
89
90 a.request({foo: true}, function (err) {
91 t.ok(err)
92 t.equal(a.ended, true)
93 t.end()
94 })
95 t.equal(a.ended, false)
96 a.write(null, true)
97})
98
99tape('request-response', function (t) {
100
101 t.plan(2)
102
103 var a = ps({
104 request: function (value, cb) {
105 setTimeout(function () {
106 cb(null, value * 2)
107 })
108 //calling a second time should throw.
109 }
110 })
111
112 var b = ps({})
113
114 a.read = b.write; b.read = a.write
115
116 b.request(7, function (err, value) {
117 t.notOk(err)
118 t.equal(value, 14)
119 })
120
121 b.close(function (err) {
122 t.end()
123 })
124
125})
126
127tape('streams, close', function (t) {
128 t.plan(7)
129 var a = ps({
130 stream: function (stream) {
131 //echo server
132 stream.read = function (data, end) {
133 setImmediate(function () {
134 stream.write(data, end)
135 })
136 }
137 }
138 })
139
140 var expected = [1,2,3,3,5]
141
142 var b = ps({})
143
144 var s = b.stream()
145
146 a.read = b.write; b.read = a.write
147
148 b.close(function (err) {
149 t.ok(true)
150 t.end()
151 })
152
153 s.read = function (data, end) {
154 if(end) t.ok(end)
155 else t.equal(data, expected.shift())
156 }
157
158 expected.forEach(function (d) {
159 s.write(d)
160 })
161 s.write(null, true)
162
163})
164
165tape('receive stream, then close', function (t) {
166 t.plan(7)
167 var a = ps({
168 stream: function (stream) {
169 //echo server
170 stream.read = function (data, end) {
171 setImmediate(function () {
172 stream.write(data, end)
173 })
174 }
175
176 a.close(function (err) {
177 t.ok(true)
178 t.end()
179 })
180
181 }
182 })
183
184 var expected = [1,2,3,3,5]
185
186 var b = ps({})
187
188 var s = b.stream()
189
190 a.read = b.write; b.read = a.write
191
192 s.read = function (data, end) {
193 if(end && end !== true) throw end
194 if(end) t.ok(end)
195 else t.equal(data, expected.shift())
196 }
197
198 expected.forEach(function (d) {
199 s.write(d)
200 })
201
202 s.write(null, true)
203
204})
205
206tape('call close cb when the stream is ended', function (t) {
207 var err = new Error('test error')
208 var a = ps({
209 close: function (_err) {
210 t.equal(_err, err)
211 t.end()
212 }
213 })
214
215 a.write(null, err)
216})