def test_objects_pow_expression_two(patch, tree): """ Ensures Objects.pow_expression works with two nodes """ patch.many(Objects, ['build_binary_expression', 'primary_expression', 'unary_expression']) tree.child(1).type = 'POWER' tree.children = [1, '+', 2] r = Objects.pow_expression(tree) Objects.build_binary_expression.assert_called_with( tree, tree.child(1), Objects.primary_expression(tree.child(0)), Objects.unary_expression(tree.child(2))) assert r == Objects.build_binary_expression()
def test_objects_and_expression_two(patch, tree): """ Ensures Objects.and_expression works with two nodes """ patch.many(Objects, ['build_binary_expression', 'cmp_expression']) tree.child(1).type = 'AND' tree.children = [1, 'and', 2] and_expression = Objects.and_expression patch.object(Objects, 'and_expression') r = and_expression(tree) Objects.build_binary_expression.assert_called_with( tree, tree.child(1), Objects.and_expression(tree.child(0)), Objects.cmp_expression(tree.child(2))) assert r == Objects.build_binary_expression()
def test_objects_cmp_expression_two(patch, tree): """ Ensures Objects.and_expression works with two nodes """ patch.many(Objects, ['build_binary_expression', 'arith_expression']) tree.child(1).data = 'cmp_operator' tree.children = [1, '==', 2] cmp_expression = Objects.cmp_expression patch.object(Objects, 'cmp_expression') r = cmp_expression(tree) Objects.build_binary_expression.assert_called_with( tree, tree.child(1).child(0), Objects.cmp_expression(tree.child(0)), Objects.arith_expression(tree.child(2))) assert r == Objects.build_binary_expression()
def test_objects_mul_expression_two(patch, tree): """ Ensures Objects.mul_expression works with two nodes """ patch.many(Objects, ['build_binary_expression', 'unary_expression']) tree.child(1).data = 'mul_operator' tree.children = [1, '*', 2] mul_expression = Objects.mul_expression patch.object(Objects, 'mul_expression') r = mul_expression(tree) Objects.build_binary_expression.assert_called_with( tree, tree.child(1).child(0), Objects.mul_expression(tree.child(0)), Objects.unary_expression(tree.child(2))) assert r == Objects.build_binary_expression()
def test_objects_build_binary_expression(patch, tree, magic): """ Ensures Objects.build_binary_expression builds an expression properly """ patch.many(Objects, ['expression_type']) op = magic() left = magic() right = magic() result = Objects.build_binary_expression(tree, op, left, right) Objects.expression_type.assert_called_with(op.type, tree) assert result == { '$OBJECT': 'expression', 'expression': Objects.expression_type(), 'values': [left, right], }