]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/read/node_modules/mute-stream/test/basic.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / read / node_modules / mute-stream / test / basic.js
1 var Stream = require('stream')
2 var tap = require('tap')
3 var MS = require('../mute.js')
4
5 // some marker objects
6 var END = {}
7 var PAUSE = {}
8 var RESUME = {}
9
10 function PassThrough () {
11   Stream.call(this)
12   this.readable = this.writable = true
13 }
14
15 PassThrough.prototype = Object.create(Stream.prototype, {
16   constructor: {
17     value: PassThrough
18   },
19   write: {
20     value: function (c) {
21       this.emit('data', c)
22       return true
23     }
24   },
25   end: {
26     value: function (c) {
27       if (c) this.write(c)
28       this.emit('end')
29     }
30   },
31   pause: {
32     value: function () {
33       this.emit('pause')
34     }
35   },
36   resume: {
37     value: function () {
38       this.emit('resume')
39     }
40   }
41 })
42
43 tap.test('incoming', function (t) {
44   var ms = new MS
45   var str = new PassThrough
46   str.pipe(ms)
47
48   var expect = ['foo', 'boo', END]
49   ms.on('data', function (c) {
50     t.equal(c, expect.shift())
51   })
52   ms.on('end', function () {
53     t.equal(END, expect.shift())
54     t.end()
55   })
56   str.write('foo')
57   ms.mute()
58   str.write('bar')
59   ms.unmute()
60   str.write('boo')
61   ms.mute()
62   str.write('blaz')
63   str.end('grelb')
64 })
65
66 tap.test('outgoing', function (t) {
67   var ms = new MS
68   var str = new PassThrough
69   ms.pipe(str)
70
71   var expect = ['foo', 'boo', END]
72   str.on('data', function (c) {
73     t.equal(c, expect.shift())
74   })
75   str.on('end', function () {
76     t.equal(END, expect.shift())
77     t.end()
78   })
79
80   ms.write('foo')
81   ms.mute()
82   ms.write('bar')
83   ms.unmute()
84   ms.write('boo')
85   ms.mute()
86   ms.write('blaz')
87   ms.end('grelb')
88 })
89
90 tap.test('isTTY', function (t) {
91   var str = new PassThrough
92   str.isTTY = true
93   str.columns=80
94   str.rows=24
95
96   var ms = new MS
97   t.equal(ms.isTTY, false)
98   t.equal(ms.columns, undefined)
99   t.equal(ms.rows, undefined)
100   ms.pipe(str)
101   t.equal(ms.isTTY, true)
102   t.equal(ms.columns, 80)
103   t.equal(ms.rows, 24)
104   str.isTTY = false
105   t.equal(ms.isTTY, false)
106   t.equal(ms.columns, 80)
107   t.equal(ms.rows, 24)
108   str.isTTY = true
109   t.equal(ms.isTTY, true)
110   t.equal(ms.columns, 80)
111   t.equal(ms.rows, 24)
112   ms.isTTY = false
113   t.equal(ms.isTTY, false)
114   t.equal(ms.columns, 80)
115   t.equal(ms.rows, 24)
116
117   ms = new MS
118   t.equal(ms.isTTY, false)
119   str.pipe(ms)
120   t.equal(ms.isTTY, true)
121   str.isTTY = false
122   t.equal(ms.isTTY, false)
123   str.isTTY = true
124   t.equal(ms.isTTY, true)
125   ms.isTTY = false
126   t.equal(ms.isTTY, false)
127
128   t.end()
129 })
130
131 tap.test('pause/resume incoming', function (t) {
132   var str = new PassThrough
133   var ms = new MS
134   str.on('pause', function () {
135     t.equal(PAUSE, expect.shift())
136   })
137   str.on('resume', function () {
138     t.equal(RESUME, expect.shift())
139   })
140   var expect = [PAUSE, RESUME, PAUSE, RESUME]
141   str.pipe(ms)
142   ms.pause()
143   ms.resume()
144   ms.pause()
145   ms.resume()
146   t.equal(expect.length, 0, 'saw all events')
147   t.end()
148 })
149
150 tap.test('replace with *', function (t) {
151   var str = new PassThrough
152   var ms = new MS({replace: '*'})
153   str.pipe(ms)
154   var expect = ['foo', '*****', 'bar', '***', 'baz', 'boo', '**', '****']
155
156   ms.on('data', function (c) {
157     t.equal(c, expect.shift())
158   })
159
160   str.write('foo')
161   ms.mute()
162   str.write('12345')
163   ms.unmute()
164   str.write('bar')
165   ms.mute()
166   str.write('baz')
167   ms.unmute()
168   str.write('baz')
169   str.write('boo')
170   ms.mute()
171   str.write('xy')
172   str.write('xyzΩ')
173
174   t.equal(expect.length, 0)
175   t.end()
176 })
177
178 tap.test('replace with ~YARG~', function (t) {
179   var str = new PassThrough
180   var ms = new MS({replace: '~YARG~'})
181   str.pipe(ms)
182   var expect = ['foo', '~YARG~~YARG~~YARG~~YARG~~YARG~', 'bar',
183                 '~YARG~~YARG~~YARG~', 'baz', 'boo', '~YARG~~YARG~',
184                 '~YARG~~YARG~~YARG~~YARG~']
185
186   ms.on('data', function (c) {
187     t.equal(c, expect.shift())
188   })
189
190   // also throw some unicode in there, just for good measure.
191   str.write('foo')
192   ms.mute()
193   str.write('ΩΩ')
194   ms.unmute()
195   str.write('bar')
196   ms.mute()
197   str.write('Ω')
198   ms.unmute()
199   str.write('baz')
200   str.write('boo')
201   ms.mute()
202   str.write('Ω')
203   str.write('ΩΩ')
204
205   t.equal(expect.length, 0)
206   t.end()
207 })