From 19f407180c64a1fee43eae2b659fdf1c95a581bc Mon Sep 17 00:00:00 2001 From: Vesna Tanko Date: Mon, 19 Sep 2016 16:19:40 +0200 Subject: [PATCH] OWDataTable: Do not override widget's inputs They should not be overriden, unless there is some non-obvious reason, in order to make report unittest work for this widget. --- Orange/widgets/data/owtable.py | 16 ++++++++-------- Orange/widgets/data/tests/test_owtable.py | 22 ++++++++++++++++++++++ Orange/widgets/tests/base.py | 4 ++-- 3 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 Orange/widgets/data/tests/test_owtable.py diff --git a/Orange/widgets/data/owtable.py b/Orange/widgets/data/owtable.py index b4c14f6223b..45d03bb0abc 100644 --- a/Orange/widgets/data/owtable.py +++ b/Orange/widgets/data/owtable.py @@ -379,7 +379,7 @@ class OWDataTable(widget.OWWidget): def __init__(self): super().__init__() - self.inputs = OrderedDict() + self._inputs = OrderedDict() self.dist_color = QtGui.QColor(*self.dist_color_RGB) @@ -436,9 +436,9 @@ def set_dataset(self, data, tid=None): """Set the input dataset.""" self.closeContext() if data is not None: - if tid in self.inputs: + if tid in self._inputs: # update existing input slot - slot = self.inputs[tid] + slot = self._inputs[tid] view = slot.view # reset the (header) view state. view.setModel(None) @@ -472,7 +472,7 @@ def sort_reset(index, order): self._setup_table_view(view, data) slot = TableSlot(tid, data, table_summary(data), view) view._input_slot = slot - self.inputs[tid] = slot + self._inputs[tid] = slot self.tabs.setCurrentIndex(self.tabs.indexOf(view)) @@ -485,8 +485,8 @@ def update(f): slot.summary.len.add_done_callback(update) - elif tid in self.inputs: - slot = self.inputs.pop(tid) + elif tid in self._inputs: + slot = self._inputs.pop(tid) view = slot.view view.hide() view.deleteLater() @@ -657,7 +657,7 @@ def _update_variable_labels(self, view): def _on_show_variable_labels_changed(self): """The variable labels (var.attribues) visibility was changed.""" - for slot in self.inputs.values(): + for slot in self._inputs.values(): self._update_variable_labels(slot.view) def _on_distribution_color_changed(self): @@ -683,7 +683,7 @@ def _on_distribution_color_changed(self): tab.reset() def _on_select_rows_changed(self): - for slot in self.inputs.values(): + for slot in self._inputs.values(): selection_model = slot.view.selectionModel() selection_model.setSelectBlocks(not self.select_rows) if self.select_rows: diff --git a/Orange/widgets/data/tests/test_owtable.py b/Orange/widgets/data/tests/test_owtable.py new file mode 100644 index 00000000000..a62f5ed2ffc --- /dev/null +++ b/Orange/widgets/data/tests/test_owtable.py @@ -0,0 +1,22 @@ +from Orange.data import Table +from Orange.widgets.data.owtable import OWDataTable +from Orange.widgets.tests.base import WidgetTest + + +class TestOWDataTable(WidgetTest): + def setUp(self): + self.widget = self.create_widget(OWDataTable) + self.iris = Table("iris") + + def test_input_data(self): + """Check number of tabs with data on the input""" + self.send_signal("Data", self.iris, 1) + self.assertEqual(self.widget.tabs.count(), 1) + self.send_signal("Data", self.iris, 2) + self.assertEqual(self.widget.tabs.count(), 2) + self.send_signal("Data", None, 1) + self.assertEqual(self.widget.tabs.count(), 1) + + def test_data_model(self): + self.send_signal("Data", self.iris, 1) + self.assertEqual(self.widget.tabs.widget(0).model().rowCount(), len(self.iris)) diff --git a/Orange/widgets/tests/base.py b/Orange/widgets/tests/base.py index 9ff77782069..54414dcca27 100644 --- a/Orange/widgets/tests/base.py +++ b/Orange/widgets/tests/base.py @@ -151,7 +151,7 @@ def show(self, widget=None): widget.show() app.exec() - def send_signal(self, input_name, value, id=None, widget=None): + def send_signal(self, input_name, value, *args, widget=None): """ Send signal to widget by calling appropriate triggers. Parameters @@ -167,7 +167,7 @@ def send_signal(self, input_name, value, id=None, widget=None): widget = self.widget for input_signal in widget.inputs: if input_signal.name == input_name: - getattr(widget, input_signal.handler)(value) + getattr(widget, input_signal.handler)(value, *args) break widget.handleNewSignals()