X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/10a965c3ab6d1e2da2bf57be093084349cc401e7..6fb8fab66594260a12f9e1d4ffe537b39666ad83:/tests-php/Nominatim/NominatimTest.php diff --git a/tests-php/Nominatim/NominatimTest.php b/tests-php/Nominatim/NominatimTest.php index a36c029e..129fa012 100644 --- a/tests-php/Nominatim/NominatimTest.php +++ b/tests-php/Nominatim/NominatimTest.php @@ -128,8 +128,10 @@ class NominatimTest extends \PHPUnit_Framework_TestCase // 4 words => 8 sets // 10 words => 511 sets // 15 words => 12911 sets + // 18 words => 65536 sets // 20 words => 169766 sets - // 28 words => 397594 sets + // 22 words => 401930 sets + // 28 words => 3505699 sets (needs more than 4GB via 'phpunit -d memory_limit=' to run) $this->assertEquals( 8, count( getWordSets(array_fill( 0, 4, 'a'),0) ) @@ -137,10 +139,72 @@ class NominatimTest extends \PHPUnit_Framework_TestCase $this->assertEquals( - 8, - count( getWordSets(array_fill( 0, 28, 'a'),0) ) + 65536, + count( getWordSets(array_fill( 0, 18, 'a'),0) ) + ); + + } + + + + + public function test_geometryText2Points() + { + $fRadius = 1; + + // invalid value + $this->assertEquals( + NULL, + geometryText2Points('', $fRadius) + ); + + + // POINT + $aPoints = geometryText2Points('POINT(10 20)', $fRadius); + $this->assertEquals( + 101, + count($aPoints) + ); + + $this->assertEquals( + + array( + ['', 10, 21], + ['', 10.062790519529, 20.998026728428], + ['', 10.125333233564, 20.992114701314] + ), + array_splice($aPoints, 0,3) + ); + + // POLYGON + $this->assertEquals( + array( + ['30 10', '30', '10'], + ['40 40', '40', '40'], + ['20 40', '20', '40'], + ['10 20', '10', '20'], + ['30 10', '30', '10'] + ), + geometryText2Points('POLYGON((30 10, 40 40, 20 40, 10 20, 30 10))', $fRadius) ); + // MULTIPOLYGON + // only the first polygon is used + $this->assertEquals( + array( + ['30 20', '30', '20'], + ['45 40', '45', '40'], + ['10 40', '10', '40'], + ['30 20', '30', '20'], + + // ['15 5' , '15', '5' ], + // ['45 10', '45', '10'], + // ['10 20', '10', '20'], + // ['5 10' , '5' , '10'], + // ['15 5' , '15', '5' ] + ), + geometryText2Points('MULTIPOLYGON(((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))', $fRadius) + ); }