mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
testing nary nodes in the depth first visitor
This commit is contained in:
parent
a84c34fa08
commit
2d320e366a
4 changed files with 15 additions and 5 deletions
|
@ -92,7 +92,7 @@ module Arel
|
|||
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 @@ module Arel
|
|||
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 @@ module Arel
|
|||
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 @@ module Arel
|
|||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue