def test_invalid_measurement_gate(): with pytest.raises(ValueError, match='length'): _ = cg.gate_to_proto_dict( cirq.MeasurementGate(3, 'test', invert_mask=(True, )), (cirq.GridQubit(2, 3), cirq.GridQubit(3, 4))) with pytest.raises(ValueError, match='no qubits'): _ = cg.gate_to_proto_dict(cirq.MeasurementGate(1, 'test'), ())
def test_invalid_to_proto_dict_qubit_number(): with pytest.raises(ValueError, match='Wrong number of qubits'): _ = cg.gate_to_proto_dict(cirq.CZ**0.5, (cirq.GridQubit(2, 3),)) with pytest.raises(ValueError, match='Wrong number of qubits'): cg.gate_to_proto_dict(cirq.Z**0.5, (cirq.GridQubit(2, 3), cirq.GridQubit(3, 4))) with pytest.raises(ValueError, match='Wrong number of qubits'): cg.ExpWGate(half_turns=0.5, axis_half_turns=0).to_proto_dict( cirq.GridQubit(2, 3), cirq.GridQubit(3, 4))
def test_invalid_to_proto_dict_qubit_number(): with pytest.raises(ValueError, match='Wrong number of qubits'): _ = cg.gate_to_proto_dict(cirq.CZ**0.5, (cirq.GridQubit(2, 3), )) with pytest.raises(ValueError, match='Wrong number of qubits'): cg.gate_to_proto_dict(cirq.Z**0.5, (cirq.GridQubit(2, 3), cirq.GridQubit(3, 4))) with pytest.raises(ValueError, match='Wrong number of qubits'): cg.gate_to_proto_dict( cirq.PhasedXPowGate(exponent=0.5, phase_exponent=0), (cirq.GridQubit(2, 3), cirq.GridQubit(3, 4)))
def test_unsupported_op(): proto_dict = { 'not_a_gate': { 'target': { 'row': 2, 'col': 3 }, } } with pytest.raises(ValueError, match='invalid operation'): cg.xmon_op_from_proto_dict(proto_dict) with pytest.raises(ValueError, match='know how to serialize'): cg.gate_to_proto_dict( cirq.CCZ, (cirq.GridQubit(0, 0), cirq.GridQubit(0, 1), cirq.GridQubit(0, 2)))
def test_single_qubit_measurement_to_proto_dict_pad_invert_mask(): gate = cirq.MeasurementGate(2, 'test', invert_mask=(True, )) proto_dict = { 'measurement': { 'targets': [{ 'row': 2, 'col': 3 }, { 'row': 2, 'col': 4 }], 'key': 'test', 'invert_mask': ['true', 'false'] } } assert cg.gate_to_proto_dict( gate, (cirq.GridQubit(2, 3), cirq.GridQubit(2, 4))) == proto_dict
def assert_proto_dict_convert(gate: cirq.Gate, proto_dict: Dict, *qubits: cirq.QubitId): assert cg.gate_to_proto_dict(gate, qubits) == proto_dict assert cg.xmon_op_from_proto_dict(proto_dict) == gate(*qubits)