Skip to content

Commit 250fcd4

Browse files
committed
OWDataTable: Do not override widget's inputs
They should not be overriden, unless there is some (for me) non-obvious reason, in order to make report unittest work for this widget.
1 parent 852345a commit 250fcd4

File tree

3 files changed

+33
-10
lines changed

3 files changed

+33
-10
lines changed

Orange/widgets/data/owtable.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ class OWDataTable(widget.OWWidget):
379379
def __init__(self):
380380
super().__init__()
381381

382-
self.inputs = OrderedDict()
382+
self._inputs = OrderedDict()
383383

384384
self.dist_color = QtGui.QColor(*self.dist_color_RGB)
385385

@@ -436,9 +436,9 @@ def set_dataset(self, data, tid=None):
436436
"""Set the input dataset."""
437437
self.closeContext()
438438
if data is not None:
439-
if tid in self.inputs:
439+
if tid in self._inputs:
440440
# update existing input slot
441-
slot = self.inputs[tid]
441+
slot = self._inputs[tid]
442442
view = slot.view
443443
# reset the (header) view state.
444444
view.setModel(None)
@@ -472,7 +472,7 @@ def sort_reset(index, order):
472472
self._setup_table_view(view, data)
473473
slot = TableSlot(tid, data, table_summary(data), view)
474474
view._input_slot = slot
475-
self.inputs[tid] = slot
475+
self._inputs[tid] = slot
476476

477477
self.tabs.setCurrentIndex(self.tabs.indexOf(view))
478478

@@ -485,8 +485,8 @@ def update(f):
485485

486486
slot.summary.len.add_done_callback(update)
487487

488-
elif tid in self.inputs:
489-
slot = self.inputs.pop(tid)
488+
elif tid in self._inputs:
489+
slot = self._inputs.pop(tid)
490490
view = slot.view
491491
view.hide()
492492
view.deleteLater()
@@ -657,7 +657,7 @@ def _update_variable_labels(self, view):
657657

658658
def _on_show_variable_labels_changed(self):
659659
"""The variable labels (var.attribues) visibility was changed."""
660-
for slot in self.inputs.values():
660+
for slot in self._inputs.values():
661661
self._update_variable_labels(slot.view)
662662

663663
def _on_distribution_color_changed(self):
@@ -683,7 +683,7 @@ def _on_distribution_color_changed(self):
683683
tab.reset()
684684

685685
def _on_select_rows_changed(self):
686-
for slot in self.inputs.values():
686+
for slot in self._inputs.values():
687687
selection_model = slot.view.selectionModel()
688688
selection_model.setSelectBlocks(not self.select_rows)
689689
if self.select_rows:
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from Orange.data import Table
2+
from Orange.widgets.data.owtable import OWDataTable
3+
from Orange.widgets.tests.base import WidgetTest
4+
5+
6+
class TestOWDataTable(WidgetTest):
7+
def setUp(self):
8+
self.widget = self.create_widget(OWDataTable)
9+
self.iris = Table("iris")
10+
11+
def test_input_data(self):
12+
"""Check number of tabs with data on the input"""
13+
self.send_signal("Data", self.iris, 1)
14+
self.assertEqual(self.widget.tabs.count(), 1)
15+
self.send_signal("Data", self.iris, 2)
16+
self.assertEqual(self.widget.tabs.count(), 2)
17+
18+
def test_input_data_disconnect(self):
19+
"""Check number of tabs after disconnecting data from the input"""
20+
self.send_signal("Data", self.iris, 1)
21+
self.assertEqual(self.widget.tabs.count(), 1)
22+
self.send_signal("Data", None, 1)
23+
self.assertEqual(self.widget.tabs.count(), 0)

Orange/widgets/tests/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def show(self, widget=None):
151151
widget.show()
152152
app.exec()
153153

154-
def send_signal(self, input_name, value, id=None, widget=None):
154+
def send_signal(self, input_name, value, *args, widget=None):
155155
""" Send signal to widget by calling appropriate triggers.
156156
157157
Parameters
@@ -167,7 +167,7 @@ def send_signal(self, input_name, value, id=None, widget=None):
167167
widget = self.widget
168168
for input_signal in widget.inputs:
169169
if input_signal.name == input_name:
170-
getattr(widget, input_signal.handler)(value)
170+
getattr(widget, input_signal.handler)(value, *args)
171171
break
172172
widget.handleNewSignals()
173173

0 commit comments

Comments
 (0)