Got #to_dot working with blocks dot
authorNeil Smith <neil.github@njae.me.uk>
Wed, 18 Jul 2012 09:42:36 +0000 (10:42 +0100)
committerNeil Smith <neil.github@njae.me.uk>
Wed, 18 Jul 2012 09:42:36 +0000 (10:42 +0100)
lib/graph.njae/graph.rb
spec/graph/graph_spec.rb

index f3d00328d4a4956087ea0a276604417a74c19b7d..eb2ddc6e3e55b296720e400cba6aea87296f38a5 100644 (file)
@@ -46,7 +46,7 @@ module GraphNjae
         if vertex_block.nil?
           dot << v.to_dot(vertex_args)
         else
-          dot << v.do_dot(&vertex_block)
+          dot << v.to_dot(&vertex_block)
         end
         dot << "\n"
       end
@@ -54,7 +54,7 @@ module GraphNjae
         if edge_block.nil?
           dot << e.to_dot(edge_args)
         else
-          dot << e.do_dot(&lambda {edge_block})
+          dot << e.to_dot(&edge_block)
         end
         dot << "\n"
       end
index 7da0bb9c599275ed94e9fdcd04a4df427cf3bd3f..88724a472066b9c8d5f656a35adc58df3000f08e 100644 (file)
@@ -131,10 +131,27 @@ module GraphNjae
         v1 = Vertex.new(:name => :v1)
         v2 = Vertex.new(:name => :v2)
         g.connect(v1, v2, :type => :edge_type)
-        gdot = g.to_dot(:vertex_block => lambda {|v| v.name})
+        gdot = g.to_dot(:vertex_block => lambda {|v| v.name.to_s + ';'})
         gdot.should == "graph {\n#{v1.name};\n#{v2.name};\n#{v1.object_id.to_s} -- #{v2.object_id.to_s};\n}"
       end
 
+      it "gives the dot notation of a simple graph, with vertex and edge attributes" do
+        v1 = Vertex.new(:name => :v1)
+        v2 = Vertex.new(:name => :v2)
+        g.connect(v1, v2, :type => :edge_type)
+        gdot = g.to_dot(:edge_args => {:label => :type}, :vertex_args => {:label => :name})
+        gdot.should == "graph {\n#{v1.object_id.to_s} {label = \"#{v1.name}\"};\n#{v2.object_id.to_s} {label = \"#{v2.name}\"};\n#{v1.object_id.to_s} -- #{v2.object_id.to_s} {label = \"#{g.edges[0].type}\"};\n}"
+      end
+
+      it "gives the dot notation of a simple graph, with vertices and edges generated by a block" do
+        v1 = Vertex.new(:name => :v1)
+        v2 = Vertex.new(:name => :v2)
+        g.connect(v1, v2, :type => :edge_type)
+        gdot = g.to_dot(:vertex_block => lambda {|v| v.name.to_s + ';'}, 
+                        :edge_block => lambda {|e| "#{e.vertices[0].name.to_s} -- #{e.vertices[1].name.to_s} {label = \"#{e.type.to_s}\"};"})
+        gdot.should == "graph {\n#{v1.name};\n#{v2.name};\n#{v1.name} -- #{v2.name} {label = \"#{g.edges[0].type}\"};\n}"
+      end
+      
     end # #to_dot
     
     describe 'product' do