コード例 #1
0
 public function getTaskResultFromMessage(OutputMessage $message)
 {
     $data = $message->getData();
     $type = substr($data, 0, 1);
     $serializedData = substr($data, 1);
     if ($type === 'r') {
         $return = unserialize($serializedData);
         $taskResult = TaskResult::fromReturn($return);
     } elseif ($type === 'e') {
         list($class, $message, $code, $file, $line, ) = unserialize($serializedData);
         $exception = $this->createResultException($class);
         $this->setResultExceptionInternalData($exception, $class, $message, $code, $file, $line);
         $taskResult = TaskResult::fromException($exception);
     } else {
         $taskResult = TaskResult::fromReturn(null);
     }
     return $taskResult;
 }
 public function testExceptionSerialization()
 {
     $sut = new TaskMessageSerializeTransformer();
     $message = 'test message';
     $code = 123;
     $exception = new TestException($message, $code);
     $taskResult = TaskResult::fromException($exception);
     $message = $sut->getOutputMessageFromResult($taskResult);
     $taskResult2 = $sut->getTaskResultFromMessage($message);
     try {
         $taskResult2->getResult();
         $this->fail('No exception was thrown');
     } catch (TestException $exception2) {
     }
     $this->assertEquals($exception->getMessage(), $exception2->getMessage());
     $this->assertEquals($exception->getCode(), $exception2->getCode());
     $this->assertEquals($exception->getFile(), $exception2->getFile());
     $this->assertEquals($exception->getLine(), $exception2->getLine());
     $this->assertCount(1, $exception2->getTrace());
 }