Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / CommitOrderCalculatorTest.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/CommitOrderCalculatorTest.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/CommitOrderCalculatorTest.php
new file mode 100644 (file)
index 0000000..ff82059
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+namespace Doctrine\Tests\ORM;
+
+use Doctrine\ORM\Mapping\ClassMetadata;
+
+require_once __DIR__ . '/../TestInit.php';
+
+/**
+ * Tests of the commit order calculation.
+ *
+ * IMPORTANT: When writing tests here consider that a lot of graph constellations
+ * can have many valid orderings, so you may want to build a graph that has only
+ * 1 valid order to simplify your tests.
+ */
+class CommitOrderCalculatorTest extends \Doctrine\Tests\OrmTestCase
+{
+    private $_calc;
+
+    protected function setUp()
+    {
+        $this->_calc = new \Doctrine\ORM\Internal\CommitOrderCalculator();
+    }
+
+    public function testCommitOrdering1()
+    {
+        $class1 = new ClassMetadata(__NAMESPACE__ . '\NodeClass1');
+        $class2 = new ClassMetadata(__NAMESPACE__ . '\NodeClass2');
+        $class3 = new ClassMetadata(__NAMESPACE__ . '\NodeClass3');
+        $class4 = new ClassMetadata(__NAMESPACE__ . '\NodeClass4');
+        $class5 = new ClassMetadata(__NAMESPACE__ . '\NodeClass5');
+
+        $this->_calc->addClass($class1);
+        $this->_calc->addClass($class2);
+        $this->_calc->addClass($class3);
+        $this->_calc->addClass($class4);
+        $this->_calc->addClass($class5);
+
+        $this->_calc->addDependency($class1, $class2);
+        $this->_calc->addDependency($class2, $class3);
+        $this->_calc->addDependency($class3, $class4);
+        $this->_calc->addDependency($class5, $class1);
+
+        $sorted = $this->_calc->getCommitOrder();
+
+        // There is only 1 valid ordering for this constellation
+        $correctOrder = array($class5, $class1, $class2, $class3, $class4);
+        $this->assertSame($correctOrder, $sorted);
+    }
+}
+
+class NodeClass1 {}
+class NodeClass2 {}
+class NodeClass3 {}
+class NodeClass4 {}
+class NodeClass5 {}
\ No newline at end of file