diff --git a/scripts/test/Muon/PeriodicTableWidget_test.py b/scripts/test/Muon/PeriodicTableWidget_test.py index 78b3c01921416315b2196042b5bd4163ffc48ade..88cc389ec9320516877ff0a4f87b97e0736a6b81 100644 --- a/scripts/test/Muon/PeriodicTableWidget_test.py +++ b/scripts/test/Muon/PeriodicTableWidget_test.py @@ -3,6 +3,7 @@ from __future__ import absolute_import, print_function import unittest from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table_widget import PeriodicTable +from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table_view import PeriodicTableView from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table import PeriodicTable as silxPT from Muon.GUI.Common import mock_widget @@ -14,14 +15,6 @@ except ImportError: import mock -class MockEvent(object): - def __init__(self): - self.call_count = 0 - - def handler(self): - self.call_count += 1 - - class PeriodicTableWidgetTest(unittest.TestCase): def setUp(self): self._qapp = mock_widget.mockQapp() @@ -36,60 +29,75 @@ class PeriodicTableWidgetTest(unittest.TestCase): self.view.ptable.isElementSelected = mock.Mock(return_value=True) self.view.ptable.setElementSelected = mock.Mock() - def call_event_once(self, reg_event, func, args, - unregister=False, unreg_event=None): - handler = MockEvent() - reg_event(handler.handler) - func(args) - if unregister and unreg_event is not None: - unreg_event(handler.handler) - func(args) - return handler.call_count == 1 - - def test_table_lclicked(self): - assert self.call_event_once(self.widget.register_table_lclicked, - self.view.table_left_clicked, self.mock_elem) + def emit_once(self, reg_func, slot, + unregister=False, unreg_func=None): + handler = mock.Mock() + reg_func(handler) + slot(mock.Mock()) + if unregister and unreg_func is not None: + unreg_func(handler) + slot(mock.Mock()) + handler.assert_called_once() + + def call_func_once(self, func): + self.widget.presenter.view = mock.create_autospec(PeriodicTableView) + func = mock.Mock() + func(mock.Mock()) + func.assert_called_once() + + def test_register_table_lclicked(self): + self.call_func_once(self.widget.register_table_lclicked) def test_unregister_table_lclicked(self): - assert self.call_event_once(self.widget.register_table_lclicked, - self.view.table_left_clicked, - self.mock_elem, - unregister=True, - unreg_event=self.widget.unregister_table_lclicked) + self.call_func_once(self.widget.unregister_table_lclicked) - def test_table_rclicked(self): - assert self.call_event_once(self.widget.register_table_rclicked, - self.view.table_right_clicked, self.mock_elem) + def test_register_table_rclicked(self): + self.call_func_once(self.widget.register_table_rclicked) def test_unregister_table_rclicked(self): - assert self.call_event_once(self.widget.register_table_rclicked, - self.view.table_right_clicked, - self.mock_elem, - unregister=True, - unreg_event=self.widget.unregister_table_rclicked) + self.call_func_once(self.widget.unregister_table_rclicked) + + def test_register_lclicked_emit(self): + self.emit_once(self.widget.register_table_lclicked, + self.view.table_left_clicked) + + def test_unregister_lclicked_emit(self): + self.emit_once(self.widget.register_table_lclicked, + self.view.table_left_clicked, + unregister=True, + unreg_func=self.widget.unregister_table_lclicked) + + def test_register_rclicked_emit(self): + self.emit_once(self.widget.register_table_rclicked, + self.view.table_right_clicked) + + def test_unregister_rclicked_emit(self): + self.emit_once(self.widget.register_table_rclicked, + self.view.table_right_clicked, + unregister=True, + unreg_func=self.widget.unregister_table_rclicked) def test_register_table_changed(self): - assert self.call_event_once(self.widget.register_table_changed, - self.view.table_changed, self.mock_elem) + self.emit_once(self.widget.register_table_changed, + self.view.table_changed) def test_unregister_table_changed(self): - assert self.call_event_once(self.widget.register_table_changed, - self.view.table_changed, - self.mock_elem, - unregister=True, - unreg_event=self.widget.unregister_table_changed) + self.emit_once(self.widget.register_table_changed, + self.view.table_changed, + unregister=True, + unreg_func=self.widget.unregister_table_changed) def test_selection(self): assert self.widget.selection == self.mock_elem def test_is_selected(self): - assert self.widget.is_selected(self.mock_elem) + self.call_func_once(self.widget.is_selected) def test_select_element(self): - self.widget.select_element(self.mock_elem, deselect=False) + self.call_func_once(self.widget.select_element) def test_add_elements(self): - self.widget.add_elements(self.mock_elem) + self.call_func_once(self.widget.add_elements) if __name__ == "__main__":