public function testDfs() { $model = new \Magento\Framework\Data\Graph([1, 2, 3, 4, 5], [[1, 2], [2, 3], [4, 5]]); // directional $this->assertEquals([1, 2, 3], $model->dfs(1, 3)); $this->assertEquals([], $model->dfs(3, 1)); $this->assertEquals([4, 5], $model->dfs(4, 5)); $this->assertEquals([], $model->dfs(1, 5)); // inverse $this->assertEquals([3, 2, 1], $model->dfs(3, 1, \Magento\Framework\Data\Graph::INVERSE)); // non-directional $model = new \Magento\Framework\Data\Graph([1, 2, 3], [[2, 1], [2, 3]]); $this->assertEquals([], $model->dfs(1, 3, \Magento\Framework\Data\Graph::DIRECTIONAL)); $this->assertEquals([], $model->dfs(3, 1, \Magento\Framework\Data\Graph::INVERSE)); $this->assertEquals([1, 2, 3], $model->dfs(1, 3, \Magento\Framework\Data\Graph::NON_DIRECTIONAL)); }
public function testFindPathsToReachableNodes() { $model = new \Magento\Framework\Data\Graph([1, 2, 3, 4, 5], [[1, 2], [1, 3], [1, 4], [4, 5]]); // directional $paths = $model->findPathsToReachableNodes(1); ksort($paths); $this->assertEquals([1 => [1], 2 => [1, 2], 3 => [1, 3], 4 => [1, 4], 5 => [1, 4, 5]], $paths); // inverse $paths = $model->findPathsToReachableNodes(5, \Magento\Framework\Data\Graph::INVERSE); ksort($paths); $this->assertEquals([1 => [5, 4, 1], 4 => [5, 4], 5 => [5]], $paths); // non-directional $paths = $model->findPathsToReachableNodes(5, \Magento\Framework\Data\Graph::NON_DIRECTIONAL); ksort($paths); $this->assertEquals([1 => [5, 4, 1], 2 => [5, 4, 1, 2], 3 => [5, 4, 1, 3], 4 => [5, 4], 5 => [5]], $paths); }
public function testDfs() { $model = new \Magento\Framework\Data\Graph(array(1, 2, 3, 4, 5), array(array(1, 2), array(2, 3), array(4, 5))); // directional $this->assertEquals(array(1, 2, 3), $model->dfs(1, 3)); $this->assertEquals(array(), $model->dfs(3, 1)); $this->assertEquals(array(4, 5), $model->dfs(4, 5)); $this->assertEquals(array(), $model->dfs(1, 5)); // inverse $this->assertEquals(array(3, 2, 1), $model->dfs(3, 1, \Magento\Framework\Data\Graph::INVERSE)); // non-directional $model = new \Magento\Framework\Data\Graph(array(1, 2, 3), array(array(2, 1), array(2, 3))); $this->assertEquals(array(), $model->dfs(1, 3, \Magento\Framework\Data\Graph::DIRECTIONAL)); $this->assertEquals(array(), $model->dfs(3, 1, \Magento\Framework\Data\Graph::INVERSE)); $this->assertEquals(array(1, 2, 3), $model->dfs(1, 3, \Magento\Framework\Data\Graph::NON_DIRECTIONAL)); }