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
|
<?php
/**
* @file
* @author Abijeet Patro
* @license GPL-2.0-or-later
*/
class RegexInsertablesSuggesterTest extends PHPUnit\Framework\TestCase {
/**
* @dataProvider getTestRegexInsertableProvider
*/
public function testRegexInsertable( $text, $params, $expectedVals ) {
$insertablesSuggester = new RegexInsertablesSuggester( $params );
$insertables = $insertablesSuggester->getInsertables( $text );
$this->assertCount( count( $expectedVals ), $insertables,
'should return all the expected insertables.' );
foreach ( $expectedVals as $i => $values ) {
$this->assertEquals( $values['display'], $insertables[$i]->getDisplayText(),
'should return the correct display text.' );
$this->assertEquals( $values['pre'], $insertables[$i]->getPreText(),
'should return the correct pre text.' );
$this->assertEquals( $values['post'], $insertables[$i]->getPostText(),
'should return the correct post text.' );
}
}
public function getTestRegexInsertableProvider() {
yield [
'Hello $name! I\'m $myname',
[
'regex' => '/\$[a-z0-9]+/'
],
[
[ 'display' => '$name', 'pre' => '$name', 'post' => '' ],
[ 'display' => '$myname', 'pre' => '$myname', 'post' => '' ],
]
];
yield [
'<html> <rocks>',
[
'regex' => '/(?<display>\<[a-z]+>)/',
'display' => '$display',
],
[
[ 'display' => '<html>', 'pre' => '<html>', 'post' => '' ],
[ 'display' => '<rocks>', 'pre' => '<rocks>', 'post' => '' ]
]
];
yield [
'[Hello]($1) [World]($2)',
[
'regex' => '/(?<pre>\[)[^]]+(?<post>\]\([^)]+\))/',
'display' => '$pre$post',
'pre' => '$pre',
'post' => '$post'
],
[
[ 'display' => '[]($1)', 'pre' => '[', 'post' => ']($1)' ],
[ 'display' => '[]($2)', 'pre' => '[', 'post' => ']($2)' ]
]
];
}
}
|