From: Sarah Hoffmann Date: Mon, 9 Oct 2017 20:11:46 +0000 (+0200) Subject: adapt phpunit tests to new SearchContext class X-Git-Tag: v3.1.0~47^2~3 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/2c62a8dbbc2f4d16bbec67d5539a83b223159fbd?hp=55629a48913d6e091247105cf52d6492574691f7 adapt phpunit tests to new SearchContext class --- diff --git a/test/php/Nominatim/NearPointTest.php b/test/php/Nominatim/NearPointTest.php deleted file mode 100644 index bee7d3eb..00000000 --- a/test/php/Nominatim/NearPointTest.php +++ /dev/null @@ -1,95 +0,0 @@ -assertFalse(NearPoint::extractFromQuery('')); - $this->assertFalse(NearPoint::extractFromQuery('abc')); - $this->assertFalse(NearPoint::extractFromQuery('12 34')); - $this->assertFalse(NearPoint::extractFromQuery('200.1 89.9')); // because latitude > 180 - - // coordinates expected - $this->assertNotNull(NearPoint::extractFromQuery('0.0 -0.0')); - - $aRes = NearPoint::extractFromQuery(' abc 12.456 -78.90 def '); - $this->assertEquals($aRes['pt']->lat(), 12.456); - $this->assertEquals($aRes['pt']->lon(), -78.90); - $this->assertEquals($aRes['pt']->radius(), 0.1); - $this->assertEquals($aRes['query'], 'abc def'); - - $aRes = NearPoint::extractFromQuery(' [12.456,-78.90] '); - $this->assertEquals($aRes['pt']->lat(), 12.456); - $this->assertEquals($aRes['pt']->lon(), -78.90); - $this->assertEquals($aRes['pt']->radius(), 0.1); - $this->assertEquals($aRes['query'], ''); - - $aRes = NearPoint::extractFromQuery(' -12.456,-78.90 '); - $this->assertEquals($aRes['pt']->lat(), -12.456); - $this->assertEquals($aRes['pt']->lon(), -78.90); - - // http://en.wikipedia.org/wiki/Geographic_coordinate_conversion - // these all represent the same location - $aQueries = array( - '40 26.767 N 79 58.933 W', - '40° 26.767′ N 79° 58.933′ W', - "40° 26.767' N 79° 58.933' W", - 'N 40 26.767, W 79 58.933', - 'N 40°26.767′, W 79°58.933′', - "N 40°26.767', W 79°58.933'", - - '40 26 46 N 79 58 56 W', - '40° 26′ 46″ N 79° 58′ 56″ W', - 'N 40 26 46 W 79 58 56', - 'N 40° 26′ 46″, W 79° 58′ 56″', - 'N 40° 26\' 46", W 79° 58\' 56"', - - '40.446 -79.982', - '40.446,-79.982', - '40.446° N 79.982° W', - 'N 40.446° W 79.982°', - - '[40.446 -79.982]', - ' 40.446 , -79.982 ', - ); - - - foreach ($aQueries as $sQuery) { - $aRes = NearPoint::extractFromQuery($sQuery); - $this->assertEquals(40.446, $aRes['pt']->lat(), 'degrees decimal ' . $sQuery, 0.01); - $this->assertEquals(-79.982, $aRes['pt']->lon(), 'degrees decimal ' . $sQuery, 0.01); - $this->assertEquals('', $aRes['query']); - } - } - - public function testWithinSQL() - { - $np = new NearPoint(0.1, 23, 1); - - $this->assertEquals( - 'ST_DWithin(foo, ST_SetSRID(ST_Point(23,0.1),4326), 1.000000)', - $np->withinSQL('foo') - ); - } - - public function testDistanceSQL() - { - $np = new NearPoint(0.1, 23, 1); - - $this->assertEquals( - 'ST_Distance(ST_SetSRID(ST_Point(23,0.1),4326), foo)', - $np->distanceSQL('foo') - ); - } -} diff --git a/test/php/Nominatim/NominatimTest.php b/test/php/Nominatim/NominatimTest.php index a651fe40..33bb6d32 100644 --- a/test/php/Nominatim/NominatimTest.php +++ b/test/php/Nominatim/NominatimTest.php @@ -2,7 +2,7 @@ namespace Nominatim; -require '../../lib/lib.php'; +require_once '../../lib/lib.php'; class NominatimTest extends \PHPUnit_Framework_TestCase { @@ -203,4 +203,63 @@ class NominatimTest extends \PHPUnit_Framework_TestCase geometryText2Points('MULTIPOLYGON(((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))', $fRadius) ); } + + public function testParseLatLon() + { + // no coordinates expected + $this->assertFalse(parseLatLon('')); + $this->assertFalse(parseLatLon('abc')); + $this->assertFalse(parseLatLon('12 34')); + + // coordinates expected + $this->assertNotNull(parseLatLon('0.0 -0.0')); + + $aRes = parseLatLon(' abc 12.456 -78.90 def '); + $this->assertEquals($aRes[1], 12.456); + $this->assertEquals($aRes[2], -78.90); + $this->assertEquals($aRes[0], ' 12.456 -78.90 '); + + $aRes = parseLatLon(' [12.456,-78.90] '); + $this->assertEquals($aRes[1], 12.456); + $this->assertEquals($aRes[2], -78.90); + $this->assertEquals($aRes[0], ' [12.456,-78.90] '); + + $aRes = parseLatLon(' -12.456,-78.90 '); + $this->assertEquals($aRes[1], -12.456); + $this->assertEquals($aRes[2], -78.90); + $this->assertEquals($aRes[0], ' -12.456,-78.90 '); + + // http://en.wikipedia.org/wiki/Geographic_coordinate_conversion + // these all represent the same location + $aQueries = array( + '40 26.767 N 79 58.933 W', + '40° 26.767′ N 79° 58.933′ W', + "40° 26.767' N 79° 58.933' W", + 'N 40 26.767, W 79 58.933', + 'N 40°26.767′, W 79°58.933′', + "N 40°26.767', W 79°58.933'", + + '40 26 46 N 79 58 56 W', + '40° 26′ 46″ N 79° 58′ 56″ W', + 'N 40 26 46 W 79 58 56', + 'N 40° 26′ 46″, W 79° 58′ 56″', + 'N 40° 26\' 46", W 79° 58\' 56"', + + '40.446 -79.982', + '40.446,-79.982', + '40.446° N 79.982° W', + 'N 40.446° W 79.982°', + + '[40.446 -79.982]', + ' 40.446 , -79.982 ', + ); + + + foreach ($aQueries as $sQuery) { + $aRes = parseLatLon($sQuery); + $this->assertEquals(40.446, $aRes[1], 'degrees decimal ' . $sQuery, 0.01); + $this->assertEquals(-79.982, $aRes[2], 'degrees decimal ' . $sQuery, 0.01); + $this->assertEquals($sQuery, $aRes[0]); + } + } } diff --git a/test/php/Nominatim/SearchContextTest.php b/test/php/Nominatim/SearchContextTest.php new file mode 100644 index 00000000..a40d0716 --- /dev/null +++ b/test/php/Nominatim/SearchContextTest.php @@ -0,0 +1,52 @@ +oCtx = new SearchContext(); + } + + public function testHasNearPoint() + { + $this->assertFalse($this->oCtx->hasNearPoint()); + $this->oCtx->setNearPoint(0, 0); + $this->assertTrue($this->oCtx->hasNearPoint()); + } + + public function testNearRadius() + { + $this->oCtx->setNearPoint(1, 1); + $this->assertEquals(0.1, $this->oCtx->nearRadius()); + $this->oCtx->setNearPoint(1, 1, 0.338); + $this->assertEquals(0.338, $this->oCtx->nearRadius()); + } + + public function testWithinSQL() + { + $this->oCtx->setNearPoint(0.1, 23, 1); + + $this->assertEquals( + 'ST_DWithin(foo, ST_SetSRID(ST_Point(23,0.1),4326), 1.000000)', + $this->oCtx->withinSQL('foo') + ); + } + + public function testDistanceSQL() + { + $this->oCtx->setNearPoint(0.1, 23, 1); + + $this->assertEquals( + 'ST_Distance(ST_SetSRID(ST_Point(23,0.1),4326), foo)', + $this->oCtx->distanceSQL('foo') + ); + } +}