1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
<?php
abstract class Swift_Transport_StreamBuffer_AbstractStreamBufferAcceptanceTest
extends \PHPUnit_Framework_TestCase
{
protected $_buffer;
abstract protected function _initializeBuffer();
public function setUp()
{
if (true == getenv('TRAVIS')) {
$this->markTestSkipped(
'Will fail on travis-ci if not skipped due to travis blocking '.
'socket mailing tcp connections.'
);
}
$this->_buffer = new Swift_Transport_StreamBuffer(
$this->getMock('Swift_ReplacementFilterFactory')
);
}
public function testReadLine()
{
$this->_initializeBuffer();
$line = $this->_buffer->readLine(0);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
$seq = $this->_buffer->write("QUIT\r\n");
$this->assertTrue((bool) $seq);
$line = $this->_buffer->readLine($seq);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
$this->_buffer->terminate();
}
public function testWrite()
{
$this->_initializeBuffer();
$line = $this->_buffer->readLine(0);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
$seq = $this->_buffer->write("HELO foo\r\n");
$this->assertTrue((bool) $seq);
$line = $this->_buffer->readLine($seq);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
$seq = $this->_buffer->write("QUIT\r\n");
$this->assertTrue((bool) $seq);
$line = $this->_buffer->readLine($seq);
$this->assertRegExp('/^[0-9]{3}.*?\r\n$/D', $line);
$this->_buffer->terminate();
}
public function testBindingOtherStreamsMirrorsWriteOperations()
{
$this->_initializeBuffer();
$is1 = $this->_createMockInputStream();
$is2 = $this->_createMockInputStream();
$is1->expects($this->at(0))
->method('write')
->with('x');
$is1->expects($this->at(1))
->method('write')
->with('y');
$is2->expects($this->at(0))
->method('write')
->with('x');
$is2->expects($this->at(1))
->method('write')
->with('y');
$this->_buffer->bind($is1);
$this->_buffer->bind($is2);
$this->_buffer->write('x');
$this->_buffer->write('y');
}
public function testBindingOtherStreamsMirrorsFlushOperations()
{
$this->_initializeBuffer();
$is1 = $this->_createMockInputStream();
$is2 = $this->_createMockInputStream();
$is1->expects($this->once())
->method('flushBuffers');
$is2->expects($this->once())
->method('flushBuffers');
$this->_buffer->bind($is1);
$this->_buffer->bind($is2);
$this->_buffer->flushBuffers();
}
public function testUnbindingStreamPreventsFurtherWrites()
{
$this->_initializeBuffer();
$is1 = $this->_createMockInputStream();
$is2 = $this->_createMockInputStream();
$is1->expects($this->at(0))
->method('write')
->with('x');
$is1->expects($this->at(1))
->method('write')
->with('y');
$is2->expects($this->once())
->method('write')
->with('x');
$this->_buffer->bind($is1);
$this->_buffer->bind($is2);
$this->_buffer->write('x');
$this->_buffer->unbind($is2);
$this->_buffer->write('y');
}
// -- Creation Methods
private function _createMockInputStream()
{
return $this->getMock('Swift_InputByteStream');
}
}
|