Exemple #1
0
 public function testFactory()
 {
     // 1 -> 1
     $graph = new Graph();
     $v1 = $graph->createVertex(1);
     $e1 = $v1->createEdgeTo($v1);
     $edgesFromArray = $this->createEdges(array($e1));
     $this->assertInstanceOf('Fhaculty\\Graph\\Set\\Edges', $edgesFromArray);
     $this->assertSame($e1, $edgesFromArray->getEdgeFirst());
     $edgesFromEdges = Edges::factory($edgesFromArray);
     $this->assertSame($edgesFromArray, $edgesFromEdges);
 }
Exemple #2
0
 private function getEdgeCloneInternal(Edge $edge, Vertex $startVertex, Vertex $targetVertex)
 {
     // Get original vertices from resultgraph
     $residualGraphEdgeStartVertex = $this->getVertex($startVertex->getId());
     $residualGraphEdgeTargetVertex = $this->getVertex($targetVertex->getId());
     // Now get the edge
     $residualEdgeArray = $residualGraphEdgeStartVertex->getEdgesTo($residualGraphEdgeTargetVertex);
     $residualEdgeArray = Edges::factory($residualEdgeArray)->getVector();
     // Check for parallel edges
     if (!$residualEdgeArray) {
         throw new UnderflowException('No original edges for given cloned edge found');
     } elseif (count($residualEdgeArray) !== 1) {
         throw new OverflowException('More than one cloned edge? Parallel edges (multigraph) not supported');
     }
     return $residualEdgeArray[0];
 }
Exemple #3
0
 protected function __construct($vertices, $edges)
 {
     $this->vertices = Vertices::factory($vertices);
     $this->edges = Edges::factory($edges);
 }