require 'spec_helper' module Graph describe Edge do let (:e) { Edge.new } describe "#initialize" do it "creates an empty edge" do e = Edge.new e.connections.should be_empty end end # #initialize describe "adds attribues" do it "adds then reports arbitrary attributes" do e.score = 15 e.score.should == 15 end end # adds attributes describe "#<<" do it "adds a new vertex to an edge (with a connection)" do e.connections.should be_empty v1 = Vertex.new v2 = Vertex.new e << v1 e.should have(1).connections e.should have(1).vertices e.vertices.should include(v1) e << v2 e.should have(2).connections e.should have(2).vertices e.vertices.should include(v1) e.vertices.should include(v2) end it "adds several vertices to an edge" do e.connections.should be_empty v1 = Vertex.new v2 = Vertex.new e << v1 << v2 e.vertices.should include(v1) e.vertices.should include(v2) e.should have(2).vertices end it "adds a self-loop" do e.connections.should be_empty v1 = Vertex.new e << v1 << v1 e.vertices.should include(v1) e.should have(2).vertices e.vertices.uniq.length.should == 1 end end # #<< describe "connection_at" do it "returns the connection that links to a vertex" do e.connections.should be_empty v1 = Vertex.new v2 = Vertex.new e << v1 << v2 e.connection_at(v1).end.should be v1 e.connection_at(v2).end.should be v2 end it "returns nil if there is no connection to that vertex" do e.connections.should be_empty v1 = Vertex.new v2 = Vertex.new v3 = Vertex.new e << v1 << v2 e.connection_at(v3).should be nil end end # #connection_at end # Edge describe Connection do let (:c) {Connection.new } describe "adds attribues" do it "adds then reports arbitrary attributes" do c.score = 15 c.score.should == 15 end end # adds attributes end # Connection end