at the end of the day, it was inevitable
This commit is contained in:
@@ -0,0 +1,252 @@
|
||||
<?php
|
||||
|
||||
namespace IndexBundle\Normalizer\Query;
|
||||
|
||||
use Tests\AppTestCase;
|
||||
|
||||
/**
|
||||
* Class QueryNormalizerTest
|
||||
* @package AppBundle\Search\Request\Normalizer
|
||||
*/
|
||||
class QueryNormalizerTest extends AppTestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @var QueryNormalizer
|
||||
*/
|
||||
private $normalizer;
|
||||
|
||||
/**
|
||||
* Sets up the fixture, for example, open a network connection.
|
||||
* This method is called before a test is executed.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
$this->normalizer = new QueryNormalizer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider queriesProvider
|
||||
*
|
||||
* @param string $query1 First search query.
|
||||
* @param string $query2 Second search query.
|
||||
* @param boolean $expects Match or don't.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGenerateUniqueKey($query1, $query2, $expects)
|
||||
{
|
||||
$query1 = $this->normalizer->normalize($query1);
|
||||
$query2 = $this->normalizer->normalize($query2);
|
||||
|
||||
$message = "Key's must be ". ($expects ? 'same' : 'differ')
|
||||
.', but first query is '. $query1 .' and second is '. $query2;
|
||||
$this->assertEquals($query1 === $query2, $expects, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function queriesProvider()
|
||||
{
|
||||
return [
|
||||
'cat dog === dog cat' => [
|
||||
'cat dog',
|
||||
'dog cat',
|
||||
true,
|
||||
],
|
||||
'cat~ dog~0.8 === dog~0.8 cat~' => [
|
||||
'cat~ dog~0.8',
|
||||
'dog~0.8 cat~',
|
||||
true,
|
||||
],
|
||||
'cat~ dog~0.7 !== dog~0.8 cat~' => [
|
||||
'cat~ dog~0.7',
|
||||
'dog~0.8 cat~',
|
||||
false,
|
||||
],
|
||||
'ca?t dog === dog ca?t' => [
|
||||
'ca?t dog',
|
||||
'dog ca?t',
|
||||
true,
|
||||
],
|
||||
'c?at dog !== dog ca?t' => [
|
||||
'c?at dog',
|
||||
'dog ca?t',
|
||||
false,
|
||||
],
|
||||
'cat^4 dog === dog cat^4' => [
|
||||
'cat^4 dog',
|
||||
'dog cat^4',
|
||||
true,
|
||||
],
|
||||
'cat^3 dog !== dog cat^4' => [
|
||||
'cat^3 dog',
|
||||
'dog cat^4',
|
||||
false,
|
||||
],
|
||||
'* dog === dog *' => [
|
||||
'* dog',
|
||||
'dog *',
|
||||
true,
|
||||
],
|
||||
'+cat dog === dog +cat' => [
|
||||
'+cat dog',
|
||||
'dog +cat',
|
||||
true,
|
||||
],
|
||||
'NOT cat AND dog === dog AND NOT cat' => [
|
||||
'NOT cat AND dog',
|
||||
'dog AND NOT cat',
|
||||
true,
|
||||
],
|
||||
'NOT (cat AND (dog OR fish)) === NOT ((fish OR dog) AND cat)' => [
|
||||
'NOT (cat AND (dog OR fish))',
|
||||
'NOT ((fish OR dog) AND cat)',
|
||||
true,
|
||||
],
|
||||
' AND or NOT !== NOT or AND' => [
|
||||
' AND or NOT',
|
||||
'NOT or AND',
|
||||
false,
|
||||
],
|
||||
'OR AND NOT === NOT OR AND' => [
|
||||
'OR AND NOT',
|
||||
'NOT OR AND',
|
||||
true,
|
||||
],
|
||||
'NOT cat !== cat NOT' => [
|
||||
'NOT cat',
|
||||
'cat NOT',
|
||||
false,
|
||||
],
|
||||
'cat AND dog !== cat and dog' => [
|
||||
'cat AND dog',
|
||||
'cat and dog',
|
||||
false,
|
||||
],
|
||||
'"cat fly" AND dog === dog AND "cat fly"' => [
|
||||
'"cat fly" AND dog',
|
||||
'dog AND "cat fly"',
|
||||
true,
|
||||
],
|
||||
'"cat fly"^3 AND dog === dog AND "cat fly"^3' => [
|
||||
'"cat fly"^3 AND dog',
|
||||
'dog AND "cat fly"^3',
|
||||
true,
|
||||
],
|
||||
'"cat fly"^4 AND dog !== dog AND "cat fly"^3' => [
|
||||
'"cat fly"^4 AND dog',
|
||||
'dog AND "cat fly"^3',
|
||||
false,
|
||||
],
|
||||
'"cat fly"~0.4 AND dog === dog AND "cat fly"~0.4' => [
|
||||
'"cat fly"~0.4 AND dog',
|
||||
'dog AND "cat fly"~0.4',
|
||||
true,
|
||||
],
|
||||
'"cat fly"~0.3 AND dog !== dog AND "cat fly"~0.4' => [
|
||||
'"cat fly"~0.3 AND dog',
|
||||
'dog AND "cat fly"~0.4',
|
||||
false,
|
||||
],
|
||||
'"cat fly"+ AND dog !== dog AND "cat fly"' => [
|
||||
'"cat fly"+ AND dog',
|
||||
'dog AND "cat fly"',
|
||||
false,
|
||||
],
|
||||
'"cat fly"+ AND dog === dog AND "cat fly"+' => [
|
||||
'"cat fly"+ AND dog',
|
||||
'dog AND "cat fly"+',
|
||||
true,
|
||||
],
|
||||
'cat AND dog !== cat dog' => [
|
||||
'cat AND dog',
|
||||
'cat dog',
|
||||
false,
|
||||
],
|
||||
'cat OR dog === cat dog' => [
|
||||
'cat OR dog',
|
||||
'cat dog',
|
||||
true,
|
||||
],
|
||||
'(cat) dog === cat dog' => [
|
||||
'(cat) dog',
|
||||
'cat dog',
|
||||
true,
|
||||
],
|
||||
'(cat AND dog) === cat AND dog' => [
|
||||
'(cat AND dog)',
|
||||
'cat AND dog',
|
||||
true,
|
||||
],
|
||||
'(cat dog) === dog cat' => [
|
||||
'(cat dog)',
|
||||
'dog cat',
|
||||
true,
|
||||
],
|
||||
'(((cat OR dog))) === cat dog' => [
|
||||
'(((cat OR dog)))',
|
||||
'cat dog',
|
||||
true,
|
||||
],
|
||||
'(cat AND dog) OR fish === cat AND dog OR fish' => [
|
||||
'(cat AND dog) OR fish',
|
||||
'cat AND dog OR fish',
|
||||
true,
|
||||
],
|
||||
'cat AND (dog OR fish) !== cat AND dog OR fish' => [
|
||||
'cat AND (dog OR fish)',
|
||||
'cat AND dog OR fish',
|
||||
false,
|
||||
],
|
||||
'(cat AND dog) (fish AND bird) === (cAt AND dog) (fish AND BIRd)' => [
|
||||
'(cat AND dog) (fish AND bird)',
|
||||
'(cAt AND dog) (fish AND BIRd)',
|
||||
true,
|
||||
],
|
||||
'(cat AND dog) AND bird === cAt AND BIRD AND dOg' => [
|
||||
'(cat AND dog) AND bird',
|
||||
'cAt AND BIRD AND dOg',
|
||||
true,
|
||||
],
|
||||
'(cat OR dog) bird === cAt bird doG' => [
|
||||
'(cat OR dog) bird',
|
||||
'cAt bird doG',
|
||||
true,
|
||||
],
|
||||
'(dog OR dog) AND cat === cat AND doG' => [
|
||||
'(dog OR dog) AND cat',
|
||||
'cat AND doG',
|
||||
true,
|
||||
],
|
||||
'(dog AND dog) AND cat === cat AND doG' => [
|
||||
'(dog AND dog) AND cat',
|
||||
'cat AND doG',
|
||||
true,
|
||||
],
|
||||
'(dog AND dog) AND cat AND (fish OR fish) === fish AND cat AND doG' => [
|
||||
'(dog AND dog) AND cat AND (fish OR fish)',
|
||||
'fish AND cat AND doG',
|
||||
true,
|
||||
],
|
||||
'(dog AND dog) OR (cat AND cat) === dog OR (cat)' => [
|
||||
'(dog AND dog) OR (cat AND cat)',
|
||||
'dog OR (cat)',
|
||||
true,
|
||||
],
|
||||
'"NOT ("dog cat"^3 AND (Alice OR "fish"~0.3)) OR NOT ("dog cat fish"~ AND NOT (+"Alice" OR dog~0.3 OR man^3))' => [
|
||||
'NOT ("dog cat"^3 AND (Alice OR "fish"~0.3)) OR NOT ("dog cat fish"~ AND NOT (+"Alice" OR dog~0.3 OR man^3))',
|
||||
'NOT (NOT (man^3 OR +"Alice" OR dog~0.3) AND "dog cat fish"~) OR NOT ("dog cat"^3 AND ("fish"~0.3 OR Alice))',
|
||||
true,
|
||||
],
|
||||
'+Ethiopia +Sudan -”South Africa” === -”South Africa” +Ethiopia +Sudan' => [
|
||||
'+Ethiopia +Sudan -”South Africa”',
|
||||
'-”South Africa” +Ethiopia +Sudan',
|
||||
true,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user