From 04e9585600644922d830515db44987ecbf43c14b Mon Sep 17 00:00:00 2001 From: Zulfat Nutfullin Date: Thu, 5 Feb 2026 22:22:38 -0800 Subject: [PATCH 1/2] Add job result tests for output with dash --- azure-quantum/tests/test_job_results.py | 107 +++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/azure-quantum/tests/test_job_results.py b/azure-quantum/tests/test_job_results.py index 9e1d15d9..a3c7ab75 100644 --- a/azure-quantum/tests/test_job_results.py +++ b/azure-quantum/tests/test_job_results.py @@ -4,7 +4,7 @@ ## import pytest -from unittest.mock import Mock +from unittest.mock import Mock, MagicMock from azure.quantum import Job, JobDetails @@ -385,6 +385,39 @@ def test_job_for_microsoft_quantum_results_shots_v2_tuple_success(): assert job_results[2] == [1] +def test_job_for_microsoft_quantum_results_v2_with_dash(): + output = """ + { + "DataFormat": "microsoft.quantum-results.v2", + "Results": [ + { + "Histogram": [ + { + "Outcome": [ 0, 1, "-" ], + "Display": "[0, 1, -]", + "Count": 1 + } + ], + "Shots": [ [ 0, 1, "-" ] ] + } + ] + } + """ + job_results = _get_job_results("microsoft.quantum-results.v2", output) + assert len(job_results.keys()) == 1 + assert job_results["[0, 1, -]"] == 1.0 + + job_results = _get_job_results_histogram("microsoft.quantum-results.v2", output) + # expecting dict with key: [0, 1, -] and value: {'outcome': [0, 1, '-'], 'count': 1} + assert len(job_results.keys()) == 1 + assert job_results["[0, 1, -]"]["count"] == 1 + assert job_results["[0, 1, -]"]["outcome"] == [0, 1, '-'] + + job_results = _get_job_results_shots("microsoft.quantum-results.v2", output) + assert len(job_results) == 1 + assert job_results[0] == [0, 1, '-'] + + def test_job_for_microsoft_quantum_results_shots_v2_error_in_shots(): output = """ { @@ -531,3 +564,75 @@ def test_job_for_microsoft_quantum_results_shots_v2_wrong_type_raises_exception( assert False except Exception: assert True + + +def test_azure_quantum_job_result_for_microsoft_quantum_results_v2_with_dash(): + """Test AzureQuantumJob.result() method for dash in output raises SyntaxError""" + from azure.quantum.qiskit import AzureQuantumJob + + output = """ + { + "DataFormat": "microsoft.quantum-results.v2", + "Results": [ + { + "Histogram": [ + { + "Outcome": [ 0, 1, "-" ], + "Display": "[0, 1, -]", + "Count": 1 + } + ], + "Shots": [ [ 0, 1, "-" ] ] + } + ] + } + """ + + # Mock the backend + mock_backend = MagicMock() + mock_backend.name = "test-backend" + mock_backend.version = "1.0" + mock_backend.configuration().simulator = False + + # Mock the provider + mock_provider = MagicMock() + mock_workspace = MagicMock() + mock_provider.get_workspace.return_value = mock_workspace + mock_backend.provider = mock_provider + + # Mock the Azure Job + mock_azure_job = MagicMock() + mock_azure_job.id = "test-job-id" + mock_azure_job.details.id = "test-job-id" + mock_azure_job.details.name = "test-job-name" + mock_azure_job.details.status = "Succeeded" + mock_azure_job.details.output_data_format = "microsoft.quantum-results.v2" + mock_azure_job.details.metadata = {"qiskit": "{}"} + mock_azure_job.details.error_data = None + mock_azure_job.details.input_params = { + "items": [{"entryPoint": "main"}], + "count": 1 + } + + # Mock download_data to return the output + class DownloadDataMock(object): + pass + + download_data = DownloadDataMock() + download_data.decode = Mock(return_value=output) + mock_azure_job.download_data = Mock(return_value=download_data) + mock_azure_job.wait_until_completed = Mock() + mock_azure_job.has_completed = Mock(return_value=True) + + # Mock get_results_histogram and get_results_shots + mock_azure_job.get_results_histogram.return_value = { + "[0, 1, -]": {"outcome": [0, 1, "-"], "count": 1} + } + mock_azure_job.get_results_shots.return_value = [[0, 1, "-"]] + + # Create AzureQuantumJob + qiskit_job = AzureQuantumJob(backend=mock_backend, azure_job=mock_azure_job) + + # Call result() method - expect SyntaxError due to "-" in outcome + with pytest.raises(SyntaxError): + qiskit_job.result() From 4313d64eb5f99eea96af678a6d44258134b77437 Mon Sep 17 00:00:00 2001 From: Zulfat Nutfullin Date: Mon, 23 Feb 2026 16:58:57 -0800 Subject: [PATCH 2/2] Removed test for qiskit job --- azure-quantum/tests/test_job_results.py | 74 +------------------------ 1 file changed, 1 insertion(+), 73 deletions(-) diff --git a/azure-quantum/tests/test_job_results.py b/azure-quantum/tests/test_job_results.py index a3c7ab75..a2bfe71f 100644 --- a/azure-quantum/tests/test_job_results.py +++ b/azure-quantum/tests/test_job_results.py @@ -4,7 +4,7 @@ ## import pytest -from unittest.mock import Mock, MagicMock +from unittest.mock import Mock from azure.quantum import Job, JobDetails @@ -564,75 +564,3 @@ def test_job_for_microsoft_quantum_results_shots_v2_wrong_type_raises_exception( assert False except Exception: assert True - - -def test_azure_quantum_job_result_for_microsoft_quantum_results_v2_with_dash(): - """Test AzureQuantumJob.result() method for dash in output raises SyntaxError""" - from azure.quantum.qiskit import AzureQuantumJob - - output = """ - { - "DataFormat": "microsoft.quantum-results.v2", - "Results": [ - { - "Histogram": [ - { - "Outcome": [ 0, 1, "-" ], - "Display": "[0, 1, -]", - "Count": 1 - } - ], - "Shots": [ [ 0, 1, "-" ] ] - } - ] - } - """ - - # Mock the backend - mock_backend = MagicMock() - mock_backend.name = "test-backend" - mock_backend.version = "1.0" - mock_backend.configuration().simulator = False - - # Mock the provider - mock_provider = MagicMock() - mock_workspace = MagicMock() - mock_provider.get_workspace.return_value = mock_workspace - mock_backend.provider = mock_provider - - # Mock the Azure Job - mock_azure_job = MagicMock() - mock_azure_job.id = "test-job-id" - mock_azure_job.details.id = "test-job-id" - mock_azure_job.details.name = "test-job-name" - mock_azure_job.details.status = "Succeeded" - mock_azure_job.details.output_data_format = "microsoft.quantum-results.v2" - mock_azure_job.details.metadata = {"qiskit": "{}"} - mock_azure_job.details.error_data = None - mock_azure_job.details.input_params = { - "items": [{"entryPoint": "main"}], - "count": 1 - } - - # Mock download_data to return the output - class DownloadDataMock(object): - pass - - download_data = DownloadDataMock() - download_data.decode = Mock(return_value=output) - mock_azure_job.download_data = Mock(return_value=download_data) - mock_azure_job.wait_until_completed = Mock() - mock_azure_job.has_completed = Mock(return_value=True) - - # Mock get_results_histogram and get_results_shots - mock_azure_job.get_results_histogram.return_value = { - "[0, 1, -]": {"outcome": [0, 1, "-"], "count": 1} - } - mock_azure_job.get_results_shots.return_value = [[0, 1, "-"]] - - # Create AzureQuantumJob - qiskit_job = AzureQuantumJob(backend=mock_backend, azure_job=mock_azure_job) - - # Call result() method - expect SyntaxError due to "-" in outcome - with pytest.raises(SyntaxError): - qiskit_job.result()