UtilsTest::testMerge()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
dl 0
loc 14
rs 9.9332
c 1
b 0
f 0
cc 1
nc 1
nop 0
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\Utils;
10
use PHPUnit\Framework\TestCase;
11
12
class UtilsTest extends TestCase
13
{
14
	public function testInvert()
15
	{
16
		$closure = \ValidationClosures\Types::string();
17
18
		// This should become equal to Types::notString()
19
		$invertedClosure = Utils::invert($closure);
20
21
		self::assertTrue($invertedClosure(10));
22
		self::assertFalse($invertedClosure('test'));
23
		self::assertTrue($invertedClosure(1.2));
24
		self::assertTrue($invertedClosure(false));
25
		self::assertTrue($invertedClosure([ ]));
26
		self::assertFalse($invertedClosure('in_array'));
27
		self::assertTrue($invertedClosure(new stdClass()));
28
	}
29
30
	public function testMerge()
31
	{
32
		$closure1 = \ValidationClosures\Types::int();
33
		$closure2 = \ValidationClosures\Ranges::stringWithLengthBetween(2, 10);
34
35
		$mergedClosure = Utils::merge($closure1, $closure2);
36
37
		self::assertTrue($mergedClosure(10));
38
		self::assertTrue($mergedClosure('test'));
39
		self::assertFalse($mergedClosure(1.2));
40
		self::assertFalse($mergedClosure(false));
41
		self::assertFalse($mergedClosure([ ]));
42
		self::assertTrue($mergedClosure('in_array'));
43
		self::assertFalse($mergedClosure(new stdClass()));
44
	}
45
46
	public function testBoth()
47
	{
48
		$closure1 = \ValidationClosures\Ranges::stringOneOf('test', 'testing', 'te');
49
		$closure2 = \ValidationClosures\Ranges::stringWithLengthBetween(2, 10);
50
51
		$mergedClosure = Utils::both($closure1, $closure2);
52
53
		self::assertFalse($mergedClosure(10));
54
		self::assertTrue($mergedClosure('test'));
55
		self::assertFalse($mergedClosure(1.2));
56
		self::assertFalse($mergedClosure(false));
57
		self::assertFalse($mergedClosure([ ]));
58
		self::assertFalse($mergedClosure('in_array'));
59
		self::assertFalse($mergedClosure(new stdClass()));
60
	}
61
62
	public function testValidateArray()
63
	{
64
		$array = ['string', 'another string', 'a third string'];
65
		self::assertTrue(Utils::validateArray(\ValidationClosures\Types::string(), $array));
66
67
		$array = ['string', 'another string', 'a third string', 10];
68
		self::assertFalse(Utils::validateArray(\ValidationClosures\Types::string(), $array));
69
	}
70
71
    public function testCreateClosureFromCallable()
72
    {
73
        $expected = function ($value)
74
        {
75
            return is_string($value);
76
        };
77
        
78
        $actual = Utils::createClosureFromCallable('is_string');
79
        
80
        self::assertEquals($expected, $actual);
81
	}
82
}
83