mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-18 02:10:41 -07:00
Add support for logical expressions
This commit is contained in:
@@ -77,6 +77,35 @@ class ParserUnitTest < Minitest::Test
|
||||
assert_equal(0..5, p.expression)
|
||||
end
|
||||
|
||||
def test_logical
|
||||
p = new_parser("a and b")
|
||||
expr = p.expression
|
||||
assert(expr.is_a?(BinaryExpression))
|
||||
assert_equal('and', expr.operator)
|
||||
assert_equal('a', expr.left_node.name)
|
||||
assert_equal('b', expr.right_node.name)
|
||||
|
||||
p = new_parser("a and b or c")
|
||||
expr = p.expression
|
||||
assert(expr.is_a?(BinaryExpression))
|
||||
assert_equal('and', expr.operator)
|
||||
assert_equal('a', expr.left_node.name)
|
||||
assert_equal('or', expr.right_node.operator)
|
||||
assert_equal('b', expr.right_node.left_node.name)
|
||||
assert_equal('c', expr.right_node.right_node.name)
|
||||
|
||||
p = new_parser("a == b and c or d")
|
||||
expr = p.expression
|
||||
assert(expr.is_a?(BinaryExpression))
|
||||
assert_equal('and', expr.operator)
|
||||
assert_equal('==', expr.left_node.operator)
|
||||
assert_equal('a', expr.left_node.left_node.name)
|
||||
assert_equal('b', expr.left_node.right_node.name)
|
||||
assert_equal('or', expr.right_node.operator)
|
||||
assert_equal('c', expr.right_node.left_node.name)
|
||||
assert_equal('d', expr.right_node.right_node.name)
|
||||
end
|
||||
|
||||
def test_equality
|
||||
p = new_parser("a == b")
|
||||
expr = p.expression
|
||||
|
||||
Reference in New Issue
Block a user