TestSuiteFactory   A
last analyzed

Complexity

Total Complexity 16

Size/Duplication

Total Lines 121
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 121
rs 10
c 0
b 0
f 0
wmc 16

9 Methods

Rating   Name   Duplication   Size   Complexity  
A addTestResults() 0 3 1
A addTestResult() 0 3 1
A __construct() 0 5 1
A setConfiguration() 0 3 1
A getTestResults() 0 3 1
A getConfiguration() 0 3 1
A initialize() 0 4 2
A getArrayizeTestResults() 0 7 2
A calculateState() 0 18 6
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\Module\monitor;
6
7
use function array_merge;
8
use function is_null;
9
10
abstract class TestSuiteFactory extends TestCaseFactory
11
{
12
    /** @var \SimpleSAML\Module\monitor\TestConfiguration */
13
    private TestConfiguration $configuration;
14
15
    /** @var array An associative array of name => TestResult pairs */
16
    private array $testResults = [];
17
18
19
    /**
20
     * @param \SimpleSAML\Module\monitor\TestConfiguration $configuration
21
     * @param \SimpleSAML\Module\monitor\TestData|null $testData
22
     */
23
    public function __construct(TestConfiguration $configuration, TestData $testData = null)
24
    {
25
        $this->setConfiguration($configuration);
26
27
        parent::__construct($testData);
28
    }
29
30
31
    /**
32
     * @param \SimpleSAML\Module\monitor\TestData|null $testData
33
     *
34
     * @return void
35
     */
36
    protected function initialize(TestData $testData = null): void
37
    {
38
        if (!is_null($testData)) {
39
            parent::initialize($testData);
40
        }
41
    }
42
43
44
    /**
45
     * @param \SimpleSAML\Module\monitor\TestConfiguration $configuration
46
     *
47
     * @return void
48
     */
49
    protected function setConfiguration(TestConfiguration $configuration): void
50
    {
51
        $this->configuration = $configuration;
52
    }
53
54
55
    /**
56
     * @return \SimpleSAML\Module\monitor\TestConfiguration
57
     */
58
    public function getConfiguration(): TestConfiguration
59
    {
60
        return $this->configuration;
61
    }
62
63
64
    /**
65
     * @param \SimpleSAML\Module\monitor\TestResult $testResult
66
     *
67
     * @return void
68
     */
69
    protected function addTestResult(TestResult $testResult): void
70
    {
71
        $this->testResults[] = $testResult;
72
    }
73
74
75
    /**
76
     * @param array $testResults
77
     *
78
     * @return void
79
     */
80
    protected function addTestResults(array $testResults): void
81
    {
82
        $this->testResults = array_merge($this->testResults, $testResults);
83
    }
84
85
86
    /**
87
     * @return array
88
     */
89
    public function getTestResults(): array
90
    {
91
        return $this->testResults;
92
    }
93
94
95
    /**
96
     * @param bool $includeOutput
97
     *
98
     * @return array
99
     */
100
    public function getArrayizeTestResults(bool $includeOutput = false): array
101
    {
102
        $result = [];
103
        foreach ($this->testResults as $testResult) {
104
            $result[] = $testResult->arrayizeTestResult($includeOutput);
105
        }
106
        return $result;
107
    }
108
109
110
    /**
111
     * @return int
112
     */
113
    public function calculateState(): int
114
    {
115
        $testResults = $this->getTestResults();
116
117
        if (!empty($testResults)) {
118
            $state = State::OK;
119
            foreach ($testResults as $testResult) {
120
                $testState = $testResult->getState();
121
                if ($testState !== State::NOSTATE && $testState !== State::SKIPPED) {
122
                    if ($testState < $state) {
123
                        $state = $testState;
124
                    }
125
                }
126
            }
127
        } else {
128
            $state = State::NOSTATE;
129
        }
130
        return $state;
131
    }
132
}
133