RangesTest   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 245
Duplicated Lines 0 %

Importance

Changes 9
Bugs 1 Features 0
Metric Value
wmc 10
eloc 187
dl 0
loc 245
rs 10
c 9
b 1
f 0

10 Methods

Rating   Name   Duplication   Size   Complexity  
A testStringWithLengthBetween_InvalidParams() 0 7 1
A testTypeEnum() 0 11 1
A testIntBetweenExclusive() 0 34 1
A testStringWithLengthBetween() 0 31 1
A testFloatBetweenExclusive() 0 41 1
A testFloatBetween() 0 37 1
A testIntBetween() 0 34 1
A testEnum() 0 11 1
A testStringOneOf_InvalidParams() 0 4 1
A testStringOneOf() 0 15 1
1
<?php
2
/**
3
 * Copyright 2017 NanoSector
4
 *
5
 * You should have received a copy of the MIT license with the project.
6
 * See the LICENSE file for more information.
7
 */
8
9
use ValidationClosures\Ranges;
10
use PHPUnit\Framework\TestCase;
11
12
class RangesTest extends TestCase
13
{
14
	public function testStringWithLengthBetween()
15
	{
16
		$closure = Ranges::stringWithLengthBetween(0, 10);
17
		self::assertFalse($closure(5));
18
		self::assertTrue($closure('test'));
19
		self::assertFalse($closure(1.2));
20
		self::assertFalse($closure(false));
21
		self::assertFalse($closure([ ]));
22
		self::assertTrue($closure('in_array'));
23
		self::assertFalse($closure(new stdClass()));
24
25
		$closure = Ranges::stringWithLengthBetween(0, 1);
26
		self::assertTrue($closure(''));
27
		self::assertTrue($closure('a'));
28
		self::assertFalse($closure('aaa'));
29
		self::assertFalse($closure('aaaaa'));
30
31
		$closure = Ranges::stringWithLengthBetween(0, 5);
32
		self::assertFalse($closure(5));
33
		self::assertTrue($closure(''));
34
		self::assertTrue($closure('a'));
35
		self::assertTrue($closure('aaa'));
36
		self::assertTrue($closure('aaaaa'));
37
38
		$closure = Ranges::stringWithLengthBetween(2, 4);
39
		self::assertFalse($closure(5));
40
		self::assertFalse($closure(''));
41
		self::assertFalse($closure('a'));
42
		self::assertTrue($closure('aa'));
43
		self::assertTrue($closure('aaa'));
44
		self::assertFalse($closure('aaaaa'));
45
	}
46
47
	public function testStringWithLengthBetween_InvalidParams()
48
	{
49
		$this->expectException(InvalidArgumentException::class);
50
		Ranges::stringWithLengthBetween(-1, 0);
51
52
		$this->expectException(InvalidArgumentException::class);
53
		Ranges::stringWithLengthBetween(0, 0);
54
	}
55
56
	public function testIntBetween()
57
	{
58
		$closure = Ranges::intBetween(0, 3);
59
		self::assertTrue($closure(2));
60
		self::assertFalse($closure('test'));
61
		self::assertFalse($closure(1.2));
62
		self::assertFalse($closure(false));
63
		self::assertFalse($closure([ ]));
64
		self::assertFalse($closure('in_array'));
65
		self::assertFalse($closure(new stdClass()));
66
67
		self::assertFalse($closure(-3));
68
		self::assertFalse($closure(-2));
69
		self::assertFalse($closure(-1));
70
		self::assertTrue($closure(0));
71
		self::assertTrue($closure(1));
72
		self::assertTrue($closure(2));
73
		self::assertTrue($closure(3));
74
		self::assertFalse($closure(4));
75
		self::assertFalse($closure(5));
76
77
		$closure = Ranges::intBetween(-2, 2);
78
		self::assertFalse($closure(-3));
79
		self::assertTrue($closure(-2));
80
		self::assertTrue($closure(-1));
81
		self::assertTrue($closure(0));
82
		self::assertTrue($closure(1));
83
		self::assertTrue($closure(2));
84
		self::assertFalse($closure(3));
85
		self::assertFalse($closure(4));
86
		self::assertFalse($closure(5));
87
		
88
		self::expectException(\InvalidArgumentException::class);
0 ignored issues
show
Bug Best Practice introduced by
The method PHPUnit\Framework\TestCase::expectException() is not static, but was called statically. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

88
		self::/** @scrutinizer ignore-call */ 
89
        expectException(\InvalidArgumentException::class);
Loading history...
89
		Ranges::intBetween(5, 3);
90
	}
91
92
    public function testIntBetweenExclusive()
93
    {
94
        $closure = Ranges::intBetweenExclusive(0, 3);
95
        self::assertTrue($closure(2));
96
        self::assertFalse($closure('test'));
97
        self::assertFalse($closure(1.2));
98
        self::assertFalse($closure(false));
99
        self::assertFalse($closure([ ]));
100
        self::assertFalse($closure('in_array'));
101
        self::assertFalse($closure(new stdClass()));
102
103
        self::assertFalse($closure(-3));
104
        self::assertFalse($closure(-2));
105
        self::assertFalse($closure(-1));
106
        self::assertFalse($closure(0));
107
        self::assertTrue($closure(1));
108
        self::assertTrue($closure(2));
109
        self::assertFalse($closure(3));
110
        self::assertFalse($closure(4));
111
        self::assertFalse($closure(5));
112
113
        $closure = Ranges::intBetweenExclusive(-2, 2);
114
        self::assertFalse($closure(-3));
115
        self::assertFalse($closure(-2));
116
        self::assertTrue($closure(-1));
117
        self::assertTrue($closure(0));
118
        self::assertTrue($closure(1));
119
        self::assertFalse($closure(2));
120
        self::assertFalse($closure(3));
121
        self::assertFalse($closure(4));
122
        self::assertFalse($closure(5));
123
124
        self::expectException(\InvalidArgumentException::class);
0 ignored issues
show
Bug Best Practice introduced by
The method PHPUnit\Framework\TestCase::expectException() is not static, but was called statically. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

124
        self::/** @scrutinizer ignore-call */ 
125
              expectException(\InvalidArgumentException::class);
Loading history...
125
        Ranges::intBetweenExclusive(5, 3);
126
    }
127
128
	public function testFloatBetween()
129
	{
130
		$closure = Ranges::floatBetween(0.0, 3.0);
131
		self::assertFalse($closure(2));
132
		self::assertFalse($closure('test'));
133
		self::assertTrue($closure(1.2));
134
		self::assertFalse($closure(false));
135
		self::assertFalse($closure([ ]));
136
		self::assertFalse($closure('in_array'));
137
		self::assertFalse($closure(new stdClass()));
138
139
		self::assertFalse($closure(-3.0));
140
		self::assertFalse($closure(-2.0));
141
		self::assertFalse($closure(-1.0));
142
		self::assertTrue($closure(0.0));
143
		self::assertTrue($closure(1.0));
144
		self::assertTrue($closure(2.0));
145
		self::assertTrue($closure(3.0));
146
		self::assertFalse($closure(3.1));
147
		self::assertFalse($closure(4.0));
148
		self::assertFalse($closure(5.0));
149
150
		$closure = Ranges::floatBetween(-2.0, 2.0);
151
		self::assertFalse($closure(-3.0));
152
		self::assertFalse($closure(-2.1));
153
		self::assertTrue($closure(-2.0));
154
		self::assertTrue($closure(-1.0));
155
		self::assertTrue($closure(0.0));
156
		self::assertTrue($closure(1.0));
157
		self::assertTrue($closure(2.0));
158
		self::assertFalse($closure(2.1));
159
		self::assertFalse($closure(3.0));
160
		self::assertFalse($closure(4.0));
161
		self::assertFalse($closure(5.0));
162
163
        self::expectException(\InvalidArgumentException::class);
0 ignored issues
show
Bug Best Practice introduced by
The method PHPUnit\Framework\TestCase::expectException() is not static, but was called statically. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

163
        self::/** @scrutinizer ignore-call */ 
164
              expectException(\InvalidArgumentException::class);
Loading history...
164
        Ranges::floatBetween(5.0, 3.0);
165
	}
166
167
    public function testFloatBetweenExclusive()
168
    {
169
        $closure = Ranges::floatBetweenExclusive(0.0, 3.0);
170
        self::assertFalse($closure(2));
171
        self::assertFalse($closure('test'));
172
        self::assertTrue($closure(1.2));
173
        self::assertFalse($closure(false));
174
        self::assertFalse($closure([ ]));
175
        self::assertFalse($closure('in_array'));
176
        self::assertFalse($closure(new stdClass()));
177
178
        self::assertFalse($closure(-3.0));
179
        self::assertFalse($closure(-2.0));
180
        self::assertFalse($closure(-1.0));
181
        self::assertFalse($closure(0.0));
182
        self::assertTrue($closure(0.1));
183
        self::assertTrue($closure(1.0));
184
        self::assertTrue($closure(2.0));
185
        self::assertTrue($closure(2.9));
186
        self::assertFalse($closure(3.0));
187
        self::assertFalse($closure(3.1));
188
        self::assertFalse($closure(4.0));
189
        self::assertFalse($closure(5.0));
190
191
        $closure = Ranges::floatBetweenExclusive(-2.0, 2.0);
192
        self::assertFalse($closure(-3.0));
193
        self::assertFalse($closure(-2.1));
194
        self::assertFalse($closure(-2.0));
195
        self::assertTrue($closure(-1.9));
196
        self::assertTrue($closure(-1.0));
197
        self::assertTrue($closure(0.0));
198
        self::assertTrue($closure(1.0));
199
        self::assertTrue($closure(1.9));
200
        self::assertFalse($closure(2.0));
201
        self::assertFalse($closure(2.1));
202
        self::assertFalse($closure(3.0));
203
        self::assertFalse($closure(4.0));
204
        self::assertFalse($closure(5.0));
205
206
        self::expectException(\InvalidArgumentException::class);
0 ignored issues
show
Bug Best Practice introduced by
The method PHPUnit\Framework\TestCase::expectException() is not static, but was called statically. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

206
        self::/** @scrutinizer ignore-call */ 
207
              expectException(\InvalidArgumentException::class);
Loading history...
207
        Ranges::floatBetweenExclusive(5.0, 3.0);
208
    }
209
210
	public function testEnum()
211
	{
212
		$closure = Ranges::enum(10, 'test', false);
213
214
		self::assertTrue($closure(10));
215
		self::assertTrue($closure('test'));
216
		self::assertFalse($closure(1.2));
217
		self::assertTrue($closure(false));
218
		self::assertFalse($closure([ ]));
219
		self::assertFalse($closure('in_array'));
220
		self::assertFalse($closure(new stdClass()));
221
	}
222
223
	public function testTypeEnum()
224
	{
225
		$closure = Ranges::typeEnum('string', 'double');
226
227
		self::assertFalse($closure(10));
228
		self::assertTrue($closure('test'));
229
		self::assertTrue($closure(1.2));
230
		self::assertFalse($closure(false));
231
		self::assertFalse($closure([ ]));
232
		self::assertTrue($closure('in_array'));
233
		self::assertFalse($closure(new stdClass()));
234
	}
235
236
	public function testStringOneOf()
237
	{
238
		$closure = Ranges::stringOneOf('test', 'ing');
239
		self::assertFalse($closure(10));
240
		self::assertTrue($closure('test'));
241
		self::assertFalse($closure(1.2));
242
		self::assertFalse($closure(false));
243
		self::assertFalse($closure([]));
244
		self::assertFalse($closure('in_array'));
245
		self::assertFalse($closure(new stdClass()));
246
247
		self::assertTrue($closure('test'));
248
		self::assertTrue($closure('ing'));
249
		self::assertFalse($closure('something else'));
250
		self::assertFalse($closure(' '));
251
	}
252
253
	public function testStringOneOf_InvalidParams()
254
	{
255
		self::expectException(\InvalidArgumentException::class);
0 ignored issues
show
Bug Best Practice introduced by
The method PHPUnit\Framework\TestCase::expectException() is not static, but was called statically. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

255
		self::/** @scrutinizer ignore-call */ 
256
        expectException(\InvalidArgumentException::class);
Loading history...
256
		Ranges::stringOneOf(10, 'test');
257
	}
258
}
259