Fix tests.

This commit is contained in:
James Cole
2025-02-06 08:56:58 +01:00
parent 5e6e932e7e
commit df19f699d4
3 changed files with 43 additions and 6 deletions

View File

@@ -55,4 +55,36 @@ abstract class Node
return $this->prohibited;
}
public function equals(Node $compare): bool
{
if ($compare->isProhibited(false) !== $this->isProhibited(false)) {
Log::debug('Return false because prohibited status is different');
return false;
}
if ($compare instanceof NodeGroup) {
if (count($compare->getNodes()) !== count($this->getNodes())) {
Log::debug(sprintf('Return false because node count is different. Original is %d, compare is %d', count($this->getNodes()), count($compare->getNodes())));
// var_dump($this);
// var_dump($compare);
// exit;
return false;
}
/**
* @var int $index
* @var Node $node
*/
foreach ($this->getNodes() as $index => $node) {
if (false === $node->equals($compare->getNodes()[$index])) {
Log::debug('Return false because nodes are different!');
var_dump($this);
var_dump($compare);
exit;
return false;
}
}
return true;
}
return true;
}
}

View File

@@ -71,6 +71,7 @@ class QueryParser implements QueryParserInterface
while ($this->position < strlen($this->query)) {
$char = $this->query[$this->position];
//Log::debug(sprintf('Char #%d: %s', $this->position, $char));
// If we're in a quoted string, we treat all characters except another quote as ordinary characters
if ($inQuotes) {
@@ -150,15 +151,19 @@ class QueryParser implements QueryParserInterface
case ':':
if ('' !== $tokenUnderConstruction) {
$skipNext = false;
if ('' === $tokenUnderConstruction) { // @phpstan-ignore-line
// In any other location, it's just a normal character
$tokenUnderConstruction .= $char;
$skipNext = true;
}
if ('' !== $tokenUnderConstruction && !$skipNext) {
Log::debug(sprintf('Turns out that "%s" is a field name. Reset the token.', $tokenUnderConstruction));
// If we meet a colon with a left-hand side string, we know we're in a field and are about to set up the value
$fieldName = $tokenUnderConstruction;
$tokenUnderConstruction = '';
}
if ('' === $tokenUnderConstruction) { // @phpstan-ignore-line
// In any other location, it's just a normal character
$tokenUnderConstruction .= $char;
}
break;

View File

@@ -192,7 +192,7 @@ abstract class AbstractQueryParserInterfaceParseQueryTest extends TestCase
{
$actual = $this->createParser()->parse($query);
self::assertSame($expected, $actual);
self::assertObjectEquals($expected, $actual);
}
}