File: //opt/cloudlinux/alt-php54/root/usr/share/pear/PHP/CodeCoverage/Report/HTML/Renderer.php
<?php
/**
* PHP_CodeCoverage
*
* Copyright (c) 2009-2014, Sebastian Bergmann <sebastian@phpunit.de>.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* * Neither the name of Sebastian Bergmann nor the names of his
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @category PHP
* @package CodeCoverage
* @author Sebastian Bergmann <sebastian@phpunit.de>
* @copyright 2009-2014 Sebastian Bergmann <sebastian@phpunit.de>
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
* @link http://github.com/sebastianbergmann/php-code-coverage
* @since File available since Release 1.1.0
*/
/**
* Base class for PHP_CodeCoverage_Report_Node renderers.
*
* @category PHP
* @package CodeCoverage
* @author Sebastian Bergmann <sebastian@phpunit.de>
* @copyright 2009-2014 Sebastian Bergmann <sebastian@phpunit.de>
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
* @link http://github.com/sebastianbergmann/php-code-coverage
* @since Class available since Release 1.1.0
*/
abstract class PHP_CodeCoverage_Report_HTML_Renderer
{
/**
* @var string
*/
protected $templatePath;
/**
* @var string
*/
protected $charset;
/**
* @var string
*/
protected $generator;
/**
* @var string
*/
protected $date;
/**
* @var integer
*/
protected $lowUpperBound;
/**
* @var integer
*/
protected $highLowerBound;
/**
* Constructor.
*
* @param string $templatePath
* @param string $charset
* @param string $generator
* @param string $date
* @param integer $lowUpperBound
* @param integer $highLowerBound
*/
public function __construct($templatePath, $charset, $generator, $date, $lowUpperBound, $highLowerBound)
{
$this->templatePath = $templatePath;
$this->charset = $charset;
$this->generator = $generator;
$this->date = $date;
$this->lowUpperBound = $lowUpperBound;
$this->highLowerBound = $highLowerBound;
}
/**
* @param Text_Template $template
* @param array $data
* @return string
*/
protected function renderItemTemplate(Text_Template $template, array $data)
{
$numSeperator = ' / ';
$classesBar = ' ';
$classesLevel = 'None';
$classesNumber = ' ';
if (isset($data['numClasses']) && $data['numClasses'] > 0) {
$classesLevel = $this->getColorLevel($data['testedClassesPercent']);
$classesNumber = $data['numTestedClasses'] . $numSeperator .
$data['numClasses'];
$classesBar = $this->getCoverageBar(
$data['testedClassesPercent']
);
}
$methodsBar = ' ';
$methodsLevel = 'None';
$methodsNumber = ' ';
if ($data['numMethods'] > 0) {
$methodsLevel = $this->getColorLevel($data['testedMethodsPercent']);
$methodsNumber = $data['numTestedMethods'] . $numSeperator .
$data['numMethods'];
$methodsBar = $this->getCoverageBar(
$data['testedMethodsPercent']
);
}
$linesBar = ' ';
$linesLevel = 'None';
$linesNumber = ' ';
if ($data['numExecutableLines'] > 0) {
$linesLevel = $this->getColorLevel($data['linesExecutedPercent']);
$linesNumber = $data['numExecutedLines'] . $numSeperator .
$data['numExecutableLines'];
$linesBar = $this->getCoverageBar(
$data['linesExecutedPercent']
);
}
$template->setVar(
array(
'icon' => isset($data['icon']) ? $data['icon'] : '',
'crap' => isset($data['crap']) ? $data['crap'] : '',
'name' => $data['name'],
'lines_bar' => $linesBar,
'lines_executed_percent' => $data['linesExecutedPercentAsString'],
'lines_level' => $linesLevel,
'lines_number' => $linesNumber,
'methods_bar' => $methodsBar,
'methods_tested_percent' => $data['testedMethodsPercentAsString'],
'methods_level' => $methodsLevel,
'methods_number' => $methodsNumber,
'classes_bar' => $classesBar,
'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '',
'classes_level' => $classesLevel,
'classes_number' => $classesNumber
)
);
return $template->render();
}
/**
* @param Text_Template $template
* @param PHP_CodeCoverage_Report_Node $node
*/
protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeCoverage_Report_Node $node)
{
$template->setVar(
array(
'id' => $node->getId(),
'full_path' => $node->getPath(),
'breadcrumbs' => $this->getBreadcrumbs($node),
'charset' => $this->charset,
'date' => $this->date,
'version' => PHP_CodeCoverage_Version::id(),
'php_version' => PHP_VERSION,
'generator' => $this->generator,
'low_upper_bound' => $this->lowUpperBound,
'high_lower_bound' => $this->highLowerBound
)
);
}
protected function getBreadcrumbs(PHP_CodeCoverage_Report_Node $node)
{
$breadcrumbs = '';
$path = $node->getPathAsArray();
foreach ($path as $step) {
if ($step !== $node) {
$breadcrumbs .= $this->getInactiveBreadcrumb($step);
} else {
$breadcrumbs .= $this->getActiveBreadcrumb(
$step,
$node instanceof PHP_CodeCoverage_Report_Node_Directory
);
}
}
return $breadcrumbs;
}
protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node, $isDirectory)
{
$buffer = sprintf(
' <li class="active">%s</li>' . "\n",
$node->getName()
);
if ($isDirectory) {
$buffer .= sprintf(
' <li>(<a href="%s.dashboard.html">Dashboard</a>)</li>' . "\n",
$node->getId()
);
}
return $buffer;
}
protected function getInactiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
{
return sprintf(
' <li><a href="%s.html">%s</a> <span class="divider">/</span></li>' . "\n",
$node->getId(),
$node->getName()
);
}
protected function getCoverageBar($percent)
{
$level = $this->getColorLevel($percent);
$template = new Text_Template(
$this->templatePath . 'coverage_bar.html', '{{', '}}'
);
$template->setVar(array('level' => $level, 'percent' => sprintf("%.2F", $percent)));
return $template->render();
}
/**
* @param integer $percent
* @return string
*/
protected function getColorLevel($percent)
{
if ($percent < $this->lowUpperBound) {
return 'danger';
}
else if ($percent >= $this->lowUpperBound &&
$percent < $this->highLowerBound) {
return 'warning';
}
else {
return 'success';
}
}
}