8 class GraphTest extends \PHPUnit\Framework\TestCase
18 new \Magento\Framework\Data\Graph($nodes, $relations);
27 'duplicate nodes' => [[1, 2, 2], []],
28 'self-link' => [[1, 2], [[1, 2], [2, 2]]],
29 'broken reference "from"' => [[1, 2], [[1, 2], [3, 1]]],
30 'broken reference "to"' => [[1, 2], [[1, 2], [1, 3]]]
39 $model = new \Magento\Framework\Data\Graph([1, 2, 3], [[1, 2], [2, 3]]);
40 $this->assertEquals([1 => [2 => 2], 2 => [3 => 3]],
$model->getRelations());
42 $this->assertEquals([1 => [2 => 2], 2 => [3 => 3], 3 => [1 => 1]],
$model->getRelations());
50 $model = new \Magento\Framework\Data\Graph([1, 2, 3], [[1, 2], [2, 3]]);
52 [2 => [1 => 1], 3 => [2 => 2]],
58 [1 => [2 => 2], 2 => [1 => 1, 3 => 3], 3 => [2 => 2]],
65 $nodes = [1, 2, 3, 4];
66 $model = new \Magento\Framework\Data\Graph($nodes, [[1, 2], [2, 3], [3, 4]]);
67 $this->assertEquals([],
$model->findCycle());
69 $model = new \Magento\Framework\Data\Graph($nodes, [[1, 2], [2, 3], [3, 4], [4, 2]]);
70 $this->assertEquals([],
$model->findCycle(1));
71 $cycle =
$model->findCycle();
73 $this->assertEquals([2, 2, 3, 4], $cycle);
74 $this->assertEquals([3, 4, 2, 3],
$model->findCycle(3));
76 $model = new \Magento\Framework\Data\Graph(
78 [[1, 2], [2, 3], [3, 4], [4, 2], [3, 1]]
81 $cycles =
$model->findCycle(
null,
false);
83 [[1, 2, 3, 1], [2, 3, 4, 2], [3, 4, 2, 3], [4, 2, 3, 4]],
90 $model = new \Magento\Framework\Data\Graph([1, 2, 3, 4, 5], [[1, 2], [2, 3], [4, 5]]);
93 $this->assertEquals([1, 2, 3],
$model->dfs(1, 3));
94 $this->assertEquals([],
$model->dfs(3, 1));
95 $this->assertEquals([4, 5],
$model->dfs(4, 5));
96 $this->assertEquals([],
$model->dfs(1, 5));
102 $model = new \Magento\Framework\Data\Graph([1, 2, 3], [[2, 1], [2, 3]]);
110 $model = new \Magento\Framework\Data\Graph([1, 2, 3, 4, 5], [[1, 2], [1, 3], [1, 4], [4, 5]]);
115 $this->assertEquals([1 => [1], 2 => [1, 2], 3 => [1, 3], 4 => [1, 4], 5 => [1, 4, 5]],
$paths);
120 $this->assertEquals([1 => [5, 4, 1], 4 => [5, 4], 5 => [5]],
$paths);
125 $this->assertEquals([1 => [5, 4, 1], 2 => [5, 4, 1, 2], 3 => [5, 4, 1, 3], 4 => [5, 4], 5 => [5]],
$paths);
testFindPathsToReachableNodes()
testConstructorError($nodes, $relations)
constructorErrorDataProvider()