Skip to content

Commit

Permalink
Merge pull request #1189 from mtmail/classtypes-unit-tests
Browse files Browse the repository at this point in the history
PHP unit tests for Nominatim\ClassTypes
  • Loading branch information
lonvia committed Sep 22, 2018
2 parents 1f887a6 + f0daf11 commit 0959569
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 46 deletions.
94 changes: 94 additions & 0 deletions test/php/Nominatim/ClassTypesTest.php
@@ -0,0 +1,94 @@
<?php

namespace Nominatim;

require_once(CONST_BasePath.'/lib/ClassTypes.php');

class ClassTypesTest extends \PHPUnit\Framework\TestCase
{
public function testGetInfo()
{
// 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('County', ClassTypes\getInfo($aPlace)['label']);
$this->assertEquals('County', ClassTypes\getFallbackInfo($aPlace)['label']);
$this->assertEquals('County', 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'));
}

public function testGetClassTypesWithImportance()
{
$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']
);
}


public function testGetResultDiameter()
{
$aResult = array('class' => '', 'type' => '');
$this->assertEquals(
0.0001,
ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
);

$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)
);
}
}
46 changes: 0 additions & 46 deletions test/php/Nominatim/LibTest.php
Expand Up @@ -2,54 +2,8 @@

namespace Nominatim;

require_once(CONST_BasePath.'/lib/ClassTypes.php');

class LibTest extends \PHPUnit\Framework\TestCase
{
public function testGetClassTypesWithImportance()
{
$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']
);
}


public function testGetResultDiameter()
{
$aResult = array('class' => '', 'type' => '');
$this->assertEquals(
0.0001,
ClassTypes\getProperty($aResult, 'defdiameter', 0.0001)
);

$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)
);
}


public function testAddQuotes()
{
Expand Down

0 comments on commit 0959569

Please sign in to comment.