5da61f5ef1b2bd627e0d285bb873401c6ea28c17
[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
20 it "creates a graph with some parameters" do
21 g = Graph.new :value1 => 1, :value2 => "value2", :value3 => :v3
22 g.value1.should == 1
23 g.value2.should == "value2"
24 g.value3.should == :v3
25 g.value4.should be_nil
26 end
27
28 end # #initialize
29
30 describe "adds attribues" do
31 it "adds then reports arbitrary attributes" do
32 g.score = 15
33 g.score == 15
34 end
35 end # adds attributes
36
37 describe "#<<" do
38 it "adds a set of vertices" do
39 g.vertices.should be_empty
40 v1 = Vertex.new
41 v2 = Vertex.new
42 g << v1 << v2
43 g.should have(2).vertices
44 g.vertices.should include(v1)
45 g.vertices.should include(v2)
46 end
47
48 it "adds a set of edges" do
49 g.edges.should be_empty
50 e1 = Edge.new
51 e2 = Edge.new
52 g << e1 << e2
53 g.should have(2).edges
54 g.edges.should include(e1)
55 g.edges.should include(e2)
56 end
57
58 it "adds a mixed set of vertices and edges" do
59 g.vertices.should be_empty
60 g.edges.should be_empty
61 v1 = Vertex.new
62 v2 = Vertex.new
63 e1 = Edge.new
64 e2 = Edge.new
65 g << v1 << e1 << v2 << e2
66 g.should have(2).vertices
67 g.vertices.should include(v1)
68 g.vertices.should include(v2)
69 g.should have(2).edges
70 g.edges.should include(e1)
71 g.edges.should include(e2)
72 end
73
74 it "adds a subclass of Vertex" do
75 g.vertices.should be_empty
76 v1 = SVertex.new
77 v2 = SVertex.new
78 g << v1 << v2
79 g.should have(2).vertices
80 g.vertices.should include(v1)
81 g.vertices.should include(v2)
82 end
83 end # #<<
84
85 describe "connect" do
86 it "adds and records an edge between vertices" do
87 end
88 end # #connect
89
90 end
91 end