UsageValidatorTest::testTrackVariablesParsing()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 7
rs 9.4285
cc 1
eloc 5
nc 1
nop 2
1
<?php
2
3
namespace Asparagus\Tests;
4
5
use Asparagus\UsageValidator;
6
7
/**
8
 * @covers Asparagus\UsageValidator
9
 *
10
 * @license GNU GPL v2+
11
 * @author Bene* < [email protected] >
12
 */
13
class UsageValidatorTest extends \PHPUnit_Framework_TestCase {
14
15
	/**
16
	 * @dataProvider provideDataOk
17
	 */
18
	public function testValidate_variablesOk( array $defined, array $used ) {
19
		$usageValidator = new UsageValidator();
20
		$usageValidator->trackDefinedVariables( $defined );
21
		$usageValidator->trackUsedVariables( $used );
22
		$usageValidator->validate();
23
24
		$this->assertTrue( true );
25
	}
26
27
	/**
28
	 * @dataProvider provideDataInvalid
29
	 */
30
	public function testValidate_variablesInvalid( array $defined, array $used ) {
31
		$usageValidator = new UsageValidator();
32
		$usageValidator->trackDefinedVariables( $defined );
33
		$usageValidator->trackUsedVariables( $used );
34
		$this->setExpectedException( 'RangeException' );
35
36
		$usageValidator->validate();
37
	}
38
39
	/**
40
	 * @dataProvider provideDataOk
41
	 */
42
	public function testValidate_prefixesOk( array $defined, array $used ) {
43
		$usageValidator = new UsageValidator();
44
		$usageValidator->trackDefinedPrefixes( $defined );
45
		$usageValidator->trackUsedPrefixes( $used );
46
		$usageValidator->validate();
47
48
		$this->assertTrue( true );
49
	}
50
51
	/**
52
	 * @dataProvider provideDataInvalid
53
	 */
54
	public function testValidate_prefixesInvalid( array $defined, array $used ) {
55
		$usageValidator = new UsageValidator();
56
		$usageValidator->trackDefinedPrefixes( $defined );
57
		$usageValidator->trackUsedPrefixes( $used );
58
		$this->setExpectedException( 'RangeException' );
59
60
		$usageValidator->validate();
61
	}
62
63
	public function provideDataOk() {
64
		return array(
65
			array( array(), array() ),
66
			array( array( 'foo', 'bar' ), array() ),
67
			array( array( 'foo', 'bar' ), array( 'foo' ) ),
68
			array( array( 'foo', 'bar' ), array( 'foo', 'bar' ) ),
69
		);
70
	}
71
72
	public function provideDataInvalid() {
73
		return array(
74
			array( array(), array( 'foo', 'bar' ) ),
75
			array( array( 'foo' ), array( 'foo', 'bar' ) ),
76
			array( array( 'bar' ), array( 'foo', 'bar' ) ),
77
		);
78
	}
79
80
	/**
81
	 * @dataProvider provideTrackVariablesParsing
82
	 */
83
	public function testTrackVariablesParsing( $input, $expected ) {
84
		$usageValidator = new UsageValidator();
85
		$usageValidator->trackUsedVariables( $input );
86
		$this->setExpectedException( 'RangeException', $expected );
87
88
		$usageValidator->validate();
89
	}
90
91
	public function provideTrackVariablesParsing() {
92
		return array(
93
			array( 'foo ?abc bar', '?abc' ),
94
			array( 'foo $abc bar', '?abc' ),
95
			array( '?foo abc $bar', '?foo, ?bar' ),
96
			array( 'foo.?abc', '?abc' ),
97
			array( '?foo$bar', '?foo' ),
98
			array( '?foo AS ?bar', '?foo' )
99
		);
100
	}
101
102
	/**
103
	 * @dataProvider provideTrackPrefixesParsing
104
	 */
105
	public function testTrackPrefixesParsing( $input, $expected ) {
106
		$usageValidator = new UsageValidator();
107
		$usageValidator->trackUsedPrefixes( $input );
108
		$this->setExpectedException( 'RangeException', $expected );
109
110
		$usageValidator->validate();
111
	}
112
113
	public function provideTrackPrefixesParsing() {
114
		return array(
115
			array( 'abc foo:bar def', array( 'foo' ) ),
116
			array( 'foo:abc xxx bar:def', array( 'foo', 'bar' ) ),
117
			array( 'abc.foo:bar', array( 'foo' ) )
118
		);
119
	}
120
121
}
122