/** * Creates wrapper-closure for the example table. * * @param OutlineNode $outline * @param ExampleNode $example * @param AfterStepTested[] $stepEvents * * @return callable */ private function getWrapperClosure(OutlineNode $outline, ExampleNode $example, array $stepEvents) { $resultConverter = $this->resultConverter; return function ($value, $column) use($outline, $example, $stepEvents, $resultConverter) { $results = array(); foreach ($stepEvents as $event) { $index = array_search($event->getStep(), $example->getSteps()); $header = $outline->getExampleTable()->getRow(0); $steps = $outline->getSteps(); $outlineStepText = $steps[$index]->getText(); if (false !== strpos($outlineStepText, '<' . $header[$column] . '>')) { $results[] = $event->getTestResult(); } } $result = new TestResults($results); $style = $resultConverter->convertResultToString($result); return sprintf('{+%s}%s{-%s}', $style, $value, $style); }; }
/** * @param ExampleNode $scenario * @return OutlineNode */ public function getCurrentOutline(ExampleNode $scenario) { return $this->lineScenarioMap[$scenario->getLine()]; }
/** * Prints example title. * * @param OutputPrinter $printer * @param ExampleNode $example */ private function printTitle(OutputPrinter $printer, ExampleNode $example) { $printer->write(sprintf('%s%s', $this->indentText, $example->getTitle())); }