provideInvalidExpressions()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 27
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 1 Features 3
Metric Value
c 6
b 1
f 3
dl 0
loc 27
rs 8.8571
cc 1
eloc 25
nc 1
nop 0
1
<?php
2
3
namespace Asparagus\Tests;
4
5
use Asparagus\ExpressionValidator;
6
7
/**
8
 * @covers Asparagus\ExpressionValidator
9
 *
10
 * @license GNU GPL v2+
11
 * @author Bene* < [email protected] >
12
 */
13
class ExpressionValidatorTest extends \PHPUnit_Framework_TestCase {
14
15
	/**
16
	 * @dataProvider provideValidExpressions
17
	 */
18
	public function testValidate_validExpressions( $expression, $options ) {
19
		$expressionValidator = new ExpressionValidator();
20
		$expressionValidator->validate( $expression, $options );
21
22
		$this->assertTrue( true );
23
	}
24
25
	public function provideValidExpressions() {
26
		return array(
27
			array( '?a', ExpressionValidator::VALIDATE_VARIABLE ),
28
			array( '$b', ExpressionValidator::VALIDATE_VARIABLE ),
29
			array( 'http://www.example.com/test#', ExpressionValidator::VALIDATE_IRI ),
30
			array( 'abc', ExpressionValidator::VALIDATE_PREFIX ),
31
			array( 'test:FooBar', ExpressionValidator::VALIDATE_PREFIXED_IRI ),
32
			array( '<http://www.example.com/test#>', ExpressionValidator::VALIDATE_PREFIXED_IRI ),
33
			array( '123', ExpressionValidator::VALIDATE_NATIVE ),
34
			array( '"Foo bar"', ExpressionValidator::VALIDATE_NATIVE ),
35
			array( 'foaf:knows/foaf:name', ExpressionValidator::VALIDATE_PATH ),
36
			array( 'foaf:knows/foaf:knows/foaf:name', ExpressionValidator::VALIDATE_PATH ),
37
			array( 'foaf:knows/^foaf:knows', ExpressionValidator::VALIDATE_PATH ),
38
			array( 'foaf:knows+/foaf:name', ExpressionValidator::VALIDATE_PATH ),
39
			array( '(ex:motherOf|ex:fatherOf)+', ExpressionValidator::VALIDATE_PATH ),
40
			array( 'rdf:type/rdfs:subClassOf*', ExpressionValidator::VALIDATE_PATH ),
41
			array( '^rdf:type', ExpressionValidator::VALIDATE_PATH ),
42
			array( '!(rdf:type|^rdf:type)', ExpressionValidator::VALIDATE_PATH ),
43
			array( 'CONTAINS (?x, "test"^^xsd:string)', ExpressionValidator::VALIDATE_FUNCTION ),
44
			array( '?abc', ExpressionValidator::VALIDATE_FUNCTION ),
45
			array( '?x + ?y > ?z', ExpressionValidator::VALIDATE_FUNCTION ),
46
			array( '?x * ?x < ?y', ExpressionValidator::VALIDATE_FUNCTION ),
47
			array( 'CONTAINS (?x, ")))"^^xsd:string)', ExpressionValidator::VALIDATE_FUNCTION ),
48
			array( '<http://www.example.com/test#nyan> ?p ?q', ExpressionValidator::VALIDATE_FUNCTION ),
49
			array( '(COUNT (?x) AS ?count)', ExpressionValidator::VALIDATE_FUNCTION_AS ),
50
		);
51
	}
52
53
	/**
54
	 * @dataProvider provideInvalidExpressions
55
	 */
56
	public function testValidate_invalidExpressions( $expression, $options, $errorMessage ) {
57
		$expressionValidator = new ExpressionValidator();
58
		$this->setExpectedException( 'InvalidArgumentException', $errorMessage );
59
60
		$expressionValidator->validate( $expression, $options );
61
	}
62
63
	public function provideInvalidExpressions() {
64
		return array(
65
			array( 'nyan', ExpressionValidator::VALIDATE_VARIABLE, 'variable' ),
66
			array( '<http://www.example.com/test#>', ExpressionValidator::VALIDATE_IRI, 'IRI' ),
67
			array( 'http://www.example.com/test#> foo bar', ExpressionValidator::VALIDATE_IRI, 'IRI' ),
68
			array( '<abc><>', ExpressionValidator::VALIDATE_IRI, 'IRI' ),
69
			array( 'http://www.example.com/te st#', ExpressionValidator::VALIDATE_IRI, 'IRI' ),
70
			array( 'http://www.example.com/test#ab\cd', ExpressionValidator::VALIDATE_IRI, 'IRI' ),
71
			array( 'http://www.example.com/test#ab|cd', ExpressionValidator::VALIDATE_IRI, 'IRI' ),
72
			array( 'ab:cd', ExpressionValidator::VALIDATE_PREFIX, 'prefix' ),
73
			array( 'ab/cd', ExpressionValidator::VALIDATE_PREFIX, 'prefix' ),
74
			array( 'ab cd', ExpressionValidator::VALIDATE_PREFIX, 'prefix' ),
75
			array( 'foobar', ExpressionValidator::VALIDATE_PREFIXED_IRI, 'prefixed IRI' ),
76
			array( 'test:Foo:Bar', ExpressionValidator::VALIDATE_PREFIXED_IRI, 'prefixed IRI' ),
77
			array( '"abc', ExpressionValidator::VALIDATE_NATIVE, 'native' ),
78
			array( 'abc123', ExpressionValidator::VALIDATE_NATIVE, 'native' ),
79
			array( 'foobar (?x > ?y)', ExpressionValidator::VALIDATE_FUNCTION, 'function' ),
80
			array( '(RAND ())', ExpressionValidator::VALIDATE_FUNCTION, 'function' ),
81
			array( 'COUNT (?x) + 5) * ?a', ExpressionValidator::VALIDATE_FUNCTION, 'function' ),
82
			array( 'CONTAINS (?x, "test"^^xsd:string)', ExpressionValidator::VALIDATE_FUNCTION_AS, 'function with variable assignment' ),
83
			array( '?x + ?y > ?z', ExpressionValidator::VALIDATE_FUNCTION_AS, 'function with variable assignment' ),
84
			array( ' AS ?abc', ExpressionValidator::VALIDATE_FUNCTION_AS, 'function with variable assignment' ),
85
			array( 'COUNT (?x) AS ?count', ExpressionValidator::VALIDATE_FUNCTION_AS, 'function with variable assignment' ),
86
			array( '', ExpressionValidator::VALIDATE_ALL, 'or a' ),
87
			array( '     ', ExpressionValidator::VALIDATE_ALL, 'or a' ),
88
		);
89
	}
90
91
	public function testValidate_invalidArgument() {
92
		$expressionValidator = new ExpressionValidator();
93
		$this->setExpectedException( 'InvalidArgumentException' );
94
95
		$expressionValidator->validate( null, ExpressionValidator::VALIDATE_ALL );
96
	}
97
98
}
99