def test_tagged_operation_equality(): eq = cirq.testing.EqualsTester() q1 = cirq.GridQubit(1, 1) op = cirq.X(q1) op2 = cirq.Y(q1) eq.add_equality_group(op) eq.add_equality_group(op.with_tags('tag1'), cirq.TaggedOperation(op, 'tag1')) eq.add_equality_group(op2.with_tags('tag1'), cirq.TaggedOperation(op2, 'tag1')) eq.add_equality_group(op.with_tags('tag2'), cirq.TaggedOperation(op, 'tag2')) eq.add_equality_group( op.with_tags('tag1', 'tag2'), op.with_tags('tag1').with_tags('tag2'), cirq.TaggedOperation(op, 'tag1', 'tag2'), )
def test_setters_deprecated(): q = cirq.LineQubit(0) subop = cirq.X(q) op = cirq.TaggedOperation(subop, 'tag') assert op.sub_operation == subop with cirq.testing.assert_deprecated('mutators', deadline='v0.15'): new_subop = cirq.Y(q) op.sub_operation = new_subop assert op.sub_operation == new_subop
def test_decompose_tagged_operation(): op = cirq.TaggedOperation( cirq.CircuitOperation( circuit=cirq.FrozenCircuit( [cirq.Moment(cirq.SWAP(cirq.LineQubit(0), cirq.LineQubit(1)))] ) ), 'tag', ) assert cirq.decompose_once(op) == cirq.decompose_once(op.untagged)
def test_stratify_respects_no_compile_operations(): q1, q2, q3, q4, q5 = cirq.LineQubit.range(5) input_circuit = cirq.Circuit( cirq.Moment([ cirq.X(q1).with_tags("nocompile"), cirq.ISWAP(q2, q3).with_tags("nocompile"), cirq.Z(q5), ]), cirq.Moment([cirq.X(q1), cirq.ISWAP(q4, q5)]), cirq.Moment([cirq.ISWAP(q1, q2), cirq.X(q4)]), ) expected = cirq.Circuit([ cirq.Moment( cirq.TaggedOperation(cirq.X(cirq.LineQubit(0)), 'nocompile'), cirq.TaggedOperation( cirq.ISWAP(cirq.LineQubit(1), cirq.LineQubit(2)), 'nocompile'), ), cirq.Moment(cirq.X(cirq.LineQubit(0))), cirq.Moment(cirq.Z(cirq.LineQubit(4))), cirq.Moment( cirq.ISWAP(cirq.LineQubit(3), cirq.LineQubit(4)), cirq.ISWAP(cirq.LineQubit(0), cirq.LineQubit(1)), ), cirq.Moment(cirq.X(cirq.LineQubit(3))), ]) cirq.testing.assert_has_diagram( input_circuit, ''' 0: ───X['nocompile']───────X───────iSwap─── │ 1: ───iSwap['nocompile']───────────iSwap─── │ 2: ───iSwap──────────────────────────────── 3: ────────────────────────iSwap───X─────── │ 4: ───Z────────────────────iSwap─────────── ''', ) cirq.testing.assert_has_diagram( expected, ''' 0: ───X['nocompile']───────X───────iSwap─────── │ 1: ───iSwap['nocompile']───────────iSwap─────── │ 2: ───iSwap──────────────────────────────────── 3: ────────────────────────────────iSwap───X─── │ 4: ────────────────────────────Z───iSwap─────── ''', ) cirq.testing.assert_same_circuits( cirq.stratified_circuit( input_circuit, categories=[cirq.X, cirq.Z], context=cirq.TransformerContext(tags_to_ignore=("nocompile", )), ), expected, )