@@ -46,45 +46,40 @@ class TestImageRegistration:
4646
4747 def test_initialization_with_defaults (self ):
4848 """Test that ImageRegistration initializes with default values."""
49- reg = ImageRegistration ()
50- assert reg .fixed_image_path is None
51- assert reg .moving_image_path is None
52- assert reg .save_directory is None
53- assert reg .imaging_round == 0
54- assert reg .crop is False
55- assert reg .enable_logging is True
56- assert reg ._log is None
57- assert reg ._image_opener is not None
49+ with tempfile .TemporaryDirectory () as tmpdir :
50+ # Create dummy image files
51+ fixed_path = os .path .join (tmpdir , "fixed.npy" )
52+ moving_path = os .path .join (tmpdir , "moving.npy" )
53+
54+ # Create simple 3D arrays
55+ fixed_arr = np .random .rand (10 , 10 , 10 ).astype (np .float32 )
56+ moving_arr = np .random .rand (10 , 10 , 10 ).astype (np .float32 )
57+
58+ np .save (fixed_path , fixed_arr )
59+ np .save (moving_path , moving_arr )
60+
61+ reg = ImageRegistration (
62+ fixed_image_path = fixed_path ,
63+ moving_image_path = moving_path ,
64+ save_directory = tmpdir ,
65+ )
66+ assert reg .fixed_image_path == fixed_path
67+ assert reg .moving_image_path == moving_path
68+ assert reg .save_directory == tmpdir
69+ assert reg .imaging_round == 0
70+ assert reg .crop is False
71+ assert reg .force_override is False
72+ assert reg ._log is not None
73+ assert reg ._image_opener is not None
5874
5975 def test_initialization_with_custom_values (self ):
6076 """Test that ImageRegistration initializes with custom values."""
61- reg = ImageRegistration (
62- fixed_image_path = "fixed.tif" ,
63- moving_image_path = "moving.tif" ,
64- save_directory = "/tmp/output" ,
65- imaging_round = 5 ,
66- crop = True ,
67- enable_logging = False ,
68- )
69- assert reg .fixed_image_path == "fixed.tif"
70- assert reg .moving_image_path == "moving.tif"
71- assert reg .save_directory == "/tmp/output"
72- assert reg .imaging_round == 5
73- assert reg .crop is True
74- assert reg .enable_logging is False
75-
76- def test_register_missing_required_parameters (self ):
77- """Test that register raises ValueError when required parameters are missing."""
78- reg = ImageRegistration ()
79- with pytest .raises (ValueError , match = "fixed_image_path, moving_image_path, and save_directory" ):
80- reg .register ()
81-
82- def test_register_uses_instance_attributes (self ):
83- """Test that register uses instance attributes when parameters not provided."""
8477 with tempfile .TemporaryDirectory () as tmpdir :
8578 # Create dummy image files
8679 fixed_path = os .path .join (tmpdir , "fixed.npy" )
8780 moving_path = os .path .join (tmpdir , "moving.npy" )
81+ output_dir = os .path .join (tmpdir , "output" )
82+ os .makedirs (output_dir , exist_ok = True )
8883
8984 # Create simple 3D arrays
9085 fixed_arr = np .random .rand (10 , 10 , 10 ).astype (np .float32 )
@@ -96,22 +91,42 @@ def test_register_uses_instance_attributes(self):
9691 reg = ImageRegistration (
9792 fixed_image_path = fixed_path ,
9893 moving_image_path = moving_path ,
99- save_directory = tmpdir ,
100- imaging_round = 1 ,
94+ save_directory = output_dir ,
95+ imaging_round = 5 ,
96+ crop = True ,
10197 enable_logging = False ,
10298 )
99+ assert reg .fixed_image_path == fixed_path
100+ assert reg .moving_image_path == moving_path
101+ assert reg .save_directory == output_dir
102+ assert reg .imaging_round == 5
103+ assert reg .crop is True
104+ assert reg .force_override is False
105+
106+ def test_initialization_validates_required_parameters (self ):
107+ """Test that ImageRegistration __init__ validates required parameters."""
108+ with tempfile .TemporaryDirectory () as tmpdir :
109+ # Create dummy image files
110+ fixed_path = os .path .join (tmpdir , "fixed.npy" )
111+ moving_path = os .path .join (tmpdir , "moving.npy" )
103112
104- # Mock the internal methods to avoid actual registration
105- with patch .object (reg , '_perform_linear_registration' , return_value = MagicMock ()):
106- with patch .object (reg , '_perform_nonlinear_registration' ):
107- with patch ('clearex.registration.crop_data' , return_value = moving_arr ):
108- reg .register ()
113+ # Create simple 3D arrays
114+ fixed_arr = np .random .rand (10 , 10 , 10 ).astype (np .float32 )
115+ moving_arr = np .random .rand (10 , 10 , 10 ).astype (np .float32 )
109116
110- # Verify that logging was initialized
111- assert reg ._log is not None
117+ np .save (fixed_path , fixed_arr )
118+ np .save (moving_path , moving_arr )
119+
120+ # Test initialization succeeds with all required parameters
121+ reg = ImageRegistration (
122+ fixed_image_path = fixed_path ,
123+ moving_image_path = moving_path ,
124+ save_directory = tmpdir ,
125+ )
126+ assert reg is not None
112127
113- def test_register_uses_provided_parameters (self ):
114- """Test that register prefers provided parameters over instance attributes ."""
128+ def test_register_uses_instance_attributes (self ):
129+ """Test that register uses instance attributes when parameters not provided ."""
115130 with tempfile .TemporaryDirectory () as tmpdir :
116131 # Create dummy image files
117132 fixed_path = os .path .join (tmpdir , "fixed.npy" )
@@ -125,25 +140,21 @@ def test_register_uses_provided_parameters(self):
125140 np .save (moving_path , moving_arr )
126141
127142 reg = ImageRegistration (
128- fixed_image_path = "wrong_fixed.tif" ,
129- moving_image_path = "wrong_moving.tif" ,
130- save_directory = "/wrong/path" ,
131- imaging_round = 99 ,
143+ fixed_image_path = fixed_path ,
144+ moving_image_path = moving_path ,
145+ save_directory = tmpdir ,
146+ imaging_round = 1 ,
132147 enable_logging = False ,
133148 )
134149
135150 # Mock the internal methods to avoid actual registration
136- with patch .object (reg , '_perform_linear_registration' , return_value = MagicMock ()):
137- with patch .object (reg , '_perform_nonlinear_registration' ):
138- with patch ('clearex.registration.crop_data' , return_value = moving_arr ):
139- reg .register (
140- fixed_image_path = fixed_path ,
141- moving_image_path = moving_path ,
142- save_directory = tmpdir ,
143- imaging_round = 1 ,
144- )
145-
146- # The method should have run successfully with provided params
151+ mock_image = MagicMock ()
152+ mock_mask = MagicMock ()
153+ with patch .object (reg , '_perform_linear_registration' , return_value = (mock_image , mock_mask )):
154+ with patch .object (reg , '_perform_nonlinear_registration' , return_value = (mock_image , mock_mask )):
155+ reg .register ()
156+
157+ # Verify that logging was initialized
147158 assert reg ._log is not None
148159
149160
0 commit comments