Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81145 views
1
var tape = require('tape')
2
, EE = require('events').EventEmitter
3
, util = require('util')
4
5
6
, isStream = require('./')
7
, isReadable = require('./').isReadable
8
, isWritable = require('./').isWritable
9
, isDuplex = require('./').isDuplex
10
11
, CoreStreams = require('stream')
12
, ReadableStream10 = require('./readable-stream-1.0/')
13
, ReadableStream11 = require('./readable-stream-1.1/')
14
15
16
function test (pass, type, stream) {
17
tape('isStream(' + type + ')', function (t) {
18
t.plan(1)
19
t.ok(pass === isStream(stream), type)
20
})
21
}
22
23
24
function testReadable (pass, type, stream) {
25
tape('isReadable(' + type + ')', function (t) {
26
t.plan(1)
27
t.ok(pass === isReadable(stream), type)
28
})
29
}
30
31
32
function testWritable (pass, type, stream) {
33
tape('isWritable(' + type + ')', function (t) {
34
t.plan(1)
35
t.ok(pass === isWritable(stream), type)
36
})
37
}
38
39
40
function testDuplex (pass, type, stream) {
41
tape('isDuplex(' + type + ')', function (t) {
42
t.plan(1)
43
t.ok(pass === isDuplex(stream), type)
44
})
45
}
46
47
48
[ undefined, null, '', true, false, 0, 1, 1.0, 'string', {}, function foo () {} ].forEach(function (o) {
49
test(false, 'non-stream / primitive: ' + (JSON.stringify(o) || (o && o.toString()) || o), o)
50
})
51
52
53
test(false, 'fake stream obj', { pipe: function () {} })
54
55
56
;(function () {
57
58
// looks like a stream!
59
60
function Stream () {
61
EE.call(this)
62
}
63
util.inherits(Stream, EE)
64
Stream.prototype.pipe = function () {}
65
Stream.Stream = Stream
66
67
test(false, 'fake stream "new Stream()"', new Stream())
68
69
}())
70
71
72
test(true, 'CoreStreams.Stream', new (CoreStreams.Stream)())
73
test(true, 'CoreStreams.Readable', new (CoreStreams.Readable)())
74
test(true, 'CoreStreams.Writable', new (CoreStreams.Writable)())
75
test(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
76
test(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
77
test(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
78
79
test(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
80
test(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
81
test(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
82
test(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
83
test(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
84
85
test(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
86
test(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
87
test(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
88
test(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
89
test(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
90
91
92
testReadable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
93
testReadable(true, 'CoreStreams.Readable', new (CoreStreams.Readable)())
94
testReadable(false, 'CoreStreams.Writable', new (CoreStreams.Writable)())
95
testReadable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
96
testReadable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
97
testReadable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
98
99
testReadable(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
100
testReadable(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
101
testReadable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
102
testReadable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
103
testReadable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
104
105
testReadable(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
106
testReadable(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
107
testReadable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
108
testReadable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
109
testReadable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
110
111
112
testWritable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
113
testWritable(false, 'CoreStreams.Readable', new (CoreStreams.Readable)())
114
testWritable(true, 'CoreStreams.Writable', new (CoreStreams.Writable)())
115
testWritable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
116
testWritable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
117
testWritable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
118
119
testWritable(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
120
testWritable(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
121
testWritable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
122
testWritable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
123
testWritable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
124
125
testWritable(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
126
testWritable(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
127
testWritable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
128
testWritable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
129
testWritable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
130
131
132
testDuplex(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
133
testDuplex(false, 'CoreStreams.Readable', new (CoreStreams.Readable)())
134
testDuplex(false, 'CoreStreams.Writable', new (CoreStreams.Writable)())
135
testDuplex(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
136
testDuplex(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
137
testDuplex(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
138
139
testDuplex(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
140
testDuplex(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
141
testDuplex(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
142
testDuplex(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
143
testDuplex(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
144
145
testDuplex(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
146
testDuplex(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
147
testDuplex(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
148
testDuplex(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
149
testDuplex(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
150
151
152
;[ CoreStreams, ReadableStream10, ReadableStream11 ].forEach(function (p) {
153
[ 'Stream', 'Readable', 'Writable', 'Duplex', 'Transform', 'PassThrough' ].forEach(function (k) {
154
if (!p[k])
155
return
156
157
function SubStream () {
158
p[k].call(this)
159
}
160
util.inherits(SubStream, p[k])
161
162
test(true, 'Stream subclass: ' + p.name + '.' + k, new SubStream())
163
164
})
165
})
166
167
168
169
170