_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:----ksp2/npMyPP4/MnSul4njlbmLzCYdX4Bc+LEi1mo1y9mOM7/Y+T7HH70Mc07ut0Vl8KuqdYEC9AnFvE8CSMDPdNEmWaZFYvsSQxhXEEiFE9LFyXqGqNVKw4m46y9pgyg9CP9f+IeZjoZvqNr3rLwb/Q7DP80dmhtYlbftoT+RPKp8s5JinfUXCVdzJUNr+a4VsjrT1t5FnsAd//WlpbYmvrTdwqNZK87Axa9uERY3xxy0oa5ey67x5Lutt1ZMh/a9uKYlrg6Cf45UhWsnlOvpDTSS9NxTDyJophM00upSEClCR8nA1ssC7Oj4Hc//SS0E0JZ13Y+SUtmZmZLDchZfGM8jlv7j6lIt9BlTiCXNYSTTdpvEUSacH4VTNa4wsk+W4AL1AAsOEvWAHqOndZ3iN732VNu/0L95kbTMh8mmQPLNcfvBRNmctJUAttQ+fNffUlhzVCOZnG9dBigQF4StHXVywx2EwOEoM2AuI8MT5tzz+kRkgCitVyIbBOpnn7y35NLK8Pde8FUaBS698WrY1f4vhEEKu7XG84GX/QnQdtFTAhz4Y//gg24CpMNtxTIidMGlK7jqpVqhlbGfnxKBNA72SPO53K7EUwY7J0aUxa3RY0rWGPUELY5X/F4N8ofVfeMng5BJ7YbruK3m4o7qDOEYjyVM1Q+6XanFRzxbfk=----ATTACHMENT:----ODQ1NzQ4NTkyMjA0OTk4NiA2NDIwOTI3MzM0NzMzODY5IDM0NzIxNTg5ODk4NjEzODM=