|
18 | 18 | class TestResultsHandler: |
19 | 19 | """Unit tests for the ResultsHandler class.""" |
20 | 20 |
|
| 21 | + def test__validate_folder_name(self): |
| 22 | + """Test the `_validate_folder_name` method.""" |
| 23 | + # Setup |
| 24 | + handler = Mock() |
| 25 | + handler.list = Mock(return_value=['run1', 'run2']) |
| 26 | + expected_error = re.escape("Folder 'run3' does not exist in the results directory.") |
| 27 | + |
| 28 | + # Run and Assert |
| 29 | + ResultsHandler._validate_folder_name(handler, 'run1') |
| 30 | + with pytest.raises(ValueError, match=expected_error): |
| 31 | + ResultsHandler._validate_folder_name(handler, 'run3') |
| 32 | + |
21 | 33 | def test__compute_wins(self): |
22 | 34 | """Test the `_compute_wins` method.""" |
23 | 35 | # Setup |
@@ -184,6 +196,64 @@ def test_summarize(self): |
184 | 196 | assert folder == folder_name |
185 | 197 | pd.testing.assert_frame_equal(agg_result, aggregated_results) |
186 | 198 |
|
| 199 | + def test_load_results(self): |
| 200 | + """Test the `load_results` method.""" |
| 201 | + # Setup |
| 202 | + folder_name = 'SDGym_results_07_15_2025' |
| 203 | + handler = Mock() |
| 204 | + handler._validate_folder_name = Mock() |
| 205 | + handler._get_results_files = Mock(return_value=['results.csv', 'results(1).csv']) |
| 206 | + result_1 = pd.DataFrame({ |
| 207 | + 'Dataset': ['A', 'B'], |
| 208 | + 'Synthesizer': ['Synth1'] * 2, |
| 209 | + 'Quality_Score': [0.5, 0.6], |
| 210 | + }) |
| 211 | + result_2 = pd.DataFrame({ |
| 212 | + 'Dataset': ['A', 'B'], |
| 213 | + 'Synthesizer': ['Synth2'] * 2, |
| 214 | + 'Quality_Score': [0.7, 0.8], |
| 215 | + }) |
| 216 | + result_list = [result_1, result_2] |
| 217 | + handler._get_results = Mock(return_value=result_list) |
| 218 | + |
| 219 | + # Run |
| 220 | + results = ResultsHandler.load_results(handler, folder_name) |
| 221 | + |
| 222 | + # Assert |
| 223 | + handler._validate_folder_name.assert_called_once_with(folder_name) |
| 224 | + expected_results = pd.concat(result_list, ignore_index=True) |
| 225 | + pd.testing.assert_frame_equal(results, expected_results) |
| 226 | + handler._get_results_files.assert_called_once_with( |
| 227 | + folder_name, prefix='results', suffix='.csv' |
| 228 | + ) |
| 229 | + handler._get_results.assert_called_once_with(folder_name, ['results.csv', 'results(1).csv']) |
| 230 | + |
| 231 | + def test_load_metainfo(self): |
| 232 | + """Test the `load_metainfo` method.""" |
| 233 | + # Setup |
| 234 | + folder_name = 'SDGym_results_07_15_2025' |
| 235 | + handler = Mock() |
| 236 | + handler._validate_folder_name = Mock() |
| 237 | + handler._get_results_files = Mock(return_value=['metainfo.yaml', 'metainfo(1).yaml']) |
| 238 | + yaml_content_1 = {'run_id': 'run_1', 'sdgym_version': '0.9.0'} |
| 239 | + yaml_content_2 = {'run_id': 'run_2', 'sdgym_version': '0.9.1'} |
| 240 | + handler._load_yaml_file = Mock(side_effect=[yaml_content_1, yaml_content_2]) |
| 241 | + |
| 242 | + # Run |
| 243 | + metainfo = ResultsHandler.load_metainfo(handler, folder_name) |
| 244 | + |
| 245 | + # Assert |
| 246 | + handler._validate_folder_name.assert_called_once_with(folder_name) |
| 247 | + expected_metainfo = { |
| 248 | + 'run_1': {'sdgym_version': '0.9.0'}, |
| 249 | + 'run_2': {'sdgym_version': '0.9.1'}, |
| 250 | + } |
| 251 | + assert metainfo == expected_metainfo |
| 252 | + handler._get_results_files.assert_called_once_with( |
| 253 | + folder_name, prefix='metainfo', suffix='.yaml' |
| 254 | + ) |
| 255 | + assert handler._load_yaml_file.call_count == 2 |
| 256 | + |
187 | 257 |
|
188 | 258 | class TestLocalResultsHandler: |
189 | 259 | """Unit tests for the LocalResultsHandler class.""" |
|
0 commit comments