@@ -123,6 +123,66 @@ def test_execute_full_workflow(self):
123123 residue_types = set (entry [3 ] for entry in data_logger .residue_data )
124124 self .assertIn ("Conformational" , residue_types )
125125
126+ def test_water_entropy_sets_selection_string_when_all (self ):
127+ """
128+ Tests that when `selection_string` is initially 'all' and water entropy is
129+ enabled, the `execute` method sets `selection_string` to 'not water' after
130+ calculating water entropy.
131+ """
132+ mock_universe = MagicMock ()
133+ mock_universe .select_atoms .return_value .n_atoms = 5
134+
135+ args = MagicMock (water_entropy = True , selection_string = "all" )
136+ run_manager = MagicMock ()
137+ level_manager = MagicMock ()
138+ data_logger = DataLogger ()
139+
140+ manager = EntropyManager (
141+ run_manager , args , mock_universe , data_logger , level_manager
142+ )
143+ manager ._get_trajectory_bounds = MagicMock (return_value = (0 , 10 , 1 ))
144+ manager ._get_number_frames = MagicMock (return_value = 11 )
145+ manager ._calculate_water_entropy = MagicMock ()
146+ manager ._get_reduced_universe = MagicMock (return_value = "reduced" )
147+ manager ._level_manager .select_levels = MagicMock (return_value = (0 , []))
148+ manager ._finalize_molecule_results = MagicMock ()
149+ manager ._data_logger .log_tables = MagicMock ()
150+
151+ manager .execute ()
152+
153+ manager ._calculate_water_entropy .assert_called_once ()
154+ assert args .selection_string == "not water"
155+
156+ def test_water_entropy_appends_to_custom_selection_string (self ):
157+ """
158+ Tests that when `selection_string` is a custom value and water
159+ entropy is enabled, the `execute` method appends ' and not water'
160+ to the existing selection string after calculating water entropy.
161+ """
162+ mock_universe = MagicMock ()
163+ mock_universe .select_atoms .return_value .n_atoms = 5
164+
165+ args = MagicMock (water_entropy = True , selection_string = "protein" )
166+ run_manager = MagicMock ()
167+ level_manager = MagicMock ()
168+ data_logger = DataLogger ()
169+
170+ manager = EntropyManager (
171+ run_manager , args , mock_universe , data_logger , level_manager
172+ )
173+ manager ._get_trajectory_bounds = MagicMock (return_value = (0 , 10 , 1 ))
174+ manager ._get_number_frames = MagicMock (return_value = 11 )
175+ manager ._calculate_water_entropy = MagicMock ()
176+ manager ._get_reduced_universe = MagicMock (return_value = "reduced" )
177+ manager ._level_manager .select_levels = MagicMock (return_value = (0 , []))
178+ manager ._finalize_molecule_results = MagicMock ()
179+ manager ._data_logger .log_tables = MagicMock ()
180+
181+ manager .execute ()
182+
183+ manager ._calculate_water_entropy .assert_called_once ()
184+ assert args .selection_string == "protein and not water"
185+
126186 def test_get_trajectory_bounds (self ):
127187 """
128188 Tests that `_get_trajectory_bounds` runs and returns expected types.
0 commit comments