From: Sarah Hoffmann Date: Sat, 14 Oct 2017 18:28:52 +0000 (+0200) Subject: adapt unit tests to new Phrase class X-Git-Tag: v3.1.0~43^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/5c18d6865d18ab4ff9e13acda1c9ca5cf04252c4 adapt unit tests to new Phrase class --- diff --git a/test/php/Nominatim/NominatimTest.php b/test/php/Nominatim/NominatimTest.php index 33bb6d32..cae3ebb8 100644 --- a/test/php/Nominatim/NominatimTest.php +++ b/test/php/Nominatim/NominatimTest.php @@ -66,76 +66,6 @@ class NominatimTest extends \PHPUnit_Framework_TestCase } - public function testGetWordSets() - { - // given an array of arrays like - // array( array('a','b'), array('c','d') ) - // returns a summary as string: '(a|b),(c|d)' - - - function serializeSets($aSets) - { - $aParts = array(); - foreach ($aSets as $aSet) { - $aParts[] = '(' . join('|', $aSet) . ')'; - } - return join(',', $aParts); - } - - $this->assertEquals( - array(array('')), - getWordSets(array(), 0) - ); - - $this->assertEquals( - '(a)', - serializeSets(getWordSets(array("a"), 0)) - ); - - $this->assertEquals( - '(a b),(a|b)', - serializeSets(getWordSets(array('a', 'b'), 0)) - ); - - $this->assertEquals( - '(a b c),(a|b c),(a|b|c),(a b|c)', - serializeSets(getWordSets(array('a', 'b', 'c'), 0)) - ); - - $this->assertEquals( - '(a b c d),(a|b c d),(a|b|c d),(a|b|c|d),(a|b c|d),(a b|c d),(a b|c|d),(a b c|d)', - serializeSets(getWordSets(array('a', 'b', 'c', 'd'), 0)) - ); - - - // Inverse - $this->assertEquals( - '(a b c),(c|a b),(c|b|a),(b c|a)', - serializeSets(getInverseWordSets(array('a', 'b', 'c'), 0)) - ); - - - // make sure we don't create too many sets - // 4 words => 8 sets - // 10 words => 511 sets - // 15 words => 12911 sets - // 18 words => 65536 sets - // 20 words => 169766 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)) - ); - - - $this->assertEquals( - 41226, - count(getWordSets(array_fill(0, 18, 'a'), 0)) - ); - } - - public function testCreatePointsAroundCenter() { // you might say we're creating a circle diff --git a/test/php/Nominatim/PhraseTest.php b/test/php/Nominatim/PhraseTest.php new file mode 100644 index 00000000..db8d8b50 --- /dev/null +++ b/test/php/Nominatim/PhraseTest.php @@ -0,0 +1,87 @@ +assertEquals( + array(array('')), + $oPhrase->getWordSets() + ); + } + + + public function testSingleWordPhrase() + { + $oPhrase = new Phrase('a', ''); + + $this->assertEquals( + '(a)', + $this->serializeSets($oPhrase->getWordSets()) + ); + } + + + public function testMultiWordPhrase() + { + $oPhrase = new Phrase('a b', ''); + $this->assertEquals( + '(a b),(a|b)', + $this->serializeSets($oPhrase->getWordSets()) + ); + + $oPhrase = new Phrase('a b c', ''); + $this->assertEquals( + '(a b c),(a|b c),(a|b|c),(a b|c)', + $this->serializeSets($oPhrase->getWordSets()) + ); + + $oPhrase = new Phrase('a b c d', ''); + $this->assertEquals( + '(a b c d),(a|b c d),(a|b|c d),(a|b|c|d),(a|b c|d),(a b|c d),(a b|c|d),(a b c|d)', + $this->serializeSets($oPhrase->getWordSets()) + ); + } + + + public function testInverseWordSets() + { + $oPhrase = new Phrase('a b c', ''); + $oPhrase->invertWordSets(); + + $this->assertEquals( + '(a b c),(c|a b),(c|b|a),(b c|a)', + $this->serializeSets($oPhrase->getWordSets()) + ); + } + + + public function testMaxDepth() + { + $oPhrase = new Phrase(join(' ', array_fill(0, 4, 'a')), ''); + $this->assertEquals(8, count($oPhrase->getWordSets())); + $oPhrase->invertWordSets(); + $this->assertEquals(8, count($oPhrase->getWordSets())); + + $oPhrase = new Phrase(join(' ', array_fill(0, 18, 'a')), ''); + $this->assertEquals(41226, count($oPhrase->getWordSets())); + $oPhrase->invertWordSets(); + $this->assertEquals(41226, count($oPhrase->getWordSets())); + } +}