diff --git a/lib/mosaik/graph/vertex.rb b/lib/mosaik/graph/vertex.rb index ab7eb89..cb351ba 100644 --- a/lib/mosaik/graph/vertex.rb +++ b/lib/mosaik/graph/vertex.rb @@ -10,12 +10,12 @@ class Vertex def initialize(id, attributes = {}) @id = id - @edges = {} + @edges = Hash.new { |h, k| h[k] = [] } @attributes = attributes end def add_edge(to, **attributes) - edges[to] = Edge.new(attributes) + edges[to] << Edge.new(attributes) end def remove_edge(id) diff --git a/spec/mosaik/graph/graph_spec.rb b/spec/mosaik/graph/graph_spec.rb index df33ff1..327ee52 100644 --- a/spec/mosaik/graph/graph_spec.rb +++ b/spec/mosaik/graph/graph_spec.rb @@ -32,16 +32,17 @@ graph.add_directed_edge("vertex1", "vertex2", key: "value") expect(graph.find_vertex("vertex1").edges.keys).to eq ["vertex2"] - expect(graph.find_vertex("vertex1").edges["vertex2"].attributes).to eq key: "value" + expect(graph.find_vertex("vertex1").edges["vertex2"].first.attributes).to eq key: "value" end - it "does not add a directed edge twice" do + it "adds a directed edge twice" do graph.add_vertex("vertex1") graph.add_vertex("vertex2") graph.add_directed_edge("vertex1", "vertex2") graph.add_directed_edge("vertex1", "vertex2") expect(graph.find_vertex("vertex1").edges.keys).to eq ["vertex2"] + expect(graph.find_vertex("vertex1").edges["vertex2"].size).to eq 2 end end @@ -60,16 +61,17 @@ graph.add_undirected_edge("vertex1", "vertex2", key: "value") expect(graph.find_vertex("vertex1").edges.keys).to eq ["vertex2"] - expect(graph.find_vertex("vertex1").edges["vertex2"].attributes).to eq key: "value" + expect(graph.find_vertex("vertex1").edges["vertex2"].first.attributes).to eq key: "value" end - it "does not add an undirected edge twice" do + it "adds an undirected edge twice" do graph.add_vertex("vertex1") graph.add_vertex("vertex2") graph.add_undirected_edge("vertex1", "vertex2") graph.add_undirected_edge("vertex1", "vertex2") expect(graph.find_vertex("vertex1").edges.keys).to eq ["vertex2"] + expect(graph.find_vertex("vertex1").edges["vertex2"].size).to eq 2 end end diff --git a/spec/mosaik/graph/vertex_spec.rb b/spec/mosaik/graph/vertex_spec.rb index b716812..c9552bd 100644 --- a/spec/mosaik/graph/vertex_spec.rb +++ b/spec/mosaik/graph/vertex_spec.rb @@ -20,14 +20,15 @@ vertex.add_edge("child", key: "value") expect(vertex.edges.keys).to eq ["child"] - expect(vertex.edges["child"].attributes).to eq key: "value" + expect(vertex.edges["child"].first.attributes).to eq key: "value" end - it "does not add an edge twice" do + it "adds an edge twice" do vertex.add_edge("child") vertex.add_edge("child") expect(vertex.edges.keys).to eq ["child"] + expect(vertex.edges["child"].size).to eq 2 end end end