public function testFindCycle() { $nodes = [1, 2, 3, 4]; $model = new \Magento\Framework\Data\Graph($nodes, [[1, 2], [2, 3], [3, 4]]); $this->assertEquals([], $model->findCycle()); $model = new \Magento\Framework\Data\Graph($nodes, [[1, 2], [2, 3], [3, 4], [4, 2]]); $this->assertEquals([], $model->findCycle(1)); $cycle = $model->findCycle(); sort($cycle); $this->assertEquals([2, 2, 3, 4], $cycle); $this->assertEquals([3, 4, 2, 3], $model->findCycle(3)); $model = new \Magento\Framework\Data\Graph($nodes, [[1, 2], [2, 3], [3, 4], [4, 2], [3, 1]]); //find cycles for each node $cycles = $model->findCycle(null, false); $this->assertEquals([[1, 2, 3, 1], [2, 3, 4, 2], [3, 4, 2, 3], [4, 2, 3, 4]], $cycles); }
public function testFindCycle() { $nodes = array(1, 2, 3, 4); $model = new \Magento\Framework\Data\Graph($nodes, array(array(1, 2), array(2, 3), array(3, 4))); $this->assertEquals(array(), $model->findCycle()); $model = new \Magento\Framework\Data\Graph($nodes, array(array(1, 2), array(2, 3), array(3, 4), array(4, 2))); $this->assertEquals(array(), $model->findCycle(1)); $cycle = $model->findCycle(); sort($cycle); $this->assertEquals(array(2, 2, 3, 4), $cycle); $this->assertEquals(array(3, 4, 2, 3), $model->findCycle(3)); $model = new \Magento\Framework\Data\Graph($nodes, array(array(1, 2), array(2, 3), array(3, 4), array(4, 2), array(3, 1))); //find cycles for each node $cycles = $model->findCycle(null, false); $this->assertEquals(array(array(1, 2, 3, 1), array(2, 3, 4, 2), array(3, 4, 2, 3), array(4, 2, 3, 4)), $cycles); }