Skip to content
Snippets Groups Projects
Commit f61d2c5d authored by Matthew Andrew's avatar Matthew Andrew
Browse files

Added unit tests for invalid dets Re #23642

parent 44707135
No related branches found
No related tags found
No related merge requests found
...@@ -110,7 +110,7 @@ class GroupingTabPresenter(object): ...@@ -110,7 +110,7 @@ class GroupingTabPresenter(object):
for pair in pairs: for pair in pairs:
self._model.add_pair(pair) self._model.add_pair(pair)
except ValueError as error: except ValueError as error:
self._view.display_warning_box(error) self._view.display_warning_box(str(error))
self.grouping_table_widget.update_view_from_model() self.grouping_table_widget.update_view_from_model()
self.pairing_table_widget.update_view_from_model() self.pairing_table_widget.update_view_from_model()
......
...@@ -50,7 +50,6 @@ class GroupingTablePresenter(object): ...@@ -50,7 +50,6 @@ class GroupingTablePresenter(object):
return True return True
def validate_detector_ids(self, text): def validate_detector_ids(self, text):
# detector_list = run_utils.run_string_to_list(text)
if re.match(run_utils.run_string_regex, text) and max(run_utils.run_string_to_list(text)) <= self._model._data.num_detectors: if re.match(run_utils.run_string_regex, text) and max(run_utils.run_string_to_list(text)) <= self._model._data.num_detectors:
return True return True
self._view.warning_popup("Invalid detector list.") self._view.warning_popup("Invalid detector list.")
...@@ -120,7 +119,6 @@ class GroupingTablePresenter(object): ...@@ -120,7 +119,6 @@ class GroupingTablePresenter(object):
try: try:
self.update_model_from_view() self.update_model_from_view()
except ValueError as error: except ValueError as error:
self._model.remove_pairs_with_removed_name(self._view.get_table_item_text(row, 0))
self._view.warning_popup(error) self._view.warning_popup(error)
self.update_view_from_model() self.update_view_from_model()
......
...@@ -157,7 +157,7 @@ class MuonDataContext(object): ...@@ -157,7 +157,7 @@ class MuonDataContext(object):
if self.check_group_contains_valid_detectors(group): if self.check_group_contains_valid_detectors(group):
self._groups[group.name] = group self._groups[group.name] = group
else: else:
raise ValueError('Detectors in group {} not in instrument'.format(group.name)) raise ValueError('Invalid detectors in group {}'.format(group.name))
def add_pair(self, pair): def add_pair(self, pair):
assert isinstance(pair, MuonPair) assert isinstance(pair, MuonPair)
...@@ -303,7 +303,7 @@ class MuonDataContext(object): ...@@ -303,7 +303,7 @@ class MuonDataContext(object):
self.add_pair(pair) self.add_pair(pair)
def check_group_contains_valid_detectors(self, group): def check_group_contains_valid_detectors(self, group):
if max(group.detectors) > self.num_detectors: if max(group.detectors) > self.num_detectors or min(group.detectors) < 1:
return False return False
else: else:
return True return True
...@@ -45,6 +45,8 @@ class GroupingTabPresenterTest(unittest.TestCase): ...@@ -45,6 +45,8 @@ class GroupingTabPresenterTest(unittest.TestCase):
self.grouping_table_widget, self.grouping_table_widget,
self.pairing_table_widget) self.pairing_table_widget)
self.view.display_warning_box = mock.MagicMock()
def add_three_groups(self): def add_three_groups(self):
testgroup1 = MuonGroup(group_name="fwd", detector_ids=[1, 2, 3, 4, 5]) testgroup1 = MuonGroup(group_name="fwd", detector_ids=[1, 2, 3, 4, 5])
testgroup2 = MuonGroup(group_name="bwd", detector_ids=[6, 7, 8, 9, 10]) testgroup2 = MuonGroup(group_name="bwd", detector_ids=[6, 7, 8, 9, 10])
...@@ -122,6 +124,23 @@ class GroupingTabPresenterTest(unittest.TestCase): ...@@ -122,6 +124,23 @@ class GroupingTabPresenterTest(unittest.TestCase):
self.assertEqual(self.pairing_table_view.pairing_table.cellWidget(0, 1).currentText(), "grp1") self.assertEqual(self.pairing_table_view.pairing_table.cellWidget(0, 1).currentText(), "grp1")
self.assertEqual(self.pairing_table_view.pairing_table.cellWidget(0, 2).currentText(), "grp2") self.assertEqual(self.pairing_table_view.pairing_table.cellWidget(0, 2).currentText(), "grp2")
def test_loading_does_not_insert_invalid_groups(self):
self.view.show_file_browser_and_return_selection = mock.Mock(return_value="grouping.xml")
groups = [MuonGroup(group_name="grp1", detector_ids=[1, 2, 3, 4, 5]),
MuonGroup(group_name="grp2", detector_ids=[6, 7, 8, 9, 1000])]
pairs = [MuonPair(pair_name="pair1", forward_group_name="grp1", backward_group_name="grp2")]
with mock.patch(
"Muon.GUI.Common.grouping_tab_widget.grouping_tab_widget_presenter.xml_utils.load_grouping_from_XML") as mock_load:
# mock the loading to return set groups/pairs
mock_load.return_value = (groups, pairs, 'description')
self.view.load_grouping_button.clicked.emit(True)
self.view.display_warning_box.assert_called_once_with('Invalid detectors in group grp2')
six.assertCountEqual(self, self.model.group_names, ["grp1"])
six.assertCountEqual(self, self.model.pair_names, [])
self.assertEqual(self.grouping_table_view.num_rows(), 1)
self.assertEqual(self.pairing_table_view.num_rows(), 0)
def test_that_save_grouping_triggers_the_correct_function(self): def test_that_save_grouping_triggers_the_correct_function(self):
# Save functionality is tested elsewhere # Save functionality is tested elsewhere
self.view.show_file_save_browser_and_return_selection = mock.Mock(return_value="grouping.xml") self.view.show_file_save_browser_and_return_selection = mock.Mock(return_value="grouping.xml")
......
...@@ -295,6 +295,17 @@ class GroupingTablePresenterTest(unittest.TestCase): ...@@ -295,6 +295,17 @@ class GroupingTablePresenterTest(unittest.TestCase):
self.assertEqual(self.view.get_table_item_text(0, 2), "1") self.assertEqual(self.view.get_table_item_text(0, 2), "1")
def test_modifying_detector_ids_to_non_existent_detector_fails(self):
self.presenter.handle_add_group_button_clicked()
self.view.grouping_table.item(0, 1).setText("1000")
self.view.warning_popup.assert_called_once_with('Invalid detector list.')
def test_modifying_detector_ids_to_negative_detectors_fails(self):
self.presenter.handle_add_group_button_clicked()
self.view.grouping_table.item(0, 1).setText("-10-10")
self.view.warning_popup.assert_called_once_with('Invalid detector list.')
if __name__ == '__main__': if __name__ == '__main__':
unittest.main(buffer=False, verbosity=2) unittest.main(buffer=False, verbosity=2)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment