def test_product_copy(): p = Product("P", (Range(4), "x"), (Range(4), "y")) p2 = p.copy() p2.set("x", Range(2)) q = Product("Q", (p, "p1"), (p, "p2")) q2 = q.copy() q2.set_generator("p2", p2.generator) q2.set_iterator("p1", p2.iterator) v_r4 = list(range(4)) v_r2 = list(range(2)) v_p = list(itertools.product(v_r4, v_r4)) v_p2 = list(itertools.product(v_r2, v_r4)) v_q2_generator = set(itertools.product(v_p, v_p2)) v_q2_iterator = set(itertools.product(v_p2, v_p)) c = Qit() for v in c.run(q2.generate().take(200).collect()): assert v in v_q2_generator result = c.run(q2.iterate().collect()) assert len(v_q2_iterator) == len(result) assert v_q2_iterator == set(result)