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
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
def test_result_functions(self, func): expr = '%s()' % func rep = {'name': func, 'args': []} pd = parse(expr) assert pd == rep assert unparse(pd) == expr
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
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
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
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
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
def test_recurse_function(self): expr = 'recurse(lero)' rep = {'name': 'recurse', 'args': ['lero']} pd = parse(expr) assert rep == pd assert unparse(pd) == expr
def test_recurse_function(self): expr = "recurse(lero)" rep = {"name": "recurse", "args": ["lero"]} pd = parse(expr) assert rep == pd assert unparse(pd) == expr
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
def test_result_functions(self, func): expr = "%s()" % func rep = {"name": func, "args": []} pd = parse(expr) assert pd == rep assert unparse(pd) == expr
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
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
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
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
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)
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
def test_explicit_types(in_, out): parsed = {"name": "eq", "args": ["a", in_]} assert unparse(parsed) == "eq(a,%s)" % out
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))"
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