Beispiel #1
0
def aggregate_variable_combined(ud: UD) -> AggregateVariableCombined:
    d = Drawer(ud)
    return AggregateVariableCombined([
        d.draw(any_string),
        d.draw(aggregate_variable_name),
        d.draw(any_string)
    ])
Beispiel #2
0
def merge_query_query(ud: UD) -> Query:
    d = Drawer(ud)
    nav = d.draw(navigation())
    trm = d.draw(term)
    # merge query need to start with navigation part without additional props
    parts = [Part(trm), Part(AllTerm(), navigation=nav)]
    return Query(parts)
Beispiel #3
0
def durations_gen(ud: UD) -> str:
    d = Drawer(ud)
    result = d.draw(sampled_from(["", "+", "-"]))
    first = True
    for duration in d.draw(lists(duration_gen, min_size=1, max_size=4)):
        if first:
            first = False
        else:
            result += d.draw(combines_gen)
        result += duration
    return result
Beispiel #4
0
def with_clause(ud: UD) -> WithClause:
    d = Drawer(ud)
    op = d.draw(query_operations)
    num = d.draw(integers(min_value=0))
    nav = d.draw(navigation())
    trm = d.optional(term)
    wc = d.optional(with_clause())
    return WithClause(WithClauseFilter(op, num), nav, trm, wc)
Beispiel #5
0
def navigation(ud: UD) -> Navigation:
    d = Drawer(ud)
    start = d.draw(integers(min_value=0, max_value=1))
    length = d.draw(integers(min_value=0, max_value=100))
    ed = d.draw(edge_type)
    direction = d.draw(edge_direction)
    return Navigation(start, length + start, [ed], direction)
Beispiel #6
0
def merge_term(ud: UD) -> MergeTerm:
    d = Drawer(ud)
    pre = d.draw(term)
    queries = d.draw(lists(merge_query, min_size=1, max_size=1))
    pst = d.optional(term)
    return MergeTerm(pre, queries, pst)
Beispiel #7
0
def composite_term(ud: UD) -> CombinedTerm:
    d = Drawer(ud)
    trm = leaf_term | composite_term()
    return CombinedTerm(d.draw(trm), d.draw(combine_term), d.draw(trm))