Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from __future__ import absolute_import, print_function
import unittest
from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table_view import PeriodicTableView
from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table_presenter import PeriodicTablePresenter
from Muon.GUI.ElementalAnalysis.PeriodicTable.periodic_table_widget import PeriodicTable
from Muon.GUI.Common import mock_widget
from PyQt4 import QtGui
from silx.gui.widgets import PeriodicTable as silxPT
from silx.gui.widgets.PeriodicTable import ColoredPeriodicTableItem
try:
from unittest import mock
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()
self.widget = PeriodicTable()
self.view = self.widget.presenter.view
self.mock_elem = ColoredPeriodicTableItem("T", 0, "", 1, "Test", 0)
self.mock_symbol = "T"
self.view.ptable = mock.create_autospec(silxPT)
self.view.ptable.getSelection = mock.Mock(
return_value=self.mock_symbol)
self.view.ptable.setSelection = mock.Mock()
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
def test_table_clicked(self):
assert self.call_event_once(self.widget.register_table_clicked,
self.view.table_clicked, self.mock_elem) == 1
def test_unregister_table_clicked(self):
assert self.call_event_once(self.widget.register_table_clicked,
self.view.table_clicked,
self.mock_elem,
unregister=True,
unreg_event=self.widget.unregister_table_clicked) == 1
def test_register_table_changed(self):
assert self.call_event_once(self.widget.register_table_changed,
self.view.table_changed, [self.mock_symbol]) == 1
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) == 1
def test_selection(self):
assert self.widget.selection == self.mock_symbol
def test_is_selected(self):
assert self.widget.is_selected(self.mock_symbol)
def test_select_element(self):
self.widget.select_element(self.mock_symbol, deselect=False)
def test_add_elements(self):
el = [self.mock_symbol] * 3
self.widget.add_elements(*el)
if __name__ == "__main__":
unittest.main()