1<?php
2
3namespace dokuwiki\test\Subscriptions;
4
5use dokuwiki\Subscriptions\SubscriberRegexBuilder;
6use DokuWikiTest;
7
8class SubscriberRegexBuilderTest extends DokuWikiTest
9{
10
11    public function regexTestdataProvider()
12    {
13        return [
14            ['Cold Fusion', null, null, 1],
15            ['casper', null, null, 1],
16            ['nope', null, null, 0],
17            ['lights', null, null, 0],
18            [['Cold Fusion', 'casper', 'nope'], null, null, 2],
19            [null, 'list', null, 1],
20            [null, 'every', null, 2],
21            [null, 'digest', null, 3],
22            [null, ['list', 'every'], null, 3],
23            ['casper', 'digest', null, 0],
24            ['casper', ['digest', 'every'], null, 1],
25            ['zioth', 'list', '1344691369', 1],
26            ['zioth', null, '1344691369', 1],
27            ['zioth', 'digest', '1344691369', 0],
28        ];
29    }
30
31    /**
32     * @dataProvider regexTestdataProvider
33     */
34    public function testRegexp($user, $style, $inputData, $expectedNumResults)
35    {
36        // data to test against
37        $data = [
38            "casper every\n",
39            "Andreas digest 1344689733",
40            "Cold%20Fusion every",
41            "zioth list 1344691369\n",
42            "nlights digest",
43            "rikblok\tdigest  \t 1344716803",
44        ];
45
46        $sub = new SubscriberRegexBuilder();
47        $re = $sub->buildRegex($user, $style, $inputData);
48        $this->assertFalse(empty($re));
49        $result = preg_grep($re, $data);
50        $this->assertEquals($expectedNumResults, count($result));
51    }
52}
53