Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / dbal / tests / Doctrine / Tests / DBAL / Query / Expression / CompositeExpressionTest.php
diff --git a/vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Query/Expression/CompositeExpressionTest.php b/vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Query/Expression/CompositeExpressionTest.php
new file mode 100644 (file)
index 0000000..9939659
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+namespace Doctrine\Tests\DBAL\Query\Expression;
+
+use Doctrine\DBAL\Query\Expression\CompositeExpression;
+
+require_once __DIR__ . '/../../../TestInit.php';
+
+/**
+ * @group DBAL-12
+ */
+class CompositeExpressionTest extends \Doctrine\Tests\DbalTestCase
+{
+    public function testCount()
+    {
+        $expr = new CompositeExpression(CompositeExpression::TYPE_OR, array('u.group_id = 1'));
+
+        $this->assertEquals(1, count($expr));
+
+        $expr->add('u.group_id = 2');
+
+        $this->assertEquals(2, count($expr));
+    }
+
+    /**
+     * @dataProvider provideDataForConvertToString
+     */
+    public function testCompositeUsageAndGeneration($type, $parts, $expects)
+    {
+        $expr = new CompositeExpression($type, $parts);
+
+        $this->assertEquals($expects, (string) $expr);
+    }
+
+    public function provideDataForConvertToString()
+    {
+        return array(
+            array(
+                CompositeExpression::TYPE_AND,
+                array('u.user = 1'),
+                'u.user = 1'
+            ),
+            array(
+                CompositeExpression::TYPE_AND,
+                array('u.user = 1', 'u.group_id = 1'),
+                '(u.user = 1) AND (u.group_id = 1)'
+            ),
+            array(
+                CompositeExpression::TYPE_OR,
+                array('u.user = 1'),
+                'u.user = 1'
+            ),
+            array(
+                CompositeExpression::TYPE_OR,
+                array('u.group_id = 1', 'u.group_id = 2'),
+                '(u.group_id = 1) OR (u.group_id = 2)'
+            ),
+            array(
+                CompositeExpression::TYPE_AND,
+                array(
+                    'u.user = 1',
+                    new CompositeExpression(
+                        CompositeExpression::TYPE_OR,
+                        array('u.group_id = 1', 'u.group_id = 2')
+                    )
+                ),
+                '(u.user = 1) AND ((u.group_id = 1) OR (u.group_id = 2))'
+            ),
+            array(
+                CompositeExpression::TYPE_OR,
+                array(
+                    'u.group_id = 1',
+                    new CompositeExpression(
+                        CompositeExpression::TYPE_AND,
+                        array('u.user = 1', 'u.group_id = 2')
+                    )
+                ),
+                '(u.group_id = 1) OR ((u.user = 1) AND (u.group_id = 2))'
+            ),
+        );
+    }
+}
\ No newline at end of file