protected function writeTestAssertionsFailed(\DOMDocument $document_, \DOMElement $testCase_, Test_Result $resultTest_, $elementName_) { $element = $document_->createElement($elementName_); $testCase_->appendChild($element); $element->setAttribute(self::XML_ATTRIBUTE_NAME_TYPE, 'Assertion_Error'); $element->setAttribute(self::XML_ATTRIBUTE_NAME_MESSAGE, 'Assertion Failed'); $output = []; foreach ($resultTest_->collect(Test_Result::TYPE_ASSERTION, Test_Result::STATE_FAILED) as $result) { $output[] = $result->output; } $element->appendChild($document_->createCDATASection(implode(Io::LINE_SEPARATOR_DEFAULT, $output))); }
protected function invokeTest(Test_Unit_Internal_DynamicProxy $case_, \ReflectionMethod $test_, Test_Result $result_) { Assertion_Context::push(new Assertion_Context()); $start = microtime(true); $case_->{$test_->name}(); $result_->processingTime = microtime(true) - $start; $context = Assertion_Context::pop(); foreach ($context->getAssertions() as $assertion) { $assertionResult = $result_->create(Test_Result::TYPE_ASSERTION); $assertionResult->name = $assertion['name']; $assertionResult->output = $assertion['message']; if (false === $assertion['result']) { $assertionResult->addState(Test_Result::STATE_FAILED); } } $failed = $case_->isFailed($test_); $failedExpected = $case_->isFailedExpected($test_); $failedAssertions = $result_->count(Test_Result::TYPE_ASSERTION, Test_Result::STATE_FAILED, true); if (($failed || 0 < $failedAssertions) && false === $failedExpected || false === $failed && 1 > $failedAssertions && $failedExpected) { $result_->addState(Test_Result::STATE_FAILED); $result_->exception = $case_->getException($test_); if (null === $result_->exception && ($expectedExceptionClass = $case_->getExpectedExceptionClass($test_))) { $result_->exception = Exception_Flat::createEmpty(); $result_->exception->message = sprintf('Expected exception not thrown [%1$s].', $expectedExceptionClass); } } if ($profiler = $case_->getProfilerResult($test_)) { $result_->processingTime = $profiler->processingTime(); $result_->profilerMemoryConsumption = $profiler->memoryConsumptionAsString(); $result_->profilerPosixTimes = $profiler->posixTimesAsString(); $result_->profilerProcessingTime = $profiler->processingTimeAsString(); $result_->profilerSplitTimeTable = $profiler->splitTimeTable(); } $result_->output = $case_->getOutput($test_); }
public function leaveTest(Test_Result $result_) { // FIXME (CSH) Align consumption details. if ($result_->profilerMemoryConsumption) { $consumption = $result_->profilerMemoryConsumption; } else { $consumption = str_repeat(' ', 10); } $consumption .= sprintf('%07.7s', sprintf('%-.4f', round($result_->processingTime, 5))); $this->m_cursor += $result_->count(Test_Result::TYPE_ASSERTION); $this->append(str_repeat(' ', $this->width - ($this->m_cursor + 22))); $this->append($consumption); if ($result_->hasState(Test_Result::STATE_SKIPPED)) { $this->append(' SKIP'); } else { if ($result_->hasState(Test_Result::STATE_FAILED)) { $this->append(' FAIL'); } else { $this->append(' OK'); } } $this->appendLine(); if (trim($result_->output)) { $output = wordwrap($result_->output, $this->width - 8, Io::LINE_SEPARATOR_DEFAULT, true); $lines = explode(Io::LINE_SEPARATOR_DEFAULT, $output); $this->appendLine(); $this->appendLine(' + OUTPUT'); foreach ($lines as $line) { if (trim($line)) { $this->appendLine(" {$line}"); } } } if ($result_->exception) { $this->appendLine(); $this->appendLine(' + EXCEPTION'); $title = str_split(sprintf('%1$s in %2$s:', $result_->exception->type, implode(':', array($result_->exception->file, $result_->exception->line))), $this->width - 9); $this->appendLine(' ' . array_shift($title)); foreach ($title as $line) { $this->appendLine(" {$line}"); } $message = str_split($result_->exception->message, $this->width - 9); $this->appendLine(' ' . array_shift($message)); foreach ($message as $line) { $this->appendLine(" {$line}"); } $trace = explode(Io::LINE_SEPARATOR_DEFAULT, $result_->exception->traceAsString); foreach ($trace as $chunk) { foreach (str_split($chunk, $this->width - 9) as $line) { $this->appendLine(" {$line}"); } } } if ($result_->count(Test_Result::TYPE_ASSERTION, Test_Result::STATE_FAILED)) { $this->appendLine(); $this->appendLine(' + FAILED ASSERTIONS'); foreach ($result_->collect(Test_Result::TYPE_ASSERTION, Test_Result::STATE_FAILED) as $assertion) { $assertionOutput = str_split($assertion->output, $this->width - 9); $this->appendLine(' ' . array_shift($assertionOutput)); foreach ($assertionOutput as $line) { $this->appendLine(" {$line}"); } } } if (count($result_->profilerSplitTimeTable)) { $this->appendLine(); $this->appendLine(' + TIMES'); foreach ($result_->profilerSplitTimeTable as $entry) { $splitTimeTableEntryOutput = str_split(end($entry), $this->width - 9); $this->appendLine(sprintf(' %07.7s %s', sprintf('%-.4f', round(reset($entry), 5)), array_shift($splitTimeTableEntryOutput))); foreach ($splitTimeTableEntryOutput as $line) { $this->appendLine(" {$line}"); } } } }