3 namespace Doctrine\Tests\ORM;
5 use Doctrine\ORM\Mapping\ClassMetadata;
7 require_once __DIR__ . '/../TestInit.php';
10 * Tests of the commit order calculation.
12 * IMPORTANT: When writing tests here consider that a lot of graph constellations
13 * can have many valid orderings, so you may want to build a graph that has only
14 * 1 valid order to simplify your tests.
16 class CommitOrderCalculatorTest extends \Doctrine\Tests\OrmTestCase
20 protected function setUp()
22 $this->_calc = new \Doctrine\ORM\Internal\CommitOrderCalculator();
25 public function testCommitOrdering1()
27 $class1 = new ClassMetadata(__NAMESPACE__ . '\NodeClass1');
28 $class2 = new ClassMetadata(__NAMESPACE__ . '\NodeClass2');
29 $class3 = new ClassMetadata(__NAMESPACE__ . '\NodeClass3');
30 $class4 = new ClassMetadata(__NAMESPACE__ . '\NodeClass4');
31 $class5 = new ClassMetadata(__NAMESPACE__ . '\NodeClass5');
33 $this->_calc->addClass($class1);
34 $this->_calc->addClass($class2);
35 $this->_calc->addClass($class3);
36 $this->_calc->addClass($class4);
37 $this->_calc->addClass($class5);
39 $this->_calc->addDependency($class1, $class2);
40 $this->_calc->addDependency($class2, $class3);
41 $this->_calc->addDependency($class3, $class4);
42 $this->_calc->addDependency($class5, $class1);
44 $sorted = $this->_calc->getCommitOrder();
46 // There is only 1 valid ordering for this constellation
47 $correctOrder = array($class5, $class1, $class2, $class3, $class4);
48 $this->assertSame($correctOrder, $sorted);