예제 #1
0
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'), ())
예제 #2
0
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))
예제 #3
0
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)))
예제 #4
0
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)))
예제 #5
0
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
예제 #6
0
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)