def test_qureg_engine(): eng1 = MainEngine(backend=DummyEngine(), engine_list=[DummyEngine()]) eng2 = MainEngine(backend=DummyEngine(), engine_list=[DummyEngine()]) qureg = _qubit.Qureg([_qubit.Qubit(eng1, 0), _qubit.Qubit(eng1, 1)]) assert eng1 == qureg.engine qureg.engine = eng2 assert qureg[0].engine == eng2 and qureg[1].engine == eng2
def test_qubit_not_copyable(): eng = MainEngine(backend=DummyEngine(), engine_list=[DummyEngine()]) qubit = _qubit.Qubit(eng, 10) qubit_copy = copy(qubit) assert id(qubit) == id(qubit_copy) qubit_deepcopy = deepcopy(qubit) assert id(qubit) == id(qubit_deepcopy)
def test_qureg(qubit_ids, expected): eng = MainEngine(backend = DummyEngine(), engine_list = [DummyEngine()]) qureg = _qubit.Qureg() for qubit_id in qubit_ids: qubit = _qubit.Qubit(eng, qubit_id) qureg.append(qubit) assert str(qureg) == expected
def test_qureg_measure_exception(): eng = MainEngine(backend=DummyEngine(), engine_list=[DummyEngine()]) qureg = _qubit.Qureg() for qubit_id in [0, 1]: qubit = _qubit.Qubit(eng, qubit_id) qureg.append(qubit) with pytest.raises(Exception): qureg.__bool__() with pytest.raises(Exception): qureg.__int__()
def test_qubit_del(mock_main_engine): qubit = _qubit.Qubit(mock_main_engine, 10) assert qubit.id == 10 qubit.__del__() assert qubit.id == -1 assert mock_main_engine.num_calls == 1 # We need hand coded mock here as mock.Mock cannot check qubit_id # (it would save the call argument which is a qubit but id would be # reset to -1 as qubits only have references) assert mock_main_engine.qubit_id == 10