+ it "reads and creates a box with a self-loop" do
+ erd = Erd.new
+ erd.read(File.new("spec/fixtures/single_box_self_loop_erd.xml"))
+ erd.mark.should == 4.5
+ erd.should have(1).vertices
+ erd.should have(1).edges
+
+ erd.vertices[0].should have(1).neighbours
+ erd.vertices[0].neighbours.should include(erd.vertices[0])
+
+ link = erd.edges[0]
+ box = erd.vertices[0]
+ c1 = link.connections.find {|c| c.blob == :closed}
+ c1.crowsfoot.should be(:yes)
+ c2 = link.connections.find {|c| c.blob == :open}
+ c2.crowsfoot.should be(:no)
+ c1.should_not == c2
+ end
+
+ it "reads and creates full diagram" do
+ erd = Erd.new
+ erd.read(File.new("spec/fixtures/complex_erd.xml"))
+ erd.mark.should == 4.0
+ erd.should have(5).vertices
+ erd.should have(6).edges
+
+ b0 = erd.vertices.find {|b| b.id == 0}
+ b0.name.should == "Unit"
+ b0.should have(2).neighbours
+
+ b1 = erd.vertices.find {|b| b.id == 1}
+ b1.name.should == "Employee"
+ b1.should have(2).neighbours
+
+ b2 = erd.vertices.find {|b| b.id == 2}
+ b2.name.should == "Course"
+ b2.should have(3).neighbours
+
+ b3 = erd.vertices.find {|b| b.id == 3}
+ b3.name.should == "Presentation"
+ b3.should have(3).neighbours
+
+ b4 = erd.vertices.find {|b| b.id == 4}
+ b4.name.should == "Client"
+ b4.should have(1).neighbours
+
+ l0 = erd.edges.find {|e| e.id == 0}
+ l0.connections.find {|c| c.end == b0}.blob.should be :closed
+ l0.connections.find {|c| c.end == b0}.crowsfoot.should be :yes
+ l0.connections.find {|c| c.end == b2}.blob.should be :closed
+ l0.connections.find {|c| c.end == b2}.crowsfoot.should be :no
+
+ l1 = erd.edges.find {|e| e.id == 1}
+ l1.connections.find {|c| c.end == b0}.blob.should be :open
+ l1.connections.find {|c| c.end == b0}.crowsfoot.should be :yes
+ l1.connections.find {|c| c.end == b1}.blob.should be :closed
+ l1.connections.find {|c| c.end == b1}.crowsfoot.should be :no
+
+ l2 = erd.edges.find {|e| e.id == 2}
+ l2.connections.find {|c| c.end == b1}.blob.should be :closed
+ l2.connections.find {|c| c.end == b1}.crowsfoot.should be :no
+ l2.connections.find {|c| c.end == b3}.blob.should be :closed
+ l2.connections.find {|c| c.end == b3}.crowsfoot.should be :yes
+
+ l3 = erd.edges.find {|e| e.id == 3}
+ l3.connections.find {|c| c.end == b2}.blob.should be :open
+ l3.connections.find {|c| c.end == b2}.crowsfoot.should be :no
+ l3.connections.find {|c| c.end == b3}.blob.should be :closed
+ l3.connections.find {|c| c.end == b3}.crowsfoot.should be :yes
+
+ l4 = erd.edges.find {|e| e.id == 4}
+ l4.connections.find {|c| c.end == b3}.blob.should be :closed
+ l4.connections.find {|c| c.end == b3}.crowsfoot.should be :yes
+ l4.connections.find {|c| c.end == b4}.blob.should be :closed
+ l4.connections.find {|c| c.end == b4}.crowsfoot.should be :no
+
+ l5 = erd.edges.find {|e| e.id == 5}
+ l5.connections.find {|c| c.crowsfoot == :yes}.blob.should be :open
+ l5.connections.find {|c| c.crowsfoot == :no}.blob.should be :open
+ l5.connections.find {|c| c.crowsfoot == :yes}.end.should be b2
+ l5.connections.find {|c| c.crowsfoot == :no}.end.should be b2
+ end
+ end # #read