You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							168 lines
						
					
					
						
							6.8 KiB
						
					
					
				
			
		
		
	
	
							168 lines
						
					
					
						
							6.8 KiB
						
					
					
				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()) | 
						|
 | 
						|
  }) | 
						|
}) | 
						|
 | 
						|
 | 
						|
 | 
						|
 |