Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace SebastianBergmann\CodeCoverage\Report\Xml; Chris@14: Chris@14: use SebastianBergmann\CodeCoverage\Util; Chris@14: Chris@14: class Totals Chris@14: { Chris@14: /** Chris@14: * @var \DOMNode Chris@14: */ Chris@14: private $container; Chris@14: Chris@14: /** Chris@14: * @var \DOMElement Chris@14: */ Chris@14: private $linesNode; Chris@14: Chris@14: /** Chris@14: * @var \DOMElement Chris@14: */ Chris@14: private $methodsNode; Chris@14: Chris@14: /** Chris@14: * @var \DOMElement Chris@14: */ Chris@14: private $functionsNode; Chris@14: Chris@14: /** Chris@14: * @var \DOMElement Chris@14: */ Chris@14: private $classesNode; Chris@14: Chris@14: /** Chris@14: * @var \DOMElement Chris@14: */ Chris@14: private $traitsNode; Chris@14: Chris@14: public function __construct(\DOMElement $container) Chris@14: { Chris@14: $this->container = $container; Chris@14: $dom = $container->ownerDocument; Chris@14: Chris@14: $this->linesNode = $dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'lines' Chris@14: ); Chris@14: Chris@14: $this->methodsNode = $dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'methods' Chris@14: ); Chris@14: Chris@14: $this->functionsNode = $dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'functions' Chris@14: ); Chris@14: Chris@14: $this->classesNode = $dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'classes' Chris@14: ); Chris@14: Chris@14: $this->traitsNode = $dom->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'traits' Chris@14: ); Chris@14: Chris@14: $container->appendChild($this->linesNode); Chris@14: $container->appendChild($this->methodsNode); Chris@14: $container->appendChild($this->functionsNode); Chris@14: $container->appendChild($this->classesNode); Chris@14: $container->appendChild($this->traitsNode); Chris@14: } Chris@14: Chris@14: public function getContainer() Chris@14: { Chris@14: return $this->container; Chris@14: } Chris@14: Chris@14: public function setNumLines($loc, $cloc, $ncloc, $executable, $executed) Chris@14: { Chris@14: $this->linesNode->setAttribute('total', $loc); Chris@14: $this->linesNode->setAttribute('comments', $cloc); Chris@14: $this->linesNode->setAttribute('code', $ncloc); Chris@14: $this->linesNode->setAttribute('executable', $executable); Chris@14: $this->linesNode->setAttribute('executed', $executed); Chris@14: $this->linesNode->setAttribute( Chris@14: 'percent', Chris@14: $executable === 0 ? 0 : \sprintf('%01.2F', Util::percent($executed, $executable, false)) Chris@14: ); Chris@14: } Chris@14: Chris@14: public function setNumClasses($count, $tested) Chris@14: { Chris@14: $this->classesNode->setAttribute('count', $count); Chris@14: $this->classesNode->setAttribute('tested', $tested); Chris@14: $this->classesNode->setAttribute( Chris@14: 'percent', Chris@14: $count === 0 ? 0 : \sprintf('%01.2F', Util::percent($tested, $count, false)) Chris@14: ); Chris@14: } Chris@14: Chris@14: public function setNumTraits($count, $tested) Chris@14: { Chris@14: $this->traitsNode->setAttribute('count', $count); Chris@14: $this->traitsNode->setAttribute('tested', $tested); Chris@14: $this->traitsNode->setAttribute( Chris@14: 'percent', Chris@14: $count === 0 ? 0 : \sprintf('%01.2F', Util::percent($tested, $count, false)) Chris@14: ); Chris@14: } Chris@14: Chris@14: public function setNumMethods($count, $tested) Chris@14: { Chris@14: $this->methodsNode->setAttribute('count', $count); Chris@14: $this->methodsNode->setAttribute('tested', $tested); Chris@14: $this->methodsNode->setAttribute( Chris@14: 'percent', Chris@14: $count === 0 ? 0 : \sprintf('%01.2F', Util::percent($tested, $count, false)) Chris@14: ); Chris@14: } Chris@14: Chris@14: public function setNumFunctions($count, $tested) Chris@14: { Chris@14: $this->functionsNode->setAttribute('count', $count); Chris@14: $this->functionsNode->setAttribute('tested', $tested); Chris@14: $this->functionsNode->setAttribute( Chris@14: 'percent', Chris@14: $count === 0 ? 0 : \sprintf('%01.2F', Util::percent($tested, $count, false)) Chris@14: ); Chris@14: } Chris@14: }