/** * @dataProvider add_edge_provider * * @param Graph $graph * @param Vertex $source * @param Vertex $target * @param bool $expected_return * @param array $expected_vertices */ public function testAddEdge(Graph $graph, Vertex $source, Vertex $target, $expected_return, $expected_vertices) { $this->assertEquals($expected_return, $graph->add_edge($source, $target)); foreach ($expected_vertices as $vertex) { $this->assertTrue($graph->get_vertices()->contains($vertex)); $this->assertTrue($source->outgoing_edges->contains($graph->get_edge($source, $target))); $this->assertTrue($target->incoming_edges->contains($graph->get_edge($source, $target))); } $this->assertTrue($graph->has_edge($source, $target)); }