]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/php/Nominatim/TokenListTest.php
Added Test for TokenSpecialTerm
[nominatim.git] / test / php / Nominatim / TokenListTest.php
index ad91dff195eaf111d67675b7251cc4543e2f9fb5..14a595ea9f3c115da1e8063e3436739174699e18 100644 (file)
@@ -2,17 +2,16 @@
 
 namespace Nominatim;
 
-@define('CONST_BasePath', '../../');
+require_once(CONST_LibDir.'/TokenList.php');
 
-require_once '../../lib/db.php';
-require_once '../../lib/cmd.php';
-require_once '../../lib/TokenList.php';
 
 class TokenTest extends \PHPUnit\Framework\TestCase
 {
-    protected function setUp()
+    protected function setUp(): void
     {
-        $this->oNormalizer = $this->getMock(\MockNormalizer::class, array('transliterate'));
+        $this->oNormalizer = $this->getMockBuilder(\MockNormalizer::class)
+                                  ->setMethods(array('transliterate'))
+                                  ->getMock();
         $this->oNormalizer->method('transliterate')
                           ->will($this->returnCallback(function ($text) {
                               return strtolower($text);
@@ -55,7 +54,18 @@ class TokenTest extends \PHPUnit\Framework\TestCase
     {
         $this->expectOutputRegex('/<p><tt>/');
 
-        $oDbStub = $this->getMock(\DB::class, array('getAll'));
+        $oDbStub = $this->getMockBuilder(Nominatim\DB::class)
+                        ->setMethods(array('getAll', 'getDBQuotedList'))
+                        ->getMock();
+
+        $oDbStub->method('getDBQuotedList')
+                ->will($this->returnCallback(function ($aVals) {
+                    return array_map(function ($sVal) {
+                        return "'".$sVal."'";
+                    }, $aVals);
+                }));
+
+
         $oDbStub->method('getAll')
                 ->will($this->returnCallback(function ($sql) {
                     $aResults = array();
@@ -67,6 +77,15 @@ class TokenTest extends \PHPUnit\Framework\TestCase
                                                          'type' => 'house'
                                                         ));
                     }
+                    if (preg_match('/hauptstr/', $sql)) {
+                        $aResults[] = $this->wordResult(array(
+                                                         'word_id' => 999,
+                                                         'word_token' => 'hauptstr',
+                                                         'class' => 'place',
+                                                         'type' => 'street',
+                                                         'operator' => true
+                                                        ));
+                    }
                     if (preg_match('/64286/', $sql)) {
                         $aResults[] = $this->wordResult(array(
                                                          'word_id' => 999,
@@ -106,11 +125,12 @@ class TokenTest extends \PHPUnit\Framework\TestCase
 
         $TL = new TokenList;
         $TL->addTokensFromDB($oDbStub, $aTokens, $aCountryCodes, $sNormQuery, $this->oNormalizer);
-        $this->assertEquals(4, $TL->count());
+        $this->assertEquals(5, $TL->count());
 
         $this->assertEquals(array(new Token\HouseNumber(999, '1051')), $TL->get('1051'));
         $this->assertEquals(array(new Token\Country(999, 'de')), $TL->get('alemagne'));
         $this->assertEquals(array(new Token\Postcode(999, '64286')), $TL->get('64286'));
-        $this->assertEquals(array(new Token\Word(999, true, 533)), $TL->get('darmstadt'));
+        $this->assertEquals(array(new Token\Word(999, true, 533, 0)), $TL->get('darmstadt'));
+        $this->assertEquals(array(new Token\SpecialTerm(999, 'place', 'street', true)), $TL->get('hauptstr'));
     }
 }