test.js (6975B)
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