/**
  * Render the details of each failed request including the mismatching headers and body.
  *
  * @param ResultsRenderer $renderer
  * @return string
  */
 public function render(ResultsRenderer $renderer)
 {
     $results = array_filter($this->result->getIterator()->getArrayCopy(), function (ResultInterface $result) {
         return $result instanceof FailureInterface;
     });
     $output = '';
     foreach ($results as $key => $request) {
         $output .= "\n";
         $output .= $renderer->style(sprintf("Request %02d\n\n", $key + 1), ['bold', 'underline', 'green']);
         if (!$request instanceof CgiOutRequestFailure) {
             $output .= $renderer->renderResult($request);
             $output .= $renderer->lineBreak();
             continue;
         }
         if ($request->headersDifferent()) {
             $output .= sprintf("  %s    %s\n  %s  %s\n", $renderer->style("ACTUAL HEADERS:", ['bold', 'yellow']), $this->headers($request->getActualHeaders(), $renderer), $renderer->style("EXPECTED HEADERS:", ['bold', 'yellow']), $this->headers($request->getExpectedHeaders(), $renderer, false));
         }
         if ($request->bodyDifferent()) {
             if ($request->headersAndBodyDifferent()) {
                 $output .= $renderer->style("  * * * * * * * * *\n\n", ['green', 'bold']);
             }
             $output .= sprintf("  %s    %s\n\n  %s  %s\n", $renderer->style("ACTUAL CONTENT:", ['bold', 'yellow']), $renderer->style(sprintf('"%s"', $request->getActualOutput()), 'red'), $renderer->style("EXPECTED CONTENT:", ['bold', 'yellow']), $renderer->style(sprintf('"%s"', $request->getExpectedOutput()), 'default'));
         }
         $output .= $renderer->lineBreak();
     }
     return $output . "\n";
 }
 public function testIsSuccessful()
 {
     $request = new CgiOutRequestFailure($this->getMock(RequestInterface::class), '', '', [], []);
     $cgiOutResult = new CgiOutResult('Some Check', [$request]);
     $this->assertFalse($cgiOutResult->isSuccessful());
     $cgiOutResult = new CgiOutResult('Some Check', [new Success('Successful Check')]);
     $this->assertTrue($cgiOutResult->isSuccessful());
     $cgiOutResult->add($request);
     $this->assertFalse($cgiOutResult->isSuccessful());
 }