Skip to content

Commit 7fbef1b

Browse files
committed
Add explicit failure mode test.
Signed-off-by: M Q <mingmelvinq@nvidia.com>
1 parent 6fbac5a commit 7fbef1b

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

tests/data/test_nvimgcodec_pydicom_reader.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ def test_get_default_reader_registration_order(self):
5353
self.assertNotIn("itkreader", order)
5454
self.assertNotIn("nvimgcodecpydicomreader", order)
5555

56+
def test_get_default_reader_registration_order_nvimgcodec_env(self):
57+
with patch.dict(os.environ, {"MONAI_DICOM_READER": "nvimgcodec"}):
58+
order = get_default_reader_registration_order()
59+
self.assertEqual(order[-1], "nvimgcodecpydicomreader")
60+
self.assertNotIn("pydicomreader", order)
61+
self.assertNotIn("itkreader", order)
62+
5663
def test_dicom_reader_env_map_values(self):
5764
self.assertEqual(set(DICOM_READER_ENV_MAP.keys()), {"itk", "pydicom", "nvimgcodec"})
5865

@@ -118,6 +125,28 @@ def test_load_image_nvimgcodec_env(self, _mock_register, _mock_available):
118125
reader_types = [type(r).__name__ for r in loader.readers]
119126
self.assertEqual(reader_types[-1], "NvImgCodecPydicomReader")
120127

128+
@SkipIfNoModule("pydicom")
129+
@patch("monai.data.nvimgcodec_pydicom_plugin.register_as_decoder_plugin", return_value=False)
130+
@patch("monai.data.nvimgcodec_pydicom_plugin.is_nvimgcodec_available", return_value=False)
131+
def test_load_image_nvimgcodec_env_unavailable_auto_select(self, _mock_available, _mock_register):
132+
"""When nvimgcodec is unavailable, verify_suffix blocks auto-selection and no DICOM reader remains."""
133+
with patch.dict(os.environ, {"MONAI_DICOM_READER": "nvimgcodec"}):
134+
order = get_default_reader_registration_order()
135+
self.assertEqual(order[-1], "nvimgcodecpydicomreader")
136+
137+
loader = LoadImage(image_only=True)
138+
reader_types = [type(r).__name__ for r in loader.readers]
139+
self.assertEqual(reader_types[-1], "NvImgCodecPydicomReader")
140+
self.assertNotIn("ITKReader", reader_types)
141+
self.assertNotIn("PydicomReader", reader_types)
142+
143+
nv_reader = loader.readers[-1]
144+
self.assertFalse(nv_reader.verify_suffix("tests/testing_data/CT_DICOM"))
145+
146+
with self.assertRaises(RuntimeError) as err_ctx:
147+
loader("tests/testing_data/CT_DICOM")
148+
self.assertIn("cannot find a suitable reader", str(err_ctx.exception))
149+
121150

122151
class TestNvImgCodecPluginRegistration(unittest.TestCase):
123152
@SkipIfNoModule("pydicom")

0 commit comments

Comments
 (0)