/**
  * Write a suite.halt event on the message.
  *
  * @return void
  */
 public function onSuiteHalt()
 {
     $this->message->setEvent('suite.halt')->write();
 }
     $data = [];
     $this->message->on('test.passed', function ($t, $d) use(&$test, &$data) {
         $test = $t;
         $data = $d;
     });
     $this->message->emit('data', [$this->content]);
     expect($data)->to->have->length->of->at->least(1);
 });
 it('should emit exception and title data with event', function () {
     $suite = new Suite("Parents", function () {
     });
     $test = new Test('should have children');
     $suite->addTest($test);
     $exception = new RuntimeException('a failure');
     $tmpfile = tmpfile();
     $message = new TestMessage($tmpfile);
     $message->setTest($test)->setEvent('test.failed')->setException($exception)->write();
     fseek($tmpfile, 0);
     $content = fread($tmpfile, 8192);
     $receivedTest = null;
     $receivedException = null;
     $message->on('test.failed', function ($t, $e) use(&$receivedTest, &$receivedException) {
         $receivedTest = $t;
         $receivedException = $e;
     });
     $message->emit('data', [$content]);
     expect($receivedTest->getDescription())->to->equal('should have children');
     expect($receivedTest->getTitle())->to->equal('Parents should have children');
     expect($receivedException->getMessage())->to->equal($exception->getMessage());
     expect($receivedException->getTraceAsString())->to->equal($exception->getTraceAsString());
 });