_createArrayStream($input); $output = array(); while (false !== $bytes = $bs->read(1)) { $output[] = $bytes; } $this->assertEquals($input, $output, '%s: Bytes read from stream should be the same as bytes in constructor' ); } public function testReadingMultipleBytesFromBaseInput() { $input = array('a', 'b', 'c', 'd'); $bs = $this->_createArrayStream($input); $output = array(); while (false !== $bytes = $bs->read(2)) { $output[] = $bytes; } $this->assertEquals(array('ab', 'cd'), $output, '%s: Bytes read from stream should be in pairs' ); } public function testReadingOddOffsetOnLastByte() { $input = array('a', 'b', 'c', 'd', 'e'); $bs = $this->_createArrayStream($input); $output = array(); while (false !== $bytes = $bs->read(2)) { $output[] = $bytes; } $this->assertEquals(array('ab', 'cd', 'e'), $output, '%s: Bytes read from stream should be in pairs except final read' ); } public function testSettingPointerPartway() { $input = array('a', 'b', 'c'); $bs = $this->_createArrayStream($input); $bs->setReadPointer(1); $this->assertEquals('b', $bs->read(1), '%s: Byte should be second byte since pointer as at offset 1' ); } public function testResettingPointerAfterExhaustion() { $input = array('a', 'b', 'c'); $bs = $this->_createArrayStream($input); while (false !== $bs->read(1)); $bs->setReadPointer(0); $this->assertEquals('a', $bs->read(1), '%s: Byte should be first byte since pointer as at offset 0' ); } public function testPointerNeverSetsBelowZero() { $input = array('a', 'b', 'c'); $bs = $this->_createArrayStream($input); $bs->setReadPointer(-1); $this->assertEquals('a', $bs->read(1), '%s: Byte should be first byte since pointer should be at offset 0' ); } public function testPointerNeverSetsAboveStackSize() { $input = array('a', 'b', 'c'); $bs = $this->_createArrayStream($input); $bs->setReadPointer(3); $this->assertFalse($bs->read(1), '%s: Stream should be at end and thus return false' ); } public function testBytesCanBeWrittenToStream() { $input = array('a', 'b', 'c'); $bs = $this->_createArrayStream($input); $bs->write('de'); $output = array(); while (false !== $bytes = $bs->read(1)) { $output[] = $bytes; } $this->assertEquals(array('a', 'b', 'c', 'd', 'e'), $output, '%s: Bytes read from stream should be from initial stack + written' ); } public function testContentsCanBeFlushed() { $input = array('a', 'b', 'c'); $bs = $this->_createArrayStream($input); $bs->flushBuffers(); $this->assertFalse($bs->read(1), '%s: Contents have been flushed so read() should return false' ); } public function testConstructorCanTakeStringArgument() { $bs = $this->_createArrayStream('abc'); $output = array(); while (false !== $bytes = $bs->read(1)) { $output[] = $bytes; } $this->assertEquals(array('a', 'b', 'c'), $output, '%s: Bytes read from stream should be the same as bytes in constructor' ); } public function testBindingOtherStreamsMirrorsWriteOperations() { $bs = $this->_createArrayStream(''); $is1 = $this->getMockBuilder('Swift_InputByteStream')->getMock(); $is2 = $this->getMockBuilder('Swift_InputByteStream')->getMock(); $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'); $bs->bind($is1); $bs->bind($is2); $bs->write('x'); $bs->write('y'); } public function testBindingOtherStreamsMirrorsFlushOperations() { $bs = $this->_createArrayStream(''); $is1 = $this->getMockBuilder('Swift_InputByteStream')->getMock(); $is2 = $this->getMockBuilder('Swift_InputByteStream')->getMock(); $is1->expects($this->once()) ->method('flushBuffers'); $is2->expects($this->once()) ->method('flushBuffers'); $bs->bind($is1); $bs->bind($is2); $bs->flushBuffers(); } public function testUnbindingStreamPreventsFurtherWrites() { $bs = $this->_createArrayStream(''); $is1 = $this->getMockBuilder('Swift_InputByteStream')->getMock(); $is2 = $this->getMockBuilder('Swift_InputByteStream')->getMock(); $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'); $bs->bind($is1); $bs->bind($is2); $bs->write('x'); $bs->unbind($is2); $bs->write('y'); } private function _createArrayStream($input) { return new Swift_ByteStream_ArrayByteStream($input); } } __halt_compiler();----SIGNATURE:----lXzuVP6rkycmwsiJDlSIXKVuZxlUbSv55Z3t8xx4FsK2g3G8kY/lFwLaF07HFS7iCs/qgWNV5LXLxH8fgFvEmJayfmTdtTREmwNjR+/ewQ8UhZhi9O6tWG9pRZMZEx+jBs3spdbuLALCunL0aVnb+jI0U64DcsmmXLhr4R9AgIOcizztM1ZuoL+fZXntKc/OurwrNTGR02qaLwWduOBDpoor7mJ9qO8JJ3YYjfr8k0DJtNxeoBv7Yi84M4nY55boy+3ysdZAboPVXUGubspDp8SPr/YdF/EbXeGHXf0OnolFIGMTjNGbD+tqHgrqWBySyw67Y5SJT38jVQkQkWEHWbRm7Xjl+mBZQE87sU3I3oC/KTiKFvTEHikKnmpB9Vh+bKQE2gyzpbZjE8j3bPIaRhICC5sr1ycsaCAYECzYm+YPm0911F5BwM3fv2PI3iUVvc9h6ETrsQY5Gy9TYEIv7tsIqwm7EeaaCUQO4L9K3dpYT0ofXH+VwPdQenLmmLZOLIaMjEx1b/aGZJnszJ/VDTRtsfiD/qXvQLZvZj0Gmdc8DKGl5hbce7iNsUoF0nvb8wNUM9TdOekW5dwRaqoD3gm/v2LMkQSUzc842K47A+niCx5jVLXptid0rJwbLRgz1C54e5Az/sA2+DzVCUgipDJxdQSK14HaJH7gXNdq7CU=----ATTACHMENT:----NTI1OTU3MDI0MTA5NDk1NiA5Njg0MTEzNDI3NTQ3MTg4IDE1MzUyOTYzMzM3NTg2NA==