1
0
mirror of synced 2024-12-13 14:56:01 +03:00
doctrine2/tests/Orm/CommitOrderCalculatorTest.php
2009-01-04 16:15:32 +00:00

51 lines
1.5 KiB
PHP

<?php
require_once 'lib/DoctrineTestInit.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 Orm_CommitOrderCalculatorTest extends Doctrine_OrmTestCase
{
private $_calc;
protected function setUp()
{
$this->_calc = new Doctrine_ORM_Internal_CommitOrderCalculator();
}
/** Helper to create an array of nodes */
private function _createNodes(array $names)
{
$nodes = array();
foreach ($names as $name) {
$node = new Doctrine_ORM_Internal_CommitOrderNode($name, $this->_calc);
$nodes[$name] = $node;
$this->_calc->addNode($node->getClass(), $node);
}
return $nodes;
}
public function testCommitOrdering1()
{
$nodes = $this->_createNodes(array("node1", "node2", "node3", "node4", "node5"));
$nodes['node1']->before($nodes['node2']);
$nodes['node2']->before($nodes['node3']);
$nodes['node3']->before($nodes['node4']);
$nodes['node5']->before($nodes['node1']);
shuffle($nodes); // some randomness
$sorted = $this->_calc->getCommitOrder();
// There is only 1 valid ordering for this constellation
$correctOrder = array("node5", "node1", "node2", "node3", "node4");
$this->assertSame($correctOrder, $sorted);
}
}