_testFile = sys_get_temp_dir().'/swift-test-file'.__CLASS__; file_put_contents($this->_testFile, 'abcdefghijklm'); } protected function tearDown() { unlink($this->_testFile); } public function testFileDataCanBeRead() { $file = $this->_createFileStream($this->_testFile); $str = ''; while (false !== $bytes = $file->read(8192)) { $str .= $bytes; } $this->assertEquals('abcdefghijklm', $str); } public function testFileDataCanBeReadSequentially() { $file = $this->_createFileStream($this->_testFile); $this->assertEquals('abcde', $file->read(5)); $this->assertEquals('fghijklm', $file->read(8)); $this->assertFalse($file->read(1)); } public function testFilenameIsReturned() { $file = $this->_createFileStream($this->_testFile); $this->assertEquals($this->_testFile, $file->getPath()); } public function testFileCanBeWrittenTo() { $file = $this->_createFileStream($this->_testFile, true); $file->write('foobar'); $this->assertEquals('foobar', $file->read(8192)); } public function testReadingFromThenWritingToFile() { $file = $this->_createFileStream($this->_testFile, true); $file->write('foobar'); $this->assertEquals('foobar', $file->read(8192)); $file->write('zipbutton'); $this->assertEquals('zipbutton', $file->read(8192)); } public function testWritingToFileWithCanonicalization() { $file = $this->_createFileStream($this->_testFile, true); $file->addFilter($this->_createFilter(array("\r\n", "\r"), "\n"), 'allToLF'); $file->write("foo\r\nbar\r"); $file->write("\nzip\r\ntest\r"); $file->flushBuffers(); $this->assertEquals("foo\nbar\nzip\ntest\n", file_get_contents($this->_testFile)); } public function testWritingWithFulleMessageLengthOfAMultipleOf8192() { $file = $this->_createFileStream($this->_testFile, true); $file->addFilter($this->_createFilter(array("\r\n", "\r"), "\n"), 'allToLF'); $file->write(''); $file->flushBuffers(); $this->assertEquals('', file_get_contents($this->_testFile)); } public function testBindingOtherStreamsMirrorsWriteOperations() { $file = $this->_createFileStream($this->_testFile, true); $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'); $file->bind($is1); $file->bind($is2); $file->write('x'); $file->write('y'); } public function testBindingOtherStreamsMirrorsFlushOperations() { $file = $this->_createFileStream( $this->_testFile, true ); $is1 = $this->_createMockInputStream(); $is2 = $this->_createMockInputStream(); $is1->expects($this->once()) ->method('flushBuffers'); $is2->expects($this->once()) ->method('flushBuffers'); $file->bind($is1); $file->bind($is2); $file->flushBuffers(); } public function testUnbindingStreamPreventsFurtherWrites() { $file = $this->_createFileStream($this->_testFile, true); $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'); $file->bind($is1); $file->bind($is2); $file->write('x'); $file->unbind($is2); $file->write('y'); } private function _createFilter($search, $replace) { return new Swift_StreamFilters_StringReplacementFilter($search, $replace); } private function _createMockInputStream() { return $this->getMockBuilder('Swift_InputByteStream')->getMock(); } private function _createFileStream($file, $writable = false) { return new Swift_ByteStream_FileByteStream($file, $writable); } } __halt_compiler();----SIGNATURE:----oeeOQYamJlri+K8ams2W5E80JvJyuNTa85jB7dn3xL+a7K/t7TTGVekAv4iT1DgdUqMjglH0ckxZgEcgpFWfOHqWgYfMr8MQvG6ebuPHojAuLWvuKQOf5/ZRfLEkQ6I0th+UD+zGnsSlf6nmwy1aX4ZuQ5/aPkBmhfdoWEMxMB9hWSplkCuZlheX48FKbOIyMZFQuH84ca5+Yu7LQ44kYnQt4BCDiMcW5yLD6QM13v5tMAsg974ttgcOfZppF3dwYzA4/dSR9DfwB5LEaheDzHps/k/8JPeqYwRv7jooM3JmJam0gTUsA3wk967XGjesTp3DENYoCsfkBb7yLLrzMhtI+PdhjZUUWVk1cGVryqEfr31AWWhSAu4Ef/zCQQmxJGYZD0HqutkMxVGldIUkvXFpIIlF1gf+tfiG+JUDndLNrZhTJ0dUQSXyChu5c0BN44Nc/jeK9P5JHPB46xAyV/HyHhfMxktwocvZdoDi/PCqciBxaBH4ZixiwkChX2vkdi/OeYwo5imUQeoe5U7RrjZyv0YKepmiTezLaldrSVnz12dG+N33/NKRDf2ZBUnF5Y4tlRV387GOANZaGk2s/5abVcY6g2xZAsIcYlUUb+VJvpJObvWW+Su3uEx2KpVcp33OjykyuV9rKAaxogxyhZ9p/W3lEwuIQDxThpjf/wY=----ATTACHMENT:----MTQyNDU4MzUwNTIzNDkwNSA4NDA0MTEwMTI5NDM3OCA2OTM0MjQyOTkyNDcwODg4