Skip to content

Commit 21f1269

Browse files
committed
Add (failing) test with 100% coverage for Algorithm\Parallel
1 parent 3af5b4a commit 21f1269

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

tests/ParallelTest.php

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
3+
use Fhaculty\Graph\Algorithm\Parallel as AlgorithmParallel;
4+
use Fhaculty\Graph\Graph;
5+
6+
class ParallelTest extends TestCase
7+
{
8+
public function testGraphEmpty()
9+
{
10+
$graph = new Graph();
11+
12+
$alg = new AlgorithmParallel($graph);
13+
14+
$this->assertFalse($alg->hasEdgeParallel());
15+
}
16+
17+
public function testDirectedCycleIsNotConsideredParallel()
18+
{
19+
// 1 -> 2
20+
// 2 -> 1
21+
$graph = new Graph();
22+
$v1 = $graph->createVertex(1);
23+
$v2 = $graph->createVertex(2);
24+
$e1 = $v1->createEdgeTo($v2);
25+
$e2 = $v2->createEdgeTo($v1);
26+
27+
$alg = new AlgorithmParallel($graph);
28+
29+
$this->assertFalse($alg->hasEdgeParallel());
30+
$this->assertEquals(array(), $alg->getEdgesParallelEdge($e1));
31+
$this->assertEquals(array(), $alg->getEdgesParallelEdge($e2));
32+
}
33+
34+
public function testDirectedParallelEdge()
35+
{
36+
// 1 -> 2
37+
// 1 -> 2
38+
$graph = new Graph();
39+
$v1 = $graph->createVertex(1);
40+
$v2 = $graph->createVertex(2);
41+
$e1 = $v1->createEdgeTo($v2);
42+
$e2 = $v1->createEdgeTo($v2);
43+
44+
$alg = new AlgorithmParallel($graph);
45+
46+
$this->assertTrue($alg->hasEdgeParallel());
47+
$this->assertEquals(array($e2), $alg->getEdgesParallelEdge($e1));
48+
$this->assertEquals(array($e1), $alg->getEdgesParallelEdge($e2));
49+
}
50+
51+
public function testMixedParallelEdge()
52+
{
53+
// 1 -> 2
54+
// 1 -- 2
55+
$graph = new Graph();
56+
$v1 = $graph->createVertex(1);
57+
$v2 = $graph->createVertex(2);
58+
$e1 = $v1->createEdgeTo($v2);
59+
$e2 = $v1->createEdge($v2);
60+
61+
$alg = new AlgorithmParallel($graph);
62+
63+
$this->assertTrue($alg->hasEdgeParallel());
64+
$this->assertEquals(array($e2), $alg->getEdgesParallelEdge($e1));
65+
$this->assertEquals(array($e1), $alg->getEdgesParallelEdge($e2));
66+
}
67+
68+
public function testMixedParallelEdgesMultiple()
69+
{
70+
// 1 -> 2
71+
// 1 -> 2
72+
// 1 -- 2
73+
// 1 -- 2
74+
// 2 -> 1
75+
// 2 -> 1
76+
$graph = new Graph();
77+
$v1 = $graph->createVertex(1);
78+
$v2 = $graph->createVertex(2);
79+
$e1 = $v1->createEdgeTo($v2);
80+
$e2 = $v1->createEdgeTo($v2);
81+
$e3 = $v1->createEdge($v2);
82+
$e4 = $v1->createEdge($v2);
83+
$e5 = $v2->createEdgeTo($v1);
84+
$e6 = $v2->createEdgeTo($v1);
85+
86+
$alg = new AlgorithmParallel($graph);
87+
88+
$this->assertTrue($alg->hasEdgeParallel());
89+
$this->assertEquals(array($e2, $e3, $e4), $alg->getEdgesParallelEdge($e1));
90+
$this->assertEquals(array($e1, $e3, $e4), $alg->getEdgesParallelEdge($e2));
91+
$this->assertEquals(array($e1, $e2, $e4, $e5, $e6), $alg->getEdgesParallelEdge($e3));
92+
$this->assertEquals(array($e1, $e2, $e3, $e5, $e6), $alg->getEdgesParallelEdge($e4));
93+
$this->assertEquals(array($e3, $e4, $e6), $alg->getEdgesParallelEdge($e5));
94+
$this->assertEquals(array($e3, $e4, $e5), $alg->getEdgesParallelEdge($e6));
95+
}
96+
97+
}

0 commit comments

Comments
 (0)