def test_permutation_gate_diagram(): q = cirq.LineQubit.range(6) cirq.testing.assert_has_diagram( cirq.Circuit(cirq.X(q[0]), cirq.X(q[5]), QubitPermutationGate([3, 2, 1, 0]).on(*q[1:5])), """ 0: ───X─────── 1: ───[0>3]─── │ 2: ───[1>2]─── │ 3: ───[2>1]─── │ 4: ───[3>0]─── 5: ───X─────── """)
def test_permutation_gate_invalid_permutation(): with pytest.raises(ValueError, match="Invalid permutation"): QubitPermutationGate([1, 1]) with pytest.raises(ValueError, match="Invalid permutation"): QubitPermutationGate([])
def test_permutation_gate_invalid_indices(): with pytest.raises(ValueError, match="Invalid indices"): QubitPermutationGate([1, 0, 2, 4]) with pytest.raises(ValueError, match="Invalid indices"): QubitPermutationGate([-1])
def test_permutation_gate_consistent_protocols(permutation): gate = QubitPermutationGate(list(permutation)) cirq.testing.assert_implements_consistent_protocols(gate)
def test_permutation_gate_repr(): cirq.testing.assert_equivalent_repr(QubitPermutationGate([0, 1]))
def test_permutation_gate_equality(): eq = cirq.testing.EqualsTester() eq.make_equality_group(lambda: QubitPermutationGate([0, 1]), lambda: QubitPermutationGate((0, 1))) eq.add_equality_group(QubitPermutationGate([1, 0]), QubitPermutationGate((1, 0)))
def test_permutation_gate_consistent_protocols(): gate = QubitPermutationGate([1, 0, 2, 3]) cirq.testing.assert_implements_consistent_protocols(gate)