def test_function_in_function(): c = Qit() x = Variable(Int(), "x") r = Range(x).iterate() f = r.make_function() r2 = Range(x).iterate().map(f) f = r2.make_function((x,)) r3 = Range(x).iterate().map(f) assert [[], [[]], [[], [0]], [[], [0], [0,1]]] == c.run(r3, args={ x: 4 })
def test_range_function_iterate(): c = Qit() x = Variable(Int(), "x") r = Range(x).iterate().to_vector() f = r.make_function() assert [[], [0], [0,1], [0,1,2]] == c.run(Range(4).iterate().map(f))
def test_range_function_generate(): f = Function().takes(Int(), "a").returns(Int()).code("return a + 1;") c = Qit() x = Variable(Int(), "x") r = Range(f(x)).generate().take(2).to_vector() f = r.make_function() result = c.run(Range(10).iterate().map(f)) assert len(result) == 10 for i, r in enumerate(result): assert len(r) == 2 assert 0 <= r[0] < i+1