Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
3.55% covered (danger)
3.55%
6 / 169
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_search_common_test_case
3.55% covered (danger)
3.55%
6 / 169
50.00% covered (danger)
50.00%
1 / 2
11.08
0.00% covered (danger)
0.00%
0 / 1
 keywords
0.00% covered (danger)
0.00%
0 / 163
0.00% covered (danger)
0.00%
0 / 1
2
 test_split_keywords
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14require_once __DIR__ . '/../test_framework/phpbb_search_test_case.php';
15
16abstract class phpbb_search_common_test_case extends phpbb_search_test_case
17{
18    protected $search;
19
20    public static function keywords()
21    {
22        return array(
23            // keywords
24            // terms
25            // ok
26            // split words
27            // common words
28            array(
29                'fooo',
30                'all',
31                true,
32                array('fooo'),
33                array(),
34            ),
35            array(
36                'fooo baar',
37                'all',
38                true,
39                array('fooo', 'baar'),
40                array(),
41            ),
42            // leading, trailing and multiple spaces
43            array(
44                '      fooo    baar   ',
45                'all',
46                true,
47                array('fooo', 'baar'),
48                array(),
49            ),
50            // words too short
51            array(
52                'f',
53                'all',
54                false,
55                null,
56                // short words count as "common" words
57                array('f'),
58            ),
59            array(
60                'f o o',
61                'all',
62                false,
63                null,
64                array('f', 'o', 'o'),
65            ),
66            array(
67                'f -o -o',
68                'all',
69                false,
70                null,
71                array('f', '-o', '-o'),
72            ),
73            array(
74                'fooo -baar',
75                'all',
76                true,
77                array('-baar', 'fooo'),
78                array(),
79            ),
80            // all negative
81            array(
82                '-fooo',
83                'all',
84                true,
85                array('-fooo'),
86                array(),
87            ),
88            array(
89                '-fooo -baar',
90                'all',
91                true,
92                array('-fooo', '-baar'),
93                array(),
94            ),
95            array(
96                'fooo -fooo',
97                'all',
98                true,
99                array('fooo', '-fooo'),
100                array(),
101            ),
102            array(
103                'fooo fooo-',
104                'all',
105                true,
106                array('fooo', 'fooo'),
107                array(),
108            ),
109            array(
110                '-fooo fooo',
111                'all',
112                true,
113                array('-fooo', 'fooo'),
114                array(),
115            ),
116            array(
117                'fooo- fooo',
118                'all',
119                true,
120                array('fooo', 'fooo'),
121                array(),
122            ),
123            array(
124                'fooo-baar fooo',
125                'all',
126                true,
127                array('fooo', 'baar', 'fooo'),
128                array(),
129            ),
130            array(
131                'fooo-baar -fooo',
132                'all',
133                true,
134                array('fooo', 'baar', '-fooo'),
135                array(),
136            ),
137            array(
138                'fooo-baar fooo-',
139                'all',
140                true,
141                array('fooo', 'baar', 'fooo'),
142                array(),
143            ),
144            array(
145                'fooo-baar baar',
146                'all',
147                true,
148                array('fooo', 'baar', 'baar'),
149                array(),
150            ),
151            array(
152                'fooo-baar -baar',
153                'all',
154                true,
155                array('fooo', 'baar', '-baar'),
156                array(),
157            ),
158            array(
159                'fooo-baar baar-',
160                'all',
161                true,
162                array('fooo', 'baar', 'baar'),
163                array(),
164            ),
165            array(
166                'fooo-baar fooo-baar',
167                'all',
168                true,
169                array('fooo', 'baar', 'fooo', 'baar'),
170                array(),
171            ),
172            array(
173                'fooo-baar -fooo-baar',
174                'all',
175                true,
176                array('fooo', 'baar', '-fooo', 'baar'),
177                array(),
178            ),
179            array(
180                'fooo-baar fooo-baar-',
181                'all',
182                true,
183                array('fooo', 'baar', 'fooo', 'baar'),
184                array(),
185            ),
186            array(
187                'fooo-baar-baaz',
188                'all',
189                true,
190                array('fooo', 'baar', 'baaz'),
191                array(),
192            ),
193        );
194    }
195
196    /**
197    * @dataProvider keywords
198    */
199    public function test_split_keywords($keywords, $terms, $ok, $split_words, $common)
200    {
201        $rv = $this->search->split_keywords($keywords, $terms);
202        $this->assertEquals($ok, $rv);
203        if ($ok)
204        {
205            // If there are valid keywords, search->split_keywords perfoms array sort
206            sort($split_words);
207
208            // only check criteria if the search is going to be performed
209            $this->assert_array_content_equals($split_words, $this->search->get_split_words());
210        }
211        $this->assert_array_content_equals($common, $this->search->get_common_words());
212    }
213}