/** * Convert exceptions using context. * * @param TestMeta $test * @param MethodEvent $event * @param array $dataSet * * @return int Status code */ protected function behavior(TestMeta $test, MethodEvent $event, array $dataSet) { try { $statusCode = 0; call_user_func_array([$this->runner->getTestCase(), $test->getMethod()], $dataSet); if ($test->getExpectedException()) { throw new TestFailException('Expected exception ' . $test->getExpectedException()); } $this->finish($test, $event, MethodEvent::METHOD_OK); } catch (TestErrorException $exception) { $statusCode = $this->context->onError($exception); $this->finish($test, $event, MethodEvent::METHOD_FAILED, $exception); } catch (IncompleteTestException $exception) { $statusCode = $this->context->onIncomplete($exception); $this->finish($test, $event, MethodEvent::METHOD_INCOMPLETE, $exception); } catch (\Exception $exception) { $statusCode = $this->exceptionControl($test, $event, $exception); } return $statusCode; }