X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=spec%2Ferd_handler%2Ferd_spec.rb;h=6b33dd8e3dbfc92238b3c76aadcb5b5201103079;hb=fdc3bc03b2d7759927ae34d5382d2168be6a2bae;hp=0c32a815805b1c7afcd93be5809f4ac88b5ba8f8;hpb=5cb26987412346fc34cb344d7b169c0784f1da77;p=erd-marker.git diff --git a/spec/erd_handler/erd_spec.rb b/spec/erd_handler/erd_spec.rb index 0c32a81..6b33dd8 100644 --- a/spec/erd_handler/erd_spec.rb +++ b/spec/erd_handler/erd_spec.rb @@ -79,61 +79,124 @@ module ErdHandler erd.should have(6).edges b0 = erd.vertices.find {|b| b.id == 0} - b0.name.should == "Unit" + b0.name.original.should == "Unit" b0.should have(2).neighbours b1 = erd.vertices.find {|b| b.id == 1} - b1.name.should == "Employee" + b1.name.original.should == "Employee" b1.should have(2).neighbours b2 = erd.vertices.find {|b| b.id == 2} - b2.name.should == "Course" + b2.name.original.should == "Course" b2.should have(3).neighbours b3 = erd.vertices.find {|b| b.id == 3} - b3.name.should == "Presentation" + b3.name.original.should == "Presentation" b3.should have(3).neighbours b4 = erd.vertices.find {|b| b.id == 4} - b4.name.should == "Client" + b4.name.original.should == "Client" b4.should have(1).neighbours l0 = erd.edges.find {|e| e.id == 0} + l0.name.original.should == "ConsistsOf" 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.name.original.should == "Prepares" 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.name.original.should == "Presents" 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.name.original.should == "Presented" 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.name.original.should == "Recieves" 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.name.original.should == "IsPrerequisiteOf" 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 + + describe "#mmus" do + it "finds three MMUs in a simple ERD" do + erd = Erd.new + erd.read(File.new("spec/fixtures/two_boxes_one_link_erd.xml")) + mmus = erd.mmus + + mmus.should have(3).items + single_box_mmus = mmus.select {|m| m.vertices.length == 1} + single_link_mmus = mmus.select {|m| m.edges.length == 1} + + single_box_mmus.should have(2).items + single_box_mmus.each do |m| + m.should have(1).vertices + m.should have(0).edges + end + + single_link_mmus.should have(1).items + single_link_mmus.each do |m| + m.should have(2).vertices + m.should have(1).edges + m.edges.first.should have(2).connections + m.vertices.each do |v| + m.vertices.should include(v) + end + end + end + + it "finds many MMUs in a complex ERD" do + erd = Erd.new + erd.read(File.new("spec/fixtures/complex_erd.xml")) + mmus = erd.mmus + + mmus.should have(11).items + single_box_mmus = mmus.select {|m| m.vertices.length == 1} + single_link_mmus = mmus.select {|m| m.edges.length == 1} + + single_box_mmus.should have(5).items + single_box_mmus.each do |m| + m.should have(1).vertices + m.should have(0).edges + end + single_box_mmus.map {|m| m.vertices.first.name.original}.uniq.should have(5).items + + single_link_mmus.should have(6).items + single_link_mmus.each do |m| + m.should have(2).vertices + m.should have(1).edges + m.edges.first.should have(2).connections + m.vertices.each do |v| + m.vertices.should include(v) + end + end + single_link_mmus.map {|m| m.edges.first.name.original}.uniq.should have(6).items + end + + end # #mmus end end