def test_map_moments_drop_empty_moments_deep(): op = cirq.X(cirq.NamedQubit("q")) c_nested = cirq.FrozenCircuit(cirq.Moment(op), cirq.Moment(), cirq.Moment(op)) circuit_op = cirq.CircuitOperation(c_nested).repeat(2) circuit_op_dropped = cirq.CircuitOperation(cirq.FrozenCircuit([op, op])).repeat(2) c_orig = cirq.Circuit( c_nested, cirq.CircuitOperation(c_nested).repeat(6).with_tags("ignore"), c_nested, cirq.CircuitOperation( cirq.FrozenCircuit(circuit_op, circuit_op.with_tags("ignore"), circuit_op) ) .repeat(5) .with_tags("preserve_tag"), ) c_expected = cirq.Circuit( [op, op], cirq.CircuitOperation(c_nested).repeat(6).with_tags("ignore"), [op, op], cirq.CircuitOperation( cirq.FrozenCircuit( circuit_op_dropped, circuit_op.with_tags("ignore"), circuit_op_dropped ) ) .repeat(5) .with_tags("preserve_tag"), ) c_mapped = cirq.map_moments( c_orig, lambda m, i: [] if len(m) == 0 else [m], deep=True, tags_to_ignore=("ignore",) ) cirq.testing.assert_same_circuits(c_mapped, c_expected)
def test_map_moments_drop_empty_moments(): op = cirq.X(cirq.NamedQubit("x")) c = cirq.Circuit(cirq.Moment(op), cirq.Moment(), cirq.Moment(op)) c_mapped = cirq.map_moments(c, lambda m, i: [] if len(m) == 0 else [m]) cirq.testing.assert_same_circuits(c_mapped, cirq.Circuit(c[0], c[0]))