]> git.openstreetmap.org Git - nominatim.git/blob - test/php/Nominatim/PhraseTest.php
travis: make sure to start with fresh template for DB tests
[nominatim.git] / test / php / Nominatim / PhraseTest.php
1 <?php
2
3 namespace Nominatim;
4
5 require_once(CONST_BasePath.'/lib/Phrase.php');
6
7 class PhraseTest extends \PHPUnit\Framework\TestCase
8 {
9
10
11     private function serializeSets($aSets)
12     {
13         $aParts = array();
14         foreach ($aSets as $aSet) {
15             $aParts[] = '(' . join('|', $aSet) . ')';
16         }
17         return join(',', $aParts);
18     }
19
20
21     public function testEmptyPhrase()
22     {
23         $oPhrase = new Phrase('', '');
24
25         $this->assertEquals(
26             array(array('')),
27             $oPhrase->getWordSets()
28         );
29     }
30
31
32     public function testSingleWordPhrase()
33     {
34         $oPhrase = new Phrase('a', '');
35
36         $this->assertEquals(
37             '(a)',
38             $this->serializeSets($oPhrase->getWordSets())
39         );
40     }
41
42
43     public function testMultiWordPhrase()
44     {
45         $oPhrase = new Phrase('a b', '');
46         $this->assertEquals(
47             '(a b),(a|b)',
48             $this->serializeSets($oPhrase->getWordSets())
49         );
50
51         $oPhrase = new Phrase('a b c', '');
52         $this->assertEquals(
53             '(a b c),(a|b c),(a|b|c),(a b|c)',
54             $this->serializeSets($oPhrase->getWordSets())
55         );
56
57         $oPhrase = new Phrase('a b c d', '');
58         $this->assertEquals(
59             '(a b c d),(a|b c d),(a|b|c d),(a|b|c|d),(a|b c|d),(a b|c d),(a b|c|d),(a b c|d)',
60             $this->serializeSets($oPhrase->getWordSets())
61         );
62     }
63
64
65     public function testInverseWordSets()
66     {
67         $oPhrase = new Phrase('a b c', '');
68         $oPhrase->invertWordSets();
69
70         $this->assertEquals(
71             '(a b c),(c|a b),(c|b|a),(b c|a)',
72             $this->serializeSets($oPhrase->getWordSets())
73         );
74     }
75
76
77     public function testMaxDepth()
78     {
79         $oPhrase = new Phrase(join(' ', array_fill(0, 4, 'a')), '');
80         $this->assertEquals(8, count($oPhrase->getWordSets()));
81         $oPhrase->invertWordSets();
82         $this->assertEquals(8, count($oPhrase->getWordSets()));
83
84         $oPhrase = new Phrase(join(' ', array_fill(0, 18, 'a')), '');
85         $this->assertEquals(41226, count($oPhrase->getWordSets()));
86         $oPhrase->invertWordSets();
87         $this->assertEquals(41226, count($oPhrase->getWordSets()));
88     }
89 }