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 |
|
---|