Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / CommitOrderCalculatorTest.php
1 <?php
2
3 namespace Doctrine\Tests\ORM;
4
5 use Doctrine\ORM\Mapping\ClassMetadata;
6
7 require_once __DIR__ . '/../TestInit.php';
8
9 /**
10  * Tests of the commit order calculation.
11  *
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.
15  */
16 class CommitOrderCalculatorTest extends \Doctrine\Tests\OrmTestCase
17 {
18     private $_calc;
19
20     protected function setUp()
21     {
22         $this->_calc = new \Doctrine\ORM\Internal\CommitOrderCalculator();
23     }
24
25     public function testCommitOrdering1()
26     {
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');
32
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);
38
39         $this->_calc->addDependency($class1, $class2);
40         $this->_calc->addDependency($class2, $class3);
41         $this->_calc->addDependency($class3, $class4);
42         $this->_calc->addDependency($class5, $class1);
43
44         $sorted = $this->_calc->getCommitOrder();
45
46         // There is only 1 valid ordering for this constellation
47         $correctOrder = array($class5, $class1, $class2, $class3, $class4);
48         $this->assertSame($correctOrder, $sorted);
49     }
50 }
51
52 class NodeClass1 {}
53 class NodeClass2 {}
54 class NodeClass3 {}
55 class NodeClass4 {}
56 class NodeClass5 {}