tests.test_pyapi
Test the API exposed by this package.
1"""Test the API exposed by this package.""" 2 3from __future__ import annotations 4 5import subprocess 6from typing import TYPE_CHECKING 7from unittest import mock 8 9from semver import Version 10 11import dicom_echo as echo 12 13if TYPE_CHECKING: # pragma: no cover 14 from unittest.mock import MagicMock 15 16dummy_address = 'dummy:1234' 17 18 19def test_dicom_storescp_version(dicom_storescp: str) -> None: 20 """Test the version of the `dicom-storescp` command.""" 21 _, raw_version = subprocess.check_output([dicom_storescp, '--version'], text=True).split() 22 version = Version.parse(raw_version) 23 24 assert Version(0, 7, 0) <= version 25 26 27def test_send_echo(scpserver: str) -> None: 28 """Test sending a C-ECHO message to a local DICOM SCP server.""" 29 rc = echo.send(scpserver) 30 31 assert 0 == rc 32 33 34@mock.patch('dicom_echo.counter', new_callable=echo.Counter) 35def test_message_id_counter(mock_counter: echo.Counter, mock_send_rc0: MagicMock) -> None: 36 """Verify that the message ID counter increments on each call to `dicom_echo.send()`.""" 37 # Arrange 38 num_calls = 4 39 40 # Act 41 for _ in range(num_calls): 42 echo.send(dummy_address) 43 44 # Assert 45 assert num_calls == mock_send_rc0.call_count 46 assert num_calls == mock_counter.count 47 48 message_ids = [call.kwargs['message_id'] for call in mock_send_rc0.call_args_list] 49 assert list(range(1, num_calls + 1)) == message_ids 50 51 52@mock.patch('dicom_echo.counter', new_callable=echo.Counter) 53def test_default_values(mock_counter: echo.Counter, mock_send_rc0: MagicMock) -> None: 54 """Verify that the message ID counter increments on each call to `dicom_echo.send()`.""" 55 echo.send(dummy_address) 56 57 mock_send_rc0.assert_called_once() 58 assert dummy_address == mock_send_rc0.call_args.args[0] 59 assert echo.DEFAULT_CALLED_AE_TITLE == mock_send_rc0.call_args.kwargs['called_ae_title'] 60 assert echo.DEFAULT_CALLING_AE_TITLE == mock_send_rc0.call_args.kwargs['calling_ae_title'] 61 assert mock_counter.count == mock_send_rc0.call_args.kwargs['message_id'] 62 63 64def test_message_id_override(mock_send_rc0: MagicMock) -> None: 65 """Verify that the default count-based message ID can be overridden.""" 66 # Arrange 67 message_id = 42 68 69 # Act 70 echo.send(dummy_address, message_id=message_id) 71 72 # Assert 73 mock_send_rc0.assert_called_once() 74 assert message_id == mock_send_rc0.call_args.kwargs['message_id']
dummy_address =
'dummy:1234'
def
test_dicom_storescp_version(dicom_storescp: str) -> None:
20def test_dicom_storescp_version(dicom_storescp: str) -> None: 21 """Test the version of the `dicom-storescp` command.""" 22 _, raw_version = subprocess.check_output([dicom_storescp, '--version'], text=True).split() 23 version = Version.parse(raw_version) 24 25 assert Version(0, 7, 0) <= version
Test the version of the dicom-storescp
command.
def
test_send_echo(scpserver: str) -> None:
28def test_send_echo(scpserver: str) -> None: 29 """Test sending a C-ECHO message to a local DICOM SCP server.""" 30 rc = echo.send(scpserver) 31 32 assert 0 == rc
Test sending a C-ECHO message to a local DICOM SCP server.
@mock.patch('dicom_echo.counter', new_callable=echo.Counter)
def
test_message_id_counter( mock_counter: dicom_echo.Counter, mock_send_rc0: unittest.mock.MagicMock) -> None:
35@mock.patch('dicom_echo.counter', new_callable=echo.Counter) 36def test_message_id_counter(mock_counter: echo.Counter, mock_send_rc0: MagicMock) -> None: 37 """Verify that the message ID counter increments on each call to `dicom_echo.send()`.""" 38 # Arrange 39 num_calls = 4 40 41 # Act 42 for _ in range(num_calls): 43 echo.send(dummy_address) 44 45 # Assert 46 assert num_calls == mock_send_rc0.call_count 47 assert num_calls == mock_counter.count 48 49 message_ids = [call.kwargs['message_id'] for call in mock_send_rc0.call_args_list] 50 assert list(range(1, num_calls + 1)) == message_ids
Verify that the message ID counter increments on each call to dicom_echo.send()
.
@mock.patch('dicom_echo.counter', new_callable=echo.Counter)
def
test_default_values( mock_counter: dicom_echo.Counter, mock_send_rc0: unittest.mock.MagicMock) -> None:
53@mock.patch('dicom_echo.counter', new_callable=echo.Counter) 54def test_default_values(mock_counter: echo.Counter, mock_send_rc0: MagicMock) -> None: 55 """Verify that the message ID counter increments on each call to `dicom_echo.send()`.""" 56 echo.send(dummy_address) 57 58 mock_send_rc0.assert_called_once() 59 assert dummy_address == mock_send_rc0.call_args.args[0] 60 assert echo.DEFAULT_CALLED_AE_TITLE == mock_send_rc0.call_args.kwargs['called_ae_title'] 61 assert echo.DEFAULT_CALLING_AE_TITLE == mock_send_rc0.call_args.kwargs['calling_ae_title'] 62 assert mock_counter.count == mock_send_rc0.call_args.kwargs['message_id']
Verify that the message ID counter increments on each call to dicom_echo.send()
.
def
test_message_id_override(mock_send_rc0: unittest.mock.MagicMock) -> None:
65def test_message_id_override(mock_send_rc0: MagicMock) -> None: 66 """Verify that the default count-based message ID can be overridden.""" 67 # Arrange 68 message_id = 42 69 70 # Act 71 echo.send(dummy_address, message_id=message_id) 72 73 # Assert 74 mock_send_rc0.assert_called_once() 75 assert message_id == mock_send_rc0.call_args.kwargs['message_id']
Verify that the default count-based message ID can be overridden.