From 04e9585600644922d830515db44987ecbf43c14b Mon Sep 17 00:00:00 2001 From: Zulfat Nutfullin Date: Thu, 5 Feb 2026 22:22:38 -0800 Subject: [PATCH] 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()