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()); }