assertEqualsSql('field = other_field', $expr->sql(new ValueBinder())); $expr = new ComparisonExpression(new IdentifierExpression('field'), new IdentifierExpression('other_field')); $this->assertEqualsSql('field = other_field', $expr->sql(new ValueBinder())); $expr = new ComparisonExpression(new IdentifierExpression('field'), new QueryExpression(['other_field'])); $this->assertEqualsSql('field = (other_field)', $expr->sql(new ValueBinder())); $expr = new ComparisonExpression(new IdentifierExpression('field'), 'value'); $this->assertEqualsSql('field = :c0', $expr->sql(new ValueBinder())); $expr = new ComparisonExpression(new QueryExpression(['field']), new IdentifierExpression('other_field')); $this->assertEqualsSql('field = other_field', $expr->sql(new ValueBinder())); } /** * Tests that cloning Comparion instance clones it's value and field expressions. */ public function testClone(): void { $exp = new ComparisonExpression(new QueryExpression('field1'), 1, 'integer', '<'); $exp2 = clone $exp; $this->assertNotSame($exp->getField(), $exp2->getField()); } }