def test_run_has_correct_output(self): api = MockApiClient() with patch('sys.stdout', new_callable=io.StringIO) as std_mock: backend = QIBackend(quantum_inspire_api=api, verbose=2) backend.qasm = "_" backend._measured_ids = [0] backend.main_engine = MagicMock() backend.main_engine.mapper.current_mapping = [0, 1] backend._run() std_output = std_mock.getvalue() actual = backend._quantum_inspire_result api.execute_qasm.assert_called_once() self.assertEqual(api.execute_qasm(), actual) self.assertTrue(backend._clear)
def test_run_raises_error_no_result(self): api = MockApiClient() with patch('sys.stdout', new_callable=io.StringIO): backend = QIBackend(quantum_inspire_api=api, verbose=2) backend.qasm = "_" backend._measured_ids = [0, 1] backend.main_engine = MagicMock() backend.main_engine.mapper.current_mapping = [0, 1] result_mock = MagicMock() result_mock.get.return_value = {} api.execute_qasm.return_value = result_mock self.assertRaisesRegex(ProjectQBackendError, 'raw_text', backend._run) api.execute_qasm.assert_called_once()
def test_get_probabilities_returns_correct_result(self): api = MockApiClient() backend = QIBackend(quantum_inspire_api=api) value_a = 0.4892578125 value_b = 0.5097656250 backend._measured_states = { 0: value_a, 11: value_b } # 00000000 and 00001011 expected = {'00': value_a, '11': value_b} backend.main_engine = MagicMock() backend._measured_ids = [0, 1] backend.main_engine.mapper.current_mapping = [0, 1] actual = backend.get_probabilities([MagicMock(id=0), MagicMock(id=1)]) self.assertDictEqual(expected, actual)