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); }
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]; }
protected function __construct($vertices, $edges) { $this->vertices = Vertices::factory($vertices); $this->edges = Edges::factory($edges); }