diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-25 12:14:30 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-12-25 12:14:30 -0700 |
commit | 32386f88601ab9c6d4a1a292ed087b896a25fd1f (patch) | |
tree | 25ef22da31e879f7b087e7e5e7a26d0961aaf4db | |
parent | 963c9308147613012c8bdd9832aec360c2023418 (diff) | |
download | rails-32386f88601ab9c6d4a1a292ed087b896a25fd1f.tar.gz rails-32386f88601ab9c6d4a1a292ed087b896a25fd1f.tar.bz2 rails-32386f88601ab9c6d4a1a292ed087b896a25fd1f.zip |
testing binary ops in the dot visitor
-rw-r--r-- | lib/arel/select_manager.rb | 3 | ||||
-rw-r--r-- | lib/arel/visitors/dot.rb | 30 | ||||
-rw-r--r-- | test/visitors/test_dot.rb | 28 |
3 files changed, 46 insertions, 15 deletions
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb index 37f06f6a9f..55700ab92d 100644 --- a/lib/arel/select_manager.rb +++ b/lib/arel/select_manager.rb @@ -9,9 +9,10 @@ module Arel from table end - def taken + def limit @ast.limit end + alias :taken :limit def constraints @ctx.wheres diff --git a/lib/arel/visitors/dot.rb b/lib/arel/visitors/dot.rb index cfd231020d..4bb45bc707 100644 --- a/lib/arel/visitors/dot.rb +++ b/lib/arel/visitors/dot.rb @@ -127,23 +127,25 @@ module Arel end alias :visit_Arel_Nodes_And :nary - def visit_Arel_Nodes_Equality o + def binary o visit_edge o, "left" visit_edge o, "right" end - 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 - alias :visit_Arel_Nodes_GreaterThanOrEqual :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_Assignment :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_In :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_LessThan :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_LessThanOrEqual :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_Between :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_NotIn :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_DoesNotMatch :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_Matches :visit_Arel_Nodes_Equality - alias :visit_Arel_Nodes_JoinSource :visit_Arel_Nodes_Equality + alias :visit_Arel_Nodes_As :binary + alias :visit_Arel_Nodes_Assignment :binary + alias :visit_Arel_Nodes_Between :binary + alias :visit_Arel_Nodes_DoesNotMatch :binary + alias :visit_Arel_Nodes_Equality :binary + alias :visit_Arel_Nodes_GreaterThan :binary + alias :visit_Arel_Nodes_GreaterThanOrEqual :binary + alias :visit_Arel_Nodes_In :binary + alias :visit_Arel_Nodes_JoinSource :binary + alias :visit_Arel_Nodes_LessThan :binary + alias :visit_Arel_Nodes_LessThanOrEqual :binary + alias :visit_Arel_Nodes_Matches :binary + alias :visit_Arel_Nodes_NotEqual :binary + alias :visit_Arel_Nodes_NotIn :binary + alias :visit_Arel_Nodes_Or :binary def visit_String o @node_stack.last.fields << o diff --git a/test/visitors/test_dot.rb b/test/visitors/test_dot.rb index 19a554ce42..de6dd87c4c 100644 --- a/test/visitors/test_dot.rb +++ b/test/visitors/test_dot.rb @@ -22,6 +22,34 @@ module Arel @visitor.accept op end end + + # binary ops + [ + Arel::Nodes::Assignment, + Arel::Nodes::Between, + Arel::Nodes::DoesNotMatch, + Arel::Nodes::Equality, + Arel::Nodes::GreaterThan, + Arel::Nodes::GreaterThanOrEqual, + Arel::Nodes::In, + Arel::Nodes::LessThan, + Arel::Nodes::LessThanOrEqual, + Arel::Nodes::Matches, + Arel::Nodes::NotEqual, + Arel::Nodes::NotIn, + Arel::Nodes::Or, + Arel::Nodes::TableAlias, + Arel::Nodes::Values, + Arel::Nodes::As, + Arel::Nodes::DeleteStatement, + Arel::Nodes::Ordering, + Arel::Nodes::JoinSource, + ].each do |klass| + define_method("test_#{klass.name.gsub('::', '_')}") do + binary = klass.new(:a, :b) + @visitor.accept binary + end + end end end end |