Beispiel #1
0
    def test_bool_functions(self, func, args):
        expr = '%s(%s)' % (func, ','.join(args))
        rep = {'name': func, 'args': args}

        pd = parse(expr)
        assert rep == pd
        assert unparse(pd) == expr
Beispiel #2
0
    def test_member_functions(self, func):
        expr = "%s(name,(a,b))" % func
        rep = {"name": func, "args": ["name", ("a", "b")]}

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #3
0
    def test_result_functions(self, func):
        expr = '%s()' % func
        rep = {'name': func, 'args': []}

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #4
0
    def test_aggregate_functions(self, func):
        expr = "%s((a,b,c))" % func
        rep = {"name": func, "args": [("a", "b", "c")]}

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #5
0
    def test_aggregate_functions(self, func):
        expr = '%s((a,b,c))' % func
        rep = {'name': func, 'args': [('a', 'b', 'c')]}

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #6
0
    def test_member_functions(self, func):
        expr = '%s(name,(a,b))' % func
        rep = {'name': func, 'args': ['name', ('a', 'b')]}

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #7
0
    def test_bool_functions(self, func, args):
        expr = "%s(%s)" % (func, ",".join(args))
        rep = {"name": func, "args": args}

        pd = parse(expr)
        assert rep == pd
        assert unparse(pd) == expr
Beispiel #8
0
def test_explicit_types_symmetry(in_, out):
    parsed = {"name": "eq", "args": ["a", in_]}
    upd = unparse(parsed)
    pd = parse(upd)

    assert pd == parsed
    assert upd == "eq(a,%s)" % out
Beispiel #9
0
    def test_recurse_function(self):
        expr = 'recurse(lero)'
        rep = {'name': 'recurse', 'args': ['lero']}
        pd = parse(expr)

        assert rep == pd
        assert unparse(pd) == expr
Beispiel #10
0
    def test_recurse_function(self):
        expr = "recurse(lero)"
        rep = {"name": "recurse", "args": ["lero"]}
        pd = parse(expr)

        assert rep == pd
        assert unparse(pd) == expr
Beispiel #11
0
    def test_limit_function(self):
        expr = "limit(10,0)"
        rep = {"name": "limit", "args": [10, 0]}

        pd = parse(expr)
        assert rep == pd
        assert unparse(pd) == expr
Beispiel #12
0
    def test_result_functions(self, func):
        expr = "%s()" % func
        rep = {"name": func, "args": []}

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #13
0
    def test_limit_function(self):
        expr = 'limit(10,0)'
        rep = {'name': 'limit', 'args': [10, 0]}

        pd = parse(expr)
        assert rep == pd
        assert unparse(pd) == expr
Beispiel #14
0
    def test_query_functions(self, func):
        expr = '%s(username,password,(address,city))' % func
        rep = {
            'name': func,
            'args': ['username', 'password', ('address', 'city')]
        }

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #15
0
    def test_query_functions(self, func):
        expr = "%s(username,password,(address,city))" % func
        rep = {
            "name": func,
            "args": ["username", "password", ("address", "city")]
        }

        pd = parse(expr)
        assert pd == rep
        assert unparse(pd) == expr
Beispiel #16
0
    def test_unparser_error_4(self):
        expr = r"and(eq(accountId,(123456789)), eq(yyyy,(2020)), eq(mm,(10)))"
        rep = {
            "name": "and",
            "args": [
                {"name": "eq", "args": ["accountId", (123456789,)]},
                {"name": "eq", "args": ["yyyy", (2020,)]},
                {"name": "eq", "args": ["mm", (10,)]},
            ],
        }

        pd = parse(expr)
        upd = parse(unparse(pd))

        assert pd == rep
        assert upd == pd
Beispiel #17
0
    def rql_expr_replace(self, replacement):
        """Replace any nodes matching the replacement name

        This can be used to generate an expression with modified
        `limit` and `offset` nodes, for pagination purposes.

        """
        parsed = deepcopy(self.rql_parsed)

        replaced = self._rql_traverse_and_replace(
            parsed, replacement["name"], replacement["args"]
        )

        if not replaced:
            parsed = {"name": "and", "args": [replacement, parsed]}

        return unparse(parsed)
Beispiel #18
0
def test_cmp_functions(func):
    parsed = {'name': func, 'args': ['a', 1]}
    assert unparse(parsed) == '%s(a,1)' % func

    parsed = {'name': func, 'args': [('a', 'b', 'c'), 1]}
    assert unparse(parsed) == '%s((a,b,c),1)' % func
Beispiel #19
0
def test_explicit_types(in_, out):
    parsed = {"name": "eq", "args": ["a", in_]}
    assert unparse(parsed) == "eq(a,%s)" % out
Beispiel #20
0
def test_array_arg():
    parsed = {"name": "eq", "args": ["a", (1,)]}
    assert unparse(parsed) == "eq(a,(1))"

    parsed = {"name": "eq", "args": [("a", "b", "c"), (1, 2, 3)]}
    assert unparse(parsed) == "eq((a,b,c),(1,2,3))"
Beispiel #21
0
def test_cmp_functions(func):
    parsed = {"name": func, "args": ["a", 1]}
    assert unparse(parsed) == "%s(a,1)" % func

    parsed = {"name": func, "args": [("a", "b", "c"), 1]}
    assert unparse(parsed) == "%s((a,b,c),1)" % func