X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=spec%2Ferd_handler%2Ferd_spec.rb;fp=spec%2Ferd_handler%2Ferd_spec.rb;h=0c32a815805b1c7afcd93be5809f4ac88b5ba8f8;hb=5cb26987412346fc34cb344d7b169c0784f1da77;hp=12ef23972e4674b8580e2b03eb6cb40c69797243;hpb=54fb8d2f752d1ad35d11a03bb6e1443257a472c9;p=erd-marker.git diff --git a/spec/erd_handler/erd_spec.rb b/spec/erd_handler/erd_spec.rb index 12ef239..0c32a81 100644 --- a/spec/erd_handler/erd_spec.rb +++ b/spec/erd_handler/erd_spec.rb @@ -20,18 +20,120 @@ module ErdHandler erd.should have(1).vertices erd.should have(0).edges end - + end # #initialize + + describe "#read" do + it "reads and creates a single box" do + erd = Erd.new + erd.read(File.new("spec/fixtures/single_box_erd.xml")) + erd.mark.should == 6.5 + erd.should have(1).vertices + erd.should have(0).edges + end + it "reads and creates two boxes with an edge joining them" do - erd = Erd.new(File.new("spec/fixtures/two_boxes_one_link_erd.xml")) + erd = Erd.new + erd.read(File.new("spec/fixtures/two_boxes_one_link_erd.xml")) erd.mark.should == 4.5 erd.should have(2).vertices erd.should have(1).edges - + + erd.vertices[0].should have(1).neighbours + erd.vertices[1].should have(1).neighbours erd.vertices[0].neighbours.should include(erd.vertices[1]) - erd.vertices[1].neighbours.should include(erd.vertices[0]) + erd.vertices[1].neighbours.should include(erd.vertices[0]) + + link = erd.edges[0] + b0 = erd.vertices.find {|v| v.id == 0} + b1 = erd.vertices.find {|v| v.id == 1} + link.connection_at(b0).blob.should be(:closed) + link.connection_at(b0).crowsfoot.should be(:yes) + link.connection_at(b1).blob.should be(:open) + link.connection_at(b1).crowsfoot.should be(:no) end - it "reads and creates a box with a self-loop" - end # #initialize + 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 end end