1<?php
2/*
3 * This file is part of the PHP_CodeCoverage package.
4 *
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11/**
12 * @since Class available since Release 2.0.0
13 */
14class PHP_CodeCoverage_Report_XML_Project extends PHP_CodeCoverage_Report_XML_Node
15{
16    public function __construct($name)
17    {
18        $this->init();
19        $this->setProjectName($name);
20    }
21
22    private function init()
23    {
24        $dom = new DOMDocument;
25        $dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="http://schema.phpunit.de/coverage/1.0"><project/></phpunit>');
26
27        $this->setContextNode(
28            $dom->getElementsByTagNameNS(
29                'http://schema.phpunit.de/coverage/1.0',
30                'project'
31            )->item(0)
32        );
33    }
34
35    private function setProjectName($name)
36    {
37        $this->getContextNode()->setAttribute('name', $name);
38    }
39
40    public function getTests()
41    {
42        $testsNode = $this->getContextNode()->getElementsByTagNameNS(
43            'http://schema.phpunit.de/coverage/1.0',
44            'tests'
45        )->item(0);
46
47        if (!$testsNode) {
48            $testsNode = $this->getContextNode()->appendChild(
49                $this->getDom()->createElementNS(
50                    'http://schema.phpunit.de/coverage/1.0',
51                    'tests'
52                )
53            );
54        }
55
56        return new PHP_CodeCoverage_Report_XML_Tests($testsNode);
57    }
58
59    public function asDom()
60    {
61        return $this->getDom();
62    }
63}
64