Skip to content

Commit

Permalink
Merge pull request #1706 from VesnaT/messages
Browse files Browse the repository at this point in the history
[FIX] Do not show messages when data is removed
  • Loading branch information
lanzagar authored Nov 4, 2016
2 parents 1a35510 + b27998c commit 8aaeb7a
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 2 deletions.
1 change: 1 addition & 0 deletions Orange/widgets/data/owdatasampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ def set_data(self, dataset):
self.dataInfoLabel.setText('No data on input.')
self.outputInfoLabel.setText('')
self.indices = None
self.clear_messages()
self.commit()

def commit(self):
Expand Down
27 changes: 27 additions & 0 deletions Orange/widgets/data/tests/test_owdatasampler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring
from Orange.data import Table
from Orange.widgets.data.owdatasampler import OWDataSampler
from Orange.widgets.tests.base import WidgetTest


class TestOWDataSampler(WidgetTest):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.iris = Table("iris")

def setUp(self):
self.widget = self.create_widget(OWDataSampler)

def test_error_message(self):
""" Check if error message appears and then disappears when
data is removed from input"""
self.widget.controlledAttributes["sampling_type"][0].control.buttons[
2].click()
self.send_signal("Data", self.iris)
self.assertFalse(self.widget.Error.too_many_folds.is_shown())
self.send_signal("Data", self.iris[:5])
self.assertTrue(self.widget.Error.too_many_folds.is_shown())
self.send_signal("Data", None)
self.assertFalse(self.widget.Error.too_many_folds.is_shown())
4 changes: 2 additions & 2 deletions Orange/widgets/unsupervised/owdistances.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,11 @@ def commit(self):
self.send("Distances", self.compute_distances(metric, self.data))

def compute_distances(self, metric, data):
self.clear_messages()

if data is None:
return

self.clear_messages()

if issparse(data.X) and not metric.supports_sparse:
self.Error.dense_metric_sparse_data()
return
Expand Down
42 changes: 42 additions & 0 deletions Orange/widgets/unsupervised/tests/test_owdistances.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring
import numpy as np

from Orange.data import Table
from Orange.distance import MahalanobisDistance
from Orange.widgets.unsupervised.owdistances import OWDistances, METRICS
from Orange.widgets.tests.base import WidgetTest


class TestOWDistances(WidgetTest):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.iris = Table("iris")
cls.titanic = Table("titanic")

def setUp(self):
self.widget = self.create_widget(OWDistances)

def test_distance_combo(self):
"""Check distances when the metric changes"""
self.assertEqual(self.widget.metrics_combo.count(), len(METRICS))
self.send_signal("Data", self.iris)
for i, metric in enumerate(METRICS):
if isinstance(metric, MahalanobisDistance):
metric.fit(self.iris)
self.widget.metrics_combo.activated.emit(i)
self.widget.metrics_combo.setCurrentIndex(i)
self.send_signal("Data", self.iris)
np.testing.assert_array_equal(
metric(self.iris), self.get_output("Distances"))

def test_error_message(self):
"""Check if error message appears and then disappears when
data is removed from input"""
self.send_signal("Data", self.iris)
self.assertFalse(self.widget.Error.no_continuous_features.is_shown())
self.send_signal("Data", self.titanic)
self.assertTrue(self.widget.Error.no_continuous_features.is_shown())
self.send_signal("Data", None)
self.assertFalse(self.widget.Error.no_continuous_features.is_shown())
1 change: 1 addition & 0 deletions Orange/widgets/visualize/owscatterplot.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,7 @@ def reset_graph_data(self, *_):
self.update_graph()

def set_data(self, data):
self.clear_messages()
self.Information.sampled_sql.clear()
self.__timer.stop()
self.sampling.setVisible(False)
Expand Down
10 changes: 10 additions & 0 deletions Orange/widgets/visualize/tests/test_owscatterplot.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,13 @@ def test_optional_combos(self):
def _select_data(self):
self.widget.graph.select_by_rectangle(QRectF(4, 3, 3, 1))
return self.widget.graph.get_selection()

def test_error_message(self):
"""Check if error message appears and then disappears when
data is removed from input"""
data = self.data.copy()
data.X[:, 0] = np.nan
self.send_signal("Data", data)
self.assertTrue(self.widget.Warning.missing_coords.is_shown())
self.send_signal("Data", None)
self.assertFalse(self.widget.Warning.missing_coords.is_shown())

0 comments on commit 8aaeb7a

Please sign in to comment.