Passed
Push — main ( cd0ae8...8853f2 )
by Siad
05:40
created

StringHelperTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 124
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 92
c 1
b 0
f 0
dl 0
loc 124
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testBooleanValue() 0 5 1
A testIsBoolean() 0 5 1
A booleanValueProvider() 0 46 1
A isBooleanProvider() 0 47 1
1
<?php
2
3
namespace Phing\Test\Util;
4
5
use Phing\Util\StringHelper;
6
use PHPUnit\Framework\TestCase;
7
use stdClass;
8
9
/**
10
 * @internal
11
 */
12
class StringHelperTest extends TestCase
13
{
14
    /**
15
     * @dataProvider booleanValueProvider
16
     * @covers       \Phing\Util\StringHelper::booleanValue
17
     *
18
     * @param mixed $candidate
19
     */
20
    public function testBooleanValue($candidate, $expected)
21
    {
22
        $result = StringHelper::booleanValue($candidate);
23
        $this->assertIsBool($result);
24
        $this->assertSame($expected, $result);
25
    }
26
27
    public function booleanValueProvider(): array
28
    {
29
        return [
30
            // True values
31
            ['on', true],
32
            ['ON', true],
33
            ['On', true],
34
            ['  on  ', true],
35
            ['true', true],
36
            ['True', true],
37
            ['TrUe', true],
38
            ['TRUE', true],
39
            ['    true', true],
40
            ['yes', true],
41
            ['Yes', true],
42
            ['YeS', true],
43
            ['YES', true],
44
            [' YES    ', true],
45
            ['1', true],
46
            [' 1   ', true],
47
            [1, true],
48
            [1.0, true],
49
            [true, true],
50
            // False values
51
            ['Off', false],
52
            ['   Off ', false],
53
            ['false', false],
54
            ['False', false],
55
            [' False ', false],
56
            ['no', false],
57
            ['NO', false],
58
            ['  NO   ', false],
59
            ['foo', false],
60
            ['', false],
61
            ['t', false],
62
            ['f', false],
63
            ['    ', false],
64
            [[], false],
65
            [['foo', 'bar'], false],
66
            [false, false],
67
            ['0', false],
68
            [0, false],
69
            [1.1, false],
70
            [123, false],
71
            [new stdClass(), false],
72
            [null, false],
73
        ];
74
    }
75
76
    /**
77
     * @dataProvider isBooleanProvider
78
     * @covers       \Phing\Util\StringHelper::isBoolean
79
     * @param string $candidate
80
     * @param bool   $expected
81
     */
82
    public function testIsBoolean($candidate, $expected)
83
    {
84
        $result = StringHelper::isBoolean($candidate);
85
        $this->assertIsBool($result);
86
        $this->assertSame($expected, $result);
87
    }
88
89
    public function isBooleanProvider()
90
    {
91
        return [
92
            // Boolean values
93
            ['on', true],
94
            ['ON', true],
95
            ['On', true],
96
            ['  on  ', true],
97
            ['true', true],
98
            ['True', true],
99
            ['TrUe', true],
100
            ['TRUE', true],
101
            ['    true', true],
102
            ['yes', true],
103
            ['Yes', true],
104
            ['YeS', true],
105
            ['YES', true],
106
            [' YES    ', true],
107
            ['1', true],
108
            [' 1   ', true],
109
            ['Off', true],
110
            ['   Off ', true],
111
            ['false', true],
112
            ['False', true],
113
            [' False ', true],
114
            ['no', true],
115
            ['NO', true],
116
            ['  NO   ', true],
117
            ['0', true],
118
            [' 0 ', true],
119
            [true, true],
120
            [false, true],
121
            // Not boolean values
122
            ['    ', false],
123
            [1.0, false],
124
            [0, false],
125
            [1, false],
126
            ['foo', false],
127
            ['', false],
128
            ['t', false],
129
            ['f', false],
130
            [[], false],
131
            [['foo', 'bar'], false],
132
            [1.1, false],
133
            [123, false],
134
            [new stdClass(), false],
135
            [null, false],
136
        ];
137
    }
138
}
139