提交 2d320e36 编写于 作者: A Aaron Patterson

testing nary nodes in the depth first visitor

上级 a84c34fa
......@@ -92,7 +92,7 @@ def join relation, klass = Nodes::InnerJoin
klass = Nodes::StringJoin
end
from create_join(@ctx.froms, relation, nil, klass)
from create_join(@ctx.from, relation, nil, klass)
end
def having expr
......
......@@ -47,11 +47,15 @@ def join o
alias :visit_Arel_Nodes_InnerJoin :join
alias :visit_Arel_Nodes_OuterJoin :join
def nary o
o.children.each { |child| visit child }
end
alias :visit_Arel_Nodes_And :nary
def binary o
visit o.left
visit o.right
end
alias :visit_Arel_Nodes_And :binary
alias :visit_Arel_Nodes_As :binary
alias :visit_Arel_Nodes_Assignment :binary
alias :visit_Arel_Nodes_Between :binary
......
......@@ -123,11 +123,17 @@ def visit_Arel_Attribute o
alias :visit_Arel_Attributes_Boolean :visit_Arel_Attribute
alias :visit_Arel_Attributes_Attribute :visit_Arel_Attribute
def nary o
o.children.each_with_index do |x,i|
edge(i) { visit x }
end
end
alias :visit_Arel_Nodes_And :nary
def visit_Arel_Nodes_Equality o
visit_edge o, "left"
visit_edge o, "right"
end
alias :visit_Arel_Nodes_And :visit_Arel_Nodes_Equality
alias :visit_Arel_Nodes_Or :visit_Arel_Nodes_Equality
alias :visit_Arel_Nodes_NotEqual :visit_Arel_Nodes_Equality
alias :visit_Arel_Nodes_GreaterThan :visit_Arel_Nodes_Equality
......
......@@ -110,9 +110,9 @@ def test_outer_join
Arel::Nodes::And,
].each do |klass|
define_method("test_#{klass.name.gsub('::', '_')}") do
binary = klass.new([:a, :b])
binary = klass.new([:a, :b, :c])
@visitor.accept binary
assert_equal [:a, :b, binary], @collector.calls
assert_equal [:a, :b, :c, binary], @collector.calls
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册