Beispiel #1
0
def test_vector_constructor():
    ctx = Qit()
    s = Struct(Int(), Int())
    v = Vector(s)
    x = Variable(s, "x")
    result = ctx.run(v.value([x, s.value((7, 2)), (1, 2)]),
            args={x: (11,12)})
    assert result == [ (11, 12), (7, 2), (1, 2) ]
Beispiel #2
0
def test_run_more_values():
    ctx = Qit()
    v = Vector(Int())
    a, b, c = ctx.run(Int().value(1),
                      Int().value(2),
                      v.value([1,2,3]))
    assert a == 1
    assert b == 2
    assert c == [1,2,3]
Beispiel #3
0
t_result = Struct((init_values, "init_values"), (t_states, "lts"))

f_process_input = Function("map_variables").takes(init_values, "init_values").returns(t_result)
f_process_input.code("""
    return {{t_result}}(init_values, {{f_states}}(init_values.init_marking, init_values.input, init_values.output));
""", f_states=f_states, t_result=t_result,)


f_eq_states = Function("eq_states").takes(t_element, "s1").takes(t_element, "s2").returns(Bool())
f_eq_states.code("""
    return s1.s1_id == s2.s1_id && s1.action == s2.action && s1.s2_id == s2.s2_id;
""")

input_lts = t_states.value([t_element.value((1, "t0", 2)),
                            t_element.value((2, "t0", 3)),
                            t_element.value((3, "t1", 4)),
                            t_element.value((4, "t1", 5)),
                            t_element.value((5, "t2", 6)),
                            t_element.value((6, "t2", 1))])

# input_lts = t_states.value([t_element.value((1, "t0", 2)),
                            # t_element.value((2, "t1", 1))])

f_eq_statespaces = Function("eq_statespaces").takes(t_result, "result").returns(Bool())
f_eq_statespaces.code("""
        {{t_lts}} lts1 = result.lts;
        {{t_lts}} lts2 = {{lts2}};
        if (lts1.size() != lts2.size()) {
            return false;
        }

        for (int i = 0; i < lts1.size(); i++) {