-
Notifications
You must be signed in to change notification settings - Fork 112
/
Copy pathExceptionsTest.php
142 lines (126 loc) · 3.88 KB
/
ExceptionsTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
namespace SRLTests;
use ReflectionClass;
use SRL\Builder;
use SRL\Language\Helpers\ParenthesesParser;
use SRL\SRL;
class ExceptionsTest extends TestCase
{
/**
* @expectedException \SRL\Exceptions\ImplementationException
* @expectedExceptionMessage Call to undefined or invalid method SRL\Builder:methodDoesNotExist()
*/
public function testInvalidSRLMethod()
{
SRL::methodDoesNotExist();
}
/**
* @expectedException \SRL\Exceptions\PregException
* @expectedExceptionMessage Internal PCRE error.
*/
public function testInvalidGetMatches()
{
SRL::literally('foo')->getMatches('foo', 10);
}
/**
* @expectedException \SRL\Exceptions\PregException
* @expectedExceptionMessage Internal PCRE error.
*/
public function testInvalidMatches()
{
SRL::literally('foo')->once()->isMatching('foo', 0, 10);
}
/**
* @expectedException \SRL\Exceptions\BuilderException
* @expectedExceptionMessage Unknown mapper.
*/
public function testInvalidMapper()
{
$method = (new ReflectionClass(Builder::class))->getMethod('addFromMapper');
$method->setAccessible(true);
$method->invokeArgs(new Builder, ['invalid_mapper']);
}
/**
* @expectedException \SRL\Exceptions\ImplementationException
* @expectedExceptionMessage Cannot apply laziness at this point.
*/
public function testInvalidLaziness()
{
SRL::literally('foo')->firstMatch();
}
/**
* @expectedException \SRL\Exceptions\BuilderException
* @expectedExceptionMessage Adding raw would invalidate this regular expression. Reverted.
*/
public function testInvalidRaw()
{
SRL::literally('foo')->raw('ba)r');
}
/**
* @expectedException \SRL\Exceptions\SyntaxException
* @expectedExceptionMessage Non-matching parenthesis found.
*/
public function testInvalidParenthesis()
{
$parser = new ParenthesesParser('foo ( bar');
$parser->parse();
}
/**
* @expectedException \SRL\Exceptions\SyntaxException
* @expectedExceptionMessage Non-matching parenthesis found.
*/
public function testOtherInvalidParenthesis()
{
$parser = new ParenthesesParser('foo ) bar');
$parser->parse();
}
/**
* @expectedException \SRL\Exceptions\SyntaxException
* @expectedExceptionMessage Invalid string ending found.
*/
public function testInvalidStringEnding()
{
$parser = new ParenthesesParser('foo "bar');
$parser->parse();
}
/**
* @expectedException \SRL\Exceptions\ImplementationException
* @expectedExceptionMessage Method `onceOrMore` is not allowed at the beginning.
*/
public function testInvalidMethodCallOne()
{
SRL::onceOrMore();
}
/**
* @expectedException \SRL\Exceptions\ImplementationException
* @expectedExceptionMessage Method `neverOrMore` is not allowed after a quantifier.
*/
public function testInvalidMethodCallTwo()
{
SRL::literally('foo')->twice()->neverOrMore();
}
/**
* @expectedException \SRL\Exceptions\SyntaxException
* @expectedExceptionMessage `literally` does not allow the use of sub-queries.
*/
public function testInvalidArgument()
{
new SRL('literally (literally "foo")');
}
/**
* @expectedException \SRL\Exceptions\SyntaxException
* @expectedExceptionMessage Invalid parameter given for `exactly`.
*/
public function testInvalidExactlyArgument()
{
new SRL('letter exactly 2 times,foo digit');
}
/**
* @expectedException \SRL\Exceptions\SyntaxException
* @expectedExceptionMessage Invalid parameter given for `at least`.
*/
public function testInvalidAtLeastArgument()
{
new SRL('letter at least 2 times,but digit');
}
}