A text, audio and video chat application built with webRTC and Ratchet (PHP WebSocket)
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.
 
 
 
 
 

155 lines
4.7 KiB

<?php
namespace React\Tests\Stream;
use React\Stream\CompositeStream;
use React\Stream\ReadableStream;
use React\Stream\WritableStream;
/**
* @covers React\Stream\CompositeStream
*/
class CompositeStreamTest extends TestCase
{
/** @test */
public function itShouldForwardWritableCallsToWritableStream()
{
$readable = $this->getMock('React\Stream\ReadableStreamInterface');
$writable = $this->getMock('React\Stream\WritableStreamInterface');
$writable
->expects($this->once())
->method('write')
->with('foo');
$writable
->expects($this->once())
->method('isWritable');
$composite = new CompositeStream($readable, $writable);
$composite->write('foo');
$composite->isWritable();
}
/** @test */
public function itShouldForwardReadableCallsToReadableStream()
{
$readable = $this->getMock('React\Stream\ReadableStreamInterface');
$readable
->expects($this->once())
->method('isReadable');
$readable
->expects($this->once())
->method('pause');
$readable
->expects($this->once())
->method('resume');
$writable = $this->getMock('React\Stream\WritableStreamInterface');
$composite = new CompositeStream($readable, $writable);
$composite->isReadable();
$composite->pause();
$composite->resume();
}
/** @test */
public function endShouldDelegateToWritableWithData()
{
$readable = $this->getMock('React\Stream\ReadableStreamInterface');
$writable = $this->getMock('React\Stream\WritableStreamInterface');
$writable
->expects($this->once())
->method('end')
->with('foo');
$composite = new CompositeStream($readable, $writable);
$composite->end('foo');
}
/** @test */
public function closeShouldCloseBothStreams()
{
$readable = $this->getMock('React\Stream\ReadableStreamInterface');
$readable
->expects($this->once())
->method('close');
$writable = $this->getMock('React\Stream\WritableStreamInterface');
$writable
->expects($this->once())
->method('close');
$composite = new CompositeStream($readable, $writable);
$composite->close();
}
/** @test */
public function itShouldReceiveForwardedEvents()
{
$readable = new ReadableStream();
$writable = new WritableStream();
$composite = new CompositeStream($readable, $writable);
$composite->on('data', $this->expectCallableOnce());
$composite->on('drain', $this->expectCallableOnce());
$readable->emit('data', array('foo'));
$writable->emit('drain');
}
/** @test */
public function itShouldHandlePipingCorrectly()
{
$readable = $this->getMock('React\Stream\ReadableStreamInterface');
$writable = $this->getMock('React\Stream\WritableStreamInterface');
$writable
->expects($this->once())
->method('write')
->with('foo');
$composite = new CompositeStream($readable, $writable);
$input = new ReadableStream();
$input->pipe($composite);
$input->emit('data', array('foo'));
}
/** @test */
public function itShouldForwardPauseAndResumeUpstreamWhenPipedTo()
{
$readable = $this->getMock('React\Stream\ReadableStreamInterface');
$writable = $this->getMock('React\Stream\WritableStream', array('write'));
$writable
->expects($this->once())
->method('write')
->will($this->returnValue(false));
$composite = new CompositeStream($readable, $writable);
$input = $this->getMock('React\Stream\ReadableStream', array('pause', 'resume'));
$input
->expects($this->once())
->method('pause');
$input
->expects($this->once())
->method('resume');
$input->pipe($composite);
$input->emit('data', array('foo'));
$writable->emit('drain');
}
/** @test */
public function itShouldForwardPipeCallsToReadableStream()
{
$readable = new ReadableStream();
$writable = $this->getMock('React\Stream\WritableStreamInterface');
$composite = new CompositeStream($readable, $writable);
$output = $this->getMock('React\Stream\WritableStreamInterface');
$output
->expects($this->once())
->method('write')
->with('foo');
$composite->pipe($output);
$readable->emit('data', array('foo'));
}
}