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