コード例 #1
0
 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));
 }
コード例 #2
0
ファイル: GraphTest.php プロジェクト: IlyaGluschenko/test001
 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);
 }
コード例 #3
0
 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));
 }