function GraphUnitTest::testDepthFirstSearch
Test depth-first-search features.
File
-
modules/
simpletest/ tests/ graph.test, line 28
Class
- GraphUnitTest
- Unit tests for the graph handling features.
Code
function testDepthFirstSearch() {
// The sample graph used is:
// 1 --> 2 --> 3 5 ---> 6
// | ^ ^
// | | |
// | | |
// +---> 4 <-- 7 8 ---> 9
$graph = $this->normalizeGraph(array(
1 => array(
2,
),
2 => array(
3,
4,
),
3 => array(),
4 => array(
3,
),
5 => array(
6,
),
7 => array(
4,
5,
),
8 => array(
9,
),
9 => array(),
));
drupal_depth_first_search($graph);
$expected_paths = array(
1 => array(
2,
3,
4,
),
2 => array(
3,
4,
),
3 => array(),
4 => array(
3,
),
5 => array(
6,
),
7 => array(
4,
3,
5,
6,
),
8 => array(
9,
),
9 => array(),
);
$this->assertPaths($graph, $expected_paths);
$expected_reverse_paths = array(
1 => array(),
2 => array(
1,
),
3 => array(
2,
1,
4,
7,
),
4 => array(
2,
1,
7,
),
5 => array(
7,
),
7 => array(),
8 => array(),
9 => array(
8,
),
);
$this->assertReversePaths($graph, $expected_reverse_paths);
// Assert that DFS didn't created "missing" vertexes automatically.
$this->assertFALSE(isset($graph[6]), 'Vertex 6 has not been created');
$expected_components = array(
array(
1,
2,
3,
4,
5,
7,
),
array(
8,
9,
),
);
$this->assertComponents($graph, $expected_components);
$expected_weights = array(
array(
1,
2,
3,
),
array(
2,
4,
3,
),
array(
7,
4,
3,
),
array(
7,
5,
),
array(
8,
9,
),
);
$this->assertWeights($graph, $expected_weights);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.