Пример #1
0
    def test___eq__():
        filter_node1 = query.FilterNode("a", "=", 7)
        filter_node2 = query.FilterNode("b", ">", 7.5)
        filter_node3 = query.FilterNode("c", "<", "now")

        or_node1 = query.DisjunctionNode(filter_node1, filter_node2)
        or_node2 = query.DisjunctionNode(filter_node2, filter_node1)
        or_node3 = query.DisjunctionNode(filter_node1, filter_node3)
        or_node4 = unittest.mock.sentinel.or_node

        assert or_node1 == or_node1
        assert not or_node1 == or_node2
        assert not or_node1 == or_node3
        assert not or_node1 == or_node4
Пример #2
0
 def test_add_node_or_with_disjunction():
     clauses = query._BooleanClauses("name", True)
     node1 = query.FilterNode("a", "=", 7)
     node2 = query.FilterNode("b", ">", 7.5)
     node3 = query.DisjunctionNode(node1, node2)
     clauses.add_node(node3)
     assert clauses.or_parts == [node1, node2]
Пример #3
0
    def test_pickling():
        node1 = query.FilterNode("a", "=", 7)
        node2 = query.FilterNode("b", ">", 7.5)
        or_node = query.DisjunctionNode(node1, node2)

        pickled = pickle.dumps(or_node)
        unpickled = pickle.loads(pickled)
        assert or_node == unpickled
Пример #4
0
    def test_constructor_in():
        or_node = query.FilterNode("a", "in", ("x", "y", "z"))

        filter_node1 = query.FilterNode("a", "=", "x")
        filter_node2 = query.FilterNode("a", "=", "y")
        filter_node3 = query.FilterNode("a", "=", "z")
        assert or_node == query.DisjunctionNode(filter_node1, filter_node2,
                                                filter_node3)
Пример #5
0
    def test_constructor_many_nodes():
        node1 = query.FilterNode("a", "=", 7)
        node2 = query.FilterNode("b", ">", 7.5)
        node3 = query.FilterNode("c", "<", "now")
        node4 = query.FilterNode("d", ">=", 80)

        result_node = query.DisjunctionNode(node1, node2, node3, node4)
        assert isinstance(result_node, query.DisjunctionNode)
        assert result_node._nodes == [node1, node2, node3, node4]
Пример #6
0
 def test__IN():
     prop = model.Property("name", indexed=True)
     or_node = prop._IN(["a", None, "xy"])
     expected = query.DisjunctionNode(
         query.FilterNode(b"name", "=", "a"),
         query.FilterNode(b"name", "=", None),
         query.FilterNode(b"name", "=", "xy"),
     )
     assert or_node == expected
     # Also verify the alias
     assert or_node == prop.IN(["a", None, "xy"])
Пример #7
0
    def test_resolve():
        node1 = query.FilterNode("a", "=", 7)
        node2 = query.FilterNode("b", ">", 77)
        or_node = query.DisjunctionNode(node1, node2)

        bindings = {}
        used = {}
        resolved_node = or_node.resolve(bindings, used)

        assert resolved_node is or_node
        assert bindings == {}
        assert used == {}
Пример #8
0
    def test_constructor_convert_or():
        node1 = query.FilterNode("a", "=", 7)
        node2 = query.FilterNode("b", ">", 7.5)
        node3 = query.DisjunctionNode(node1, node2)
        node4 = query.FilterNode("d", ">=", 80)

        result_node = query.ConjunctionNode(node3, node4)
        assert isinstance(result_node, query.DisjunctionNode)
        assert result_node._nodes == [
            query.ConjunctionNode(node1, node4),
            query.ConjunctionNode(node2, node4),
        ]
Пример #9
0
    def test___ne__():
        prop = model.Property("name", indexed=True)
        value = 7.0
        expected = query.DisjunctionNode(
            query.FilterNode(b"name", "<", value),
            query.FilterNode(b"name", ">", value),
        )

        or_node_left = prop != value
        assert or_node_left == expected
        or_node_right = value != prop
        assert or_node_right == expected
Пример #10
0
    def test_resolve_with_in():
        prop = model.Property(name="val")
        param = query.Parameter("replace")
        parameter_node = query.ParameterNode(prop, "in", param)

        value = (19, 20, 28)
        bindings = {"replace": value}
        used = {}
        resolved_node = parameter_node.resolve(bindings, used)

        assert resolved_node == query.DisjunctionNode(
            query.FilterNode("val", "=", 19),
            query.FilterNode("val", "=", 20),
            query.FilterNode("val", "=", 28),
        )
        assert used == {"replace": True}
Пример #11
0
    def test_add_node_and_with_disjunction():
        clauses = query._BooleanClauses("name", False)
        node1 = query.FilterNode("a", "=", 7)
        node2 = query.FilterNode("b", ">", 7.5)
        clauses.or_parts = [[node1], [node2]]  # Modify to see the "broadcast"

        node3 = query.FilterNode("c", "<", "now")
        node4 = query.FilterNode("d", ">=", 80)
        node5 = query.DisjunctionNode(node3, node4)
        clauses.add_node(node5)
        assert clauses.or_parts == [
            [node1, node3],
            [node1, node4],
            [node2, node3],
            [node2, node4],
        ]
Пример #12
0
    def test_resolve_changed():
        node1 = unittest.mock.Mock(spec=query.FilterNode)
        node2 = query.FilterNode("b", ">", 77)
        node3 = query.FilterNode("c", "=", 7)
        node1.resolve.return_value = node3
        or_node = query.DisjunctionNode(node1, node2)

        bindings = {}
        used = {}
        resolved_node = or_node.resolve(bindings, used)

        assert isinstance(resolved_node, query.DisjunctionNode)
        assert resolved_node._nodes == [node3, node2]
        assert bindings == {}
        assert used == {}
        node1.resolve.assert_called_once_with(bindings, used)
Пример #13
0
 def test___repr__():
     node1 = query.FilterNode("a", "=", 7)
     node2 = query.FilterNode("b", ">", 7.5)
     or_node = query.DisjunctionNode(node1, node2)
     expected = "OR(FilterNode('a', '=', 7), FilterNode('b', '>', 7.5))"
     assert repr(or_node) == expected
Пример #14
0
    def test___iter__():
        node1 = query.FilterNode("a", "=", 7)
        node2 = query.FilterNode("b", ">", 7.5)
        or_node = query.DisjunctionNode(node1, node2)

        assert list(or_node) == or_node._nodes
Пример #15
0
 def test_constructor_no_nodes():
     with pytest.raises(TypeError):
         query.DisjunctionNode()
Пример #16
0
    def test_constructor_ne():
        or_node = query.FilterNode("a", "!=", 2.5)

        filter_node1 = query.FilterNode("a", "<", 2.5)
        filter_node2 = query.FilterNode("a", ">", 2.5)
        assert or_node == query.DisjunctionNode(filter_node1, filter_node2)
Пример #17
0
 def test_constructor():
     with pytest.raises(NotImplementedError):
         query.DisjunctionNode()
Пример #18
0
 def test_constructor_one_node():
     node = query.FilterNode("a", "=", 7)
     result_node = query.DisjunctionNode(node)
     assert result_node is node