169 lines
6.8 KiB
JavaScript
169 lines
6.8 KiB
JavaScript
var tape = require('tape')
|
|
, EE = require('events').EventEmitter
|
|
, util = require('util')
|
|
|
|
|
|
, isStream = require('./')
|
|
, isReadable = require('./').isReadable
|
|
, isWritable = require('./').isWritable
|
|
, isDuplex = require('./').isDuplex
|
|
|
|
, CoreStreams = require('stream')
|
|
, ReadableStream10 = require('./readable-stream-1.0/')
|
|
, ReadableStream11 = require('./readable-stream-1.1/')
|
|
|
|
|
|
function test (pass, type, stream) {
|
|
tape('isStream(' + type + ')', function (t) {
|
|
t.plan(1)
|
|
t.ok(pass === isStream(stream), type)
|
|
})
|
|
}
|
|
|
|
|
|
function testReadable (pass, type, stream) {
|
|
tape('isReadable(' + type + ')', function (t) {
|
|
t.plan(1)
|
|
t.ok(pass === isReadable(stream), type)
|
|
})
|
|
}
|
|
|
|
|
|
function testWritable (pass, type, stream) {
|
|
tape('isWritable(' + type + ')', function (t) {
|
|
t.plan(1)
|
|
t.ok(pass === isWritable(stream), type)
|
|
})
|
|
}
|
|
|
|
|
|
function testDuplex (pass, type, stream) {
|
|
tape('isDuplex(' + type + ')', function (t) {
|
|
t.plan(1)
|
|
t.ok(pass === isDuplex(stream), type)
|
|
})
|
|
}
|
|
|
|
|
|
[ undefined, null, '', true, false, 0, 1, 1.0, 'string', {}, function foo () {} ].forEach(function (o) {
|
|
test(false, 'non-stream / primitive: ' + (JSON.stringify(o) || (o && o.toString()) || o), o)
|
|
})
|
|
|
|
|
|
test(false, 'fake stream obj', { pipe: function () {} })
|
|
|
|
|
|
;(function () {
|
|
|
|
// looks like a stream!
|
|
|
|
function Stream () {
|
|
EE.call(this)
|
|
}
|
|
util.inherits(Stream, EE)
|
|
Stream.prototype.pipe = function () {}
|
|
Stream.Stream = Stream
|
|
|
|
test(false, 'fake stream "new Stream()"', new Stream())
|
|
|
|
}())
|
|
|
|
|
|
test(true, 'CoreStreams.Stream', new (CoreStreams.Stream)())
|
|
test(true, 'CoreStreams.Readable', new (CoreStreams.Readable)())
|
|
test(true, 'CoreStreams.Writable', new (CoreStreams.Writable)())
|
|
test(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
|
|
test(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
|
|
test(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
|
|
|
|
test(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
|
|
test(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
|
|
test(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
|
|
test(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
|
|
test(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
|
|
|
|
test(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
|
|
test(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
|
|
test(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
|
|
test(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
|
|
test(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
|
|
|
|
|
|
testReadable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
|
|
testReadable(true, 'CoreStreams.Readable', new (CoreStreams.Readable)())
|
|
testReadable(false, 'CoreStreams.Writable', new (CoreStreams.Writable)())
|
|
testReadable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
|
|
testReadable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
|
|
testReadable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
|
|
|
|
testReadable(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
|
|
testReadable(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
|
|
testReadable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
|
|
testReadable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
|
|
testReadable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
|
|
|
|
testReadable(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
|
|
testReadable(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
|
|
testReadable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
|
|
testReadable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
|
|
testReadable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
|
|
|
|
|
|
testWritable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
|
|
testWritable(false, 'CoreStreams.Readable', new (CoreStreams.Readable)())
|
|
testWritable(true, 'CoreStreams.Writable', new (CoreStreams.Writable)())
|
|
testWritable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
|
|
testWritable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
|
|
testWritable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
|
|
|
|
testWritable(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
|
|
testWritable(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
|
|
testWritable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
|
|
testWritable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
|
|
testWritable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
|
|
|
|
testWritable(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
|
|
testWritable(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
|
|
testWritable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
|
|
testWritable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
|
|
testWritable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
|
|
|
|
|
|
testDuplex(false, 'CoreStreams.Stream', new (CoreStreams.Stream)())
|
|
testDuplex(false, 'CoreStreams.Readable', new (CoreStreams.Readable)())
|
|
testDuplex(false, 'CoreStreams.Writable', new (CoreStreams.Writable)())
|
|
testDuplex(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)())
|
|
testDuplex(true, 'CoreStreams.Transform', new (CoreStreams.Transform)())
|
|
testDuplex(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)())
|
|
|
|
testDuplex(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)())
|
|
testDuplex(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)())
|
|
testDuplex(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)())
|
|
testDuplex(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)())
|
|
testDuplex(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)())
|
|
|
|
testDuplex(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)())
|
|
testDuplex(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)())
|
|
testDuplex(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)())
|
|
testDuplex(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)())
|
|
testDuplex(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)())
|
|
|
|
|
|
;[ CoreStreams, ReadableStream10, ReadableStream11 ].forEach(function (p) {
|
|
[ 'Stream', 'Readable', 'Writable', 'Duplex', 'Transform', 'PassThrough' ].forEach(function (k) {
|
|
if (!p[k])
|
|
return
|
|
|
|
function SubStream () {
|
|
p[k].call(this)
|
|
}
|
|
util.inherits(SubStream, p[k])
|
|
|
|
test(true, 'Stream subclass: ' + p.name + '.' + k, new SubStream())
|
|
|
|
})
|
|
})
|
|
|
|
|
|
|