def test_prev_moment_operating_on_distance(): a = cirq.QubitId() c = Circuit([ Moment(), Moment([cirq.X(a)]), Moment(), Moment(), Moment(), Moment(), ]) assert c.prev_moment_operating_on([a], max_distance=4) is None assert c.prev_moment_operating_on([a], 6, max_distance=4) is None assert c.prev_moment_operating_on([a], 5, max_distance=3) is None assert c.prev_moment_operating_on([a], 4, max_distance=2) is None assert c.prev_moment_operating_on([a], 3, max_distance=1) is None assert c.prev_moment_operating_on([a], 2, max_distance=0) is None assert c.prev_moment_operating_on([a], 1, max_distance=0) is None assert c.prev_moment_operating_on([a], 0, max_distance=0) is None assert c.prev_moment_operating_on([a], 6, max_distance=5) == 1 assert c.prev_moment_operating_on([a], 5, max_distance=4) == 1 assert c.prev_moment_operating_on([a], 4, max_distance=3) == 1 assert c.prev_moment_operating_on([a], 3, max_distance=2) == 1 assert c.prev_moment_operating_on([a], 2, max_distance=1) == 1 assert c.prev_moment_operating_on([a], 6, max_distance=10) == 1 assert c.prev_moment_operating_on([a], 6, max_distance=100) == 1 assert c.prev_moment_operating_on([a], 13, max_distance=500) == 1 # Huge max distances should be handled quickly due to capping. assert c.prev_moment_operating_on([a], 1, max_distance=10**100) is None
def test_prev_moment_operating_on(): a = cirq.QubitId() b = cirq.QubitId() c = Circuit() assert c.prev_moment_operating_on([a]) is None assert c.prev_moment_operating_on([a], 0) is None assert c.prev_moment_operating_on([a], 102) is None c = Circuit([Moment([cirq.X(a)])]) assert c.prev_moment_operating_on([a]) == 0 assert c.prev_moment_operating_on([a], 1) == 0 assert c.prev_moment_operating_on([a, b]) == 0 assert c.prev_moment_operating_on([a], 0) is None assert c.prev_moment_operating_on([b]) is None c = Circuit([ Moment([cirq.CZ(a, b)]), Moment(), Moment([cirq.X(a)]), Moment(), ]) assert c.prev_moment_operating_on([a], 4) == 2 assert c.prev_moment_operating_on([a], 3) == 2 assert c.prev_moment_operating_on([a], 2) == 0 assert c.prev_moment_operating_on([a], 1) == 0 assert c.prev_moment_operating_on([a], 0) is None assert c.prev_moment_operating_on([b], 4) == 0 assert c.prev_moment_operating_on([b], 3) == 0 assert c.prev_moment_operating_on([b], 2) == 0 assert c.prev_moment_operating_on([b], 1) == 0 assert c.prev_moment_operating_on([b], 0) is None assert c.prev_moment_operating_on([a, b], 4) == 2 assert c.prev_moment_operating_on([a, b], 3) == 2 assert c.prev_moment_operating_on([a, b], 2) == 0 assert c.prev_moment_operating_on([a, b], 1) == 0 assert c.prev_moment_operating_on([a, b], 0) is None