@@ -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
122151class TestNvImgCodecPluginRegistration (unittest .TestCase ):
123152 @SkipIfNoModule ("pydicom" )
0 commit comments