--- /dev/null
+<?php
+namespace Doctrine\Tests\Common\Collections;
+
+use Doctrine\Common\Collections\ExpressionBuilder;
+use Doctrine\Common\Collections\Expr\Comparison;
+use Doctrine\Common\Collections\Expr\CompositeExpression;
+
+/**
+ * @group DDC-1637
+ */
+class ExpressionBuilderTest extends \PHPUnit_Framework_TestCase
+{
+ private $builder;
+
+ public function setUp()
+ {
+ $this->builder = new ExpressionBuilder();
+ }
+
+ public function testAndX()
+ {
+ $expr = $this->builder->andX($this->builder->eq("a", "b"));
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\CompositeExpression", $expr);
+ $this->assertEquals(CompositeExpression::TYPE_AND, $expr->getType());
+ }
+
+ public function testOrX()
+ {
+ $expr = $this->builder->orX($this->builder->eq("a", "b"));
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\CompositeExpression", $expr);
+ $this->assertEquals(CompositeExpression::TYPE_OR, $expr->getType());
+ }
+
+ public function testInvalidAndXArgument()
+ {
+ $this->setExpectedException("RuntimeException");
+ $this->builder->andX("foo");
+ }
+
+ public function testEq()
+ {
+ $expr = $this->builder->eq("a", "b");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::EQ, $expr->getOperator());
+ }
+
+ public function testNeq()
+ {
+ $expr = $this->builder->neq("a", "b");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::NEQ, $expr->getOperator());
+ }
+
+ public function testLt()
+ {
+ $expr = $this->builder->lt("a", "b");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::LT, $expr->getOperator());
+ }
+
+ public function testGt()
+ {
+ $expr = $this->builder->gt("a", "b");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::GT, $expr->getOperator());
+ }
+
+ public function testGte()
+ {
+ $expr = $this->builder->gte("a", "b");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::GTE, $expr->getOperator());
+ }
+
+ public function testLte()
+ {
+ $expr = $this->builder->lte("a", "b");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::LTE, $expr->getOperator());
+ }
+
+ public function testIn()
+ {
+ $expr = $this->builder->in("a", array("b"));
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::IN, $expr->getOperator());
+ }
+
+ public function testNotIn()
+ {
+ $expr = $this->builder->notIn("a", array("b"));
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::NIN, $expr->getOperator());
+ }
+
+ public function testIsNull()
+ {
+ $expr = $this->builder->isNull("a");
+
+ $this->assertInstanceOf("Doctrine\Common\Collections\Expr\Comparison", $expr);
+ $this->assertEquals(Comparison::IS, $expr->getOperator());
+ }
+}
+