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.
 
 
 
 
 

100 lines
2.5 KiB

<?php
namespace React\Promise;
class CancellationQueueTest extends TestCase
{
/** @test */
public function acceptsSimpleCancellableThenable()
{
$p = new SimpleTestCancellableThenable();
$cancellationQueue = new CancellationQueue();
$cancellationQueue->enqueue($p);
$cancellationQueue();
$this->assertTrue($p->cancelCalled);
}
/** @test */
public function ignoresSimpleCancellable()
{
$p = new SimpleTestCancellable();
$cancellationQueue = new CancellationQueue();
$cancellationQueue->enqueue($p);
$cancellationQueue();
$this->assertFalse($p->cancelCalled);
}
/** @test */
public function callsCancelOnPromisesEnqueuedBeforeStart()
{
$d1 = $this->getCancellableDeferred();
$d2 = $this->getCancellableDeferred();
$cancellationQueue = new CancellationQueue();
$cancellationQueue->enqueue($d1->promise());
$cancellationQueue->enqueue($d2->promise());
$cancellationQueue();
}
/** @test */
public function callsCancelOnPromisesEnqueuedAfterStart()
{
$d1 = $this->getCancellableDeferred();
$d2 = $this->getCancellableDeferred();
$cancellationQueue = new CancellationQueue();
$cancellationQueue();
$cancellationQueue->enqueue($d2->promise());
$cancellationQueue->enqueue($d1->promise());
}
/** @test */
public function doesNotCallCancelTwiceWhenStartedTwice()
{
$d = $this->getCancellableDeferred();
$cancellationQueue = new CancellationQueue();
$cancellationQueue->enqueue($d->promise());
$cancellationQueue();
$cancellationQueue();
}
/** @test */
public function rethrowsExceptionsThrownFromCancel()
{
$this->setExpectedException('\Exception', 'test');
$mock = $this
->getMockBuilder('React\Promise\CancellablePromiseInterface')
->getMock();
$mock
->expects($this->once())
->method('cancel')
->will($this->throwException(new \Exception('test')));
$cancellationQueue = new CancellationQueue();
$cancellationQueue->enqueue($mock);
$cancellationQueue();
}
private function getCancellableDeferred()
{
$mock = $this->createCallableMock();
$mock
->expects($this->once())
->method('__invoke');
return new Deferred($mock);
}
}