]> git.openstreetmap.org Git - nominatim.git/commitdiff
adapt php tests
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 17 May 2020 11:47:08 +0000 (13:47 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 17 May 2020 14:46:45 +0000 (16:46 +0200)
Also fixes some errors found by the tests.

lib/ClassTypes.php
test/php/Nominatim/AddressDetailsTest.php
test/php/Nominatim/ClassTypesTest.php

index 4b94d86539b716ee18911b88f7e96621b2dba14c..971f5b93147a5fc35f753d8fb8c9985096c2f19e 100644 (file)
@@ -17,7 +17,7 @@ function getLabelTag($aPlace, $sCountry = null)
     if (isset($aPlace['place_type'])) {
         $sLabel = $aPlace['place_type'];
     } elseif ($aPlace['class'] == 'boundary' && $aPlace['type'] == 'administrative') {
-        $sLabel = getBoundaryLabel($iRank, $sCountry);
+        $sLabel = getBoundaryLabel($iRank/2, $sCountry);
     } elseif ($iRank < 26) {
         $sLabel = $aPlace['type'];
     } elseif ($iRank < 28) {
@@ -32,7 +32,7 @@ function getLabelTag($aPlace, $sCountry = null)
         $sLabel = $aPlace['class'];
     }
 
-    return strtolower(str_replace('_', ' ', $sLabel));
+    return strtolower(str_replace(' ', '_', $sLabel));
 }
 
 /**
@@ -47,11 +47,11 @@ function getLabel($aPlace, $sCountry = null)
     }
 
     if ($aPlace['class'] == 'boundary' && $aPlace['type'] == 'administrative') {
-        return getBoundaryLabel((int)($aPlace['admin_level'] ?? 15, $sCountry ?? null);
+        return getBoundaryLabel(($aPlace['rank_address'] ?? 30)/2, $sCountry ?? null);
     }
 
     // Return a label only for 'important' class/type combinations
-    if (isset(getImportance($aPlace)) {
+    if (getImportance($aPlace) !== null) {
         return ucwords(str_replace('_', ' ', $aPlace['type']));
     }
 
@@ -82,7 +82,7 @@ function getBoundaryLabel($iAdminLevel, $sCountry, $sFallback = 'Administrative'
                                            6 => 'County',
                                            7 => 'Municipality',
                                            8 => 'City',
-                                           9 => 'City District'
+                                           9 => 'City District',
                                            10 => 'Suburb',
                                            11 => 'Neighbourhood'
                                            )
@@ -108,7 +108,7 @@ function getBoundaryLabel($iAdminLevel, $sCountry, $sFallback = 'Administrative'
 function getDefRadius($aPlace)
 {
     $aSpecialRadius = array(
-                       'place:continent' => 25
+                       'place:continent' => 25,
                        'place:country' => 7,
                        'place:state' => 2.6,
                        'place:province' => 2.6,
@@ -246,7 +246,10 @@ function getIcon($aPlace)
  */
 function getImportance($aPlace)
 {
-    static $aWithImportance = array_flip(array(
+    static $aWithImportance = null;
+
+    if ($aWithImportance === null) {
+        $aWithImportance = array_flip(array(
                                            'place:country',
                                            'place:state',
                                            'place:province',
@@ -526,7 +529,8 @@ function getImportance($aPlace)
                                            'railway:disused_station',
                                            'railway:abandoned',
                                            'railway:disused'
-                );
+                ));
+    }
 
     $sClassPlace = $aPlace['class'].':'.$aPlace['type'];
 
index e7b3a3f85ab5cd13376e0974fe21348ca2e86e04..4678911cdd5ec1e09255f581fb64416edb949ae3 100644 (file)
@@ -70,7 +70,7 @@ class AddressDetailsTest extends \PHPUnit\Framework\TestCase
     {
         $oAD = new AddressDetails($this->oDbStub, 194663412, 10, 'en');
         $expected = array(
-                     'attraction' => '10 Downing Street',
+                     'tourism' => '10 Downing Street',
                      'house_number' => '10',
                      'road' => 'Downing Street',
                      'neighbourhood' => 'St. James\'s',
index cec3b82ad5a09fb40034a150b1b0efde08ebd343..814e7cff6beec1d9da2736772d4cd1a5890afa2d 100644 (file)
@@ -6,89 +6,88 @@ require_once(CONST_BasePath.'/lib/ClassTypes.php');
 
 class ClassTypesTest extends \PHPUnit\Framework\TestCase
 {
-    public function testGetInfo()
+    public function testGetLabelTag()
     {
-        // 1) Admin level set
-        // city Dublin
-        // https://nominatim.openstreetmap.org/details.php?osmtype=R&osmid=1109531
-        $aPlace = array(
-                   'admin_level' => 7,
-                   'class' => 'boundary',
-                   'type' => 'administrative',
-                   'rank_address' => 14
-        );
-
-        $this->assertEquals('Municipality', ClassTypes\getInfo($aPlace)['label']);
-        $this->assertEquals('Municipality', ClassTypes\getFallbackInfo($aPlace)['label']);
-        $this->assertEquals('Municipality', ClassTypes\getProperty($aPlace, 'label'));
-
-        // 2) No admin level
-        // Eiffel Tower
-        // https://nominatim.openstreetmap.org/details.php?osmtype=W&osmid=5013364
-        $aPlace = array(
-                   'class' => 'tourism',
-                   'type' => 'attraction',
-                   'rank_address' => 29
-        );
-        $this->assertEquals('Attraction', ClassTypes\getInfo($aPlace)['label']);
-        $this->assertEquals(array('simplelabel' => 'address29'), ClassTypes\getFallbackInfo($aPlace));
-        $this->assertEquals('Attraction', ClassTypes\getProperty($aPlace, 'label'));
-
-        // 3) Unknown type
-        // La Maison du Toutou, Paris
-        // https://nominatim.openstreetmap.org/details.php?osmtype=W&osmid=164011651
-        $aPlace = array(
-                   'class' => 'shop',
-                   'type' => 'pet_grooming',
-                   'rank_address' => 29
-        );
-        $this->assertEquals(false, ClassTypes\getInfo($aPlace));
-        $this->assertEquals(array('simplelabel' => 'address29'), ClassTypes\getFallbackInfo($aPlace));
-        $this->assertEquals(false, ClassTypes\getProperty($aPlace, 'label'));
-        $this->assertEquals('mydefault', ClassTypes\getProperty($aPlace, 'label', 'mydefault'));
+        $aPlace = array('class' => 'boundary', 'type' => 'administrative',
+                        'rank_address' => '4', 'place_type' => 'city');
+        $this->assertEquals('city', ClassTypes\getLabelTag($aPlace));
+
+        $aPlace = array('class' => 'boundary', 'type' => 'administrative',
+                        'rank_address' => '10');
+        $this->assertEquals('state_district', ClassTypes\getLabelTag($aPlace));
+
+        $aPlace = array('class' => 'boundary', 'type' => 'administrative');
+        $this->assertEquals('administrative', ClassTypes\getLabelTag($aPlace));
+
+        $aPlace = array('class' => 'place', 'type' => 'hamlet',
+                        'rank_address' => '20');
+        $this->assertEquals('hamlet', ClassTypes\getLabelTag($aPlace));
+
+        $aPlace = array('class' => 'highway', 'type' => 'residential',
+                        'rank_address' => '26');
+        $this->assertEquals('road', ClassTypes\getLabelTag($aPlace));
+
+        $aPlace = array('class' => 'place', 'type' => 'house_number',
+                        'rank_address' => '30');
+        $this->assertEquals('house_number', ClassTypes\getLabelTag($aPlace));
+
+        $aPlace = array('class' => 'amenity', 'type' => 'prison',
+                        'rank_address' => '30');
+        $this->assertEquals('amenity', ClassTypes\getLabelTag($aPlace));
     }
 
-    public function testGetClassTypesWithImportance()
+    public function testGetLabel()
     {
-        $aClasses = ClassTypes\getListWithImportance();
-
-        $this->assertGreaterThan(
-            200,
-            count($aClasses)
-        );
-
-        $this->assertEquals(
-            array(
-             'label' => 'Country',
-             'frequency' => 0,
-             'icon' => 'poi_boundary_administrative',
-             'defzoom' => 6,
-             'defdiameter' => 15,
-             'importance' => 3
-            ),
-            $aClasses['place:country']
-        );
+        $aPlace = array('class' => 'boundary', 'type' => 'administrative',
+                        'rank_address' => '4', 'place_type' => 'city');
+        $this->assertEquals('City', ClassTypes\getLabel($aPlace));
+
+        $aPlace = array('class' => 'boundary', 'type' => 'administrative',
+                        'rank_address' => '10');
+        $this->assertEquals('State District', ClassTypes\getLabel($aPlace));
+
+        $aPlace = array('class' => 'boundary', 'type' => 'administrative');
+        $this->assertEquals('Administrative', ClassTypes\getLabel($aPlace));
+
+        $aPlace = array('class' => 'amenity', 'type' => 'prison');
+        $this->assertEquals('Prison', ClassTypes\getLabel($aPlace));
+
+        $aPlace = array('class' => 'amenity', 'type' => 'foobar');
+        $this->assertNull(ClassTypes\getLabel($aPlace));
     }
 
+    public function testGetBoundaryLabel()
+    {
+        $this->assertEquals('City', ClassTypes\getBoundaryLabel(8, null));
+        $this->assertEquals('Administrative', ClassTypes\getBoundaryLabel(18, null));
+        $this->assertEquals('None', ClassTypes\getBoundaryLabel(18, null, 'None'));
+        $this->assertEquals('State', ClassTypes\getBoundaryLabel(4, 'de', 'None'));
+    }
 
-    public function testGetResultDiameter()
+    public function testGetDefRadius()
     {
         $aResult = array('class' => '', 'type' => '');
-        $this->assertEquals(
-            0.0001,
-            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
-        );
+        $this->assertEquals(0.00005, ClassTypes\getDefRadius($aResult));
 
         $aResult = array('class' => 'place', 'type' => 'country');
-        $this->assertEquals(
-            15,
-            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
-        );
-
-        $aResult = array('class' => 'boundary', 'type' => 'administrative', 'admin_level' => 6);
-        $this->assertEquals(
-            0.32,
-            ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
-        );
+        $this->assertEquals(7, ClassTypes\getDefRadius($aResult));
+    }
+
+    public function testGetIcon()
+    {
+        $aResult = array('class' => '', 'type' => '');
+        $this->assertNull(ClassTypes\getIcon($aResult));
+
+        $aResult = array('class' => 'place', 'type' => 'airport');
+        $this->assertEquals('transport_airport2', ClassTypes\getIcon($aResult));
+    }
+
+    public function testGetImportance()
+    {
+        $aResult = array('class' => '', 'type' => '');
+        $this->assertNull(ClassTypes\getImportance($aResult));
+
+        $aResult = array('class' => 'place', 'type' => 'airport');
+        $this->assertGreaterThan(0, ClassTypes\getImportance($aResult));
     }
 }