09cc6a433cddd36d28d78fa4c09fc9f2542450da
[graph.njae.git] / spec / graph / graph_spec.rb
1 require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
3 module GraphNjae
4
5 class SVertex < Vertex
6 end
7
8 class SEdge < Edge
9 end
10
11 describe Graph do
12 let (:g) { Graph.new }
13 describe "#initialize" do
14 it "creates an empty graph" do
15 g = Graph.new
16 g.edges.should be_empty
17 g.vertices.should be_empty
18 end
19 end # #initialize
20
21 describe "adds attribues" do
22 it "adds then reports arbitrary attributes" do
23 g.score = 15
24 g.score == 15
25 end
26 end # adds attributes
27
28 describe "#<<" do
29 it "adds a set of vertices" do
30 g.vertices.should be_empty
31 v1 = Vertex.new
32 v2 = Vertex.new
33 g << v1 << v2
34 g.should have(2).vertices
35 g.vertices.should include(v1)
36 g.vertices.should include(v2)
37 end
38
39 it "adds a set of edges" do
40 g.edges.should be_empty
41 e1 = Edge.new
42 e2 = Edge.new
43 g << e1 << e2
44 g.should have(2).edges
45 g.edges.should include(e1)
46 g.edges.should include(e2)
47 end
48
49 it "adds a mixed set of vertices and edges" do
50 g.vertices.should be_empty
51 g.edges.should be_empty
52 v1 = Vertex.new
53 v2 = Vertex.new
54 e1 = Edge.new
55 e2 = Edge.new
56 g << v1 << e1 << v2 << e2
57 g.should have(2).vertices
58 g.vertices.should include(v1)
59 g.vertices.should include(v2)
60 g.should have(2).edges
61 g.edges.should include(e1)
62 g.edges.should include(e2)
63 end
64
65 it "adds a subclass of Vertex" do
66 g.vertices.should be_empty
67 v1 = SVertex.new
68 v2 = SVertex.new
69 g << v1 << v2
70 g.should have(2).vertices
71 g.vertices.should include(v1)
72 g.vertices.should include(v2)
73 end
74 end # #<<
75
76 describe "connect" do
77 it "adds and records an edge between vertices" do
78 end
79 end # #connect
80
81 end
82 end