def test_as_root_rep_already_set():
    q = query_ast_visitor()
    node = ast.parse('1/1')
    v = rh.cpp_ttree_rep('junk', 'dude', gc_scope_top_level())
    node.rep = v  # type: ignore

    assert v is q.get_as_ROOT(node)
def test_binary_divide_return_type_2():
    q = query_ast_visitor()
    q.visit(ast.parse('1/1'))
    r = q._result

    assert isinstance(r, crep.cpp_value)
    assert r.cpp_type().type == 'double'
def test_binary_plus_return_type_3():
    q = query_ast_visitor()
    q.visit(ast.parse('1+1'))
    r = q._result

    assert isinstance(r, crep.cpp_value)
    assert r.cpp_type().type == 'int'
def test_as_root_as_single_column():
    q = query_ast_visitor()
    node = ast.parse('1/1')
    value_obj = crep.cpp_value('i', gc_scope_top_level(), ctyp.terminal('int'))
    sequence = crep.cpp_sequence(
        value_obj,
        crep.cpp_value('i', gc_scope_top_level(), ctyp.terminal('int')),
        gc_scope_top_level())
    node.rep = sequence  # type: ignore
    as_root = q.get_as_ROOT(node)

    assert isinstance(as_root, rh.cpp_ttree_rep)
def test_subscript():
    q = query_ast_visitor()
    our_a = ast.Name(id='a')
    our_a.rep = crep.cpp_collection('jets', gc_scope_top_level(),
                                    ctyp.collection('int'))  # type: ignore
    node = ast_parse_with_replacement('a[10]', {
        'a': our_a
    }).body[0].value  # type: ignore
    as_root = q.get_rep(node)

    assert isinstance(as_root, crep.cpp_value)
    assert as_root.cpp_type() == 'int'
    assert as_root.as_cpp() == 'jets.at(10)'
def test_as_root_as_dict():
    q = query_ast_visitor()
    node = ast.parse('1/1')
    dict_obj = crep.cpp_dict(
        {
            ast.Constant(value='hi'):
            crep.cpp_value('i', gc_scope_top_level(), ctyp.terminal('int'))
        }, gc_scope_top_level())
    sequence = crep.cpp_sequence(
        dict_obj,  # type: ignore
        crep.cpp_value('i', gc_scope_top_level(), ctyp.terminal('int')),
        gc_scope_top_level())
    node.rep = sequence  # type: ignore
    as_root = q.get_as_ROOT(node)

    assert isinstance(as_root, rh.cpp_ttree_rep)
 def evaluate(self, a: ast.AST):
     rnr = atlas_xaod_executor()
     self.QueryVisitor = query_ast_visitor()
     a_transformed = rnr.apply_ast_transformations(a)
     self.ResultRep = \
         self.QueryVisitor.get_as_ROOT(a_transformed)