Skip to content

Commit 8aaeb7a

Browse files
authored
Merge pull request #1706 from VesnaT/messages
[FIX] Do not show messages when data is removed
2 parents 1a35510 + b27998c commit 8aaeb7a

File tree

6 files changed

+83
-2
lines changed

6 files changed

+83
-2
lines changed

Orange/widgets/data/owdatasampler.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ def set_data(self, dataset):
175175
self.dataInfoLabel.setText('No data on input.')
176176
self.outputInfoLabel.setText('')
177177
self.indices = None
178+
self.clear_messages()
178179
self.commit()
179180

180181
def commit(self):
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Test methods with long descriptive names can omit docstrings
2+
# pylint: disable=missing-docstring
3+
from Orange.data import Table
4+
from Orange.widgets.data.owdatasampler import OWDataSampler
5+
from Orange.widgets.tests.base import WidgetTest
6+
7+
8+
class TestOWDataSampler(WidgetTest):
9+
@classmethod
10+
def setUpClass(cls):
11+
super().setUpClass()
12+
cls.iris = Table("iris")
13+
14+
def setUp(self):
15+
self.widget = self.create_widget(OWDataSampler)
16+
17+
def test_error_message(self):
18+
""" Check if error message appears and then disappears when
19+
data is removed from input"""
20+
self.widget.controlledAttributes["sampling_type"][0].control.buttons[
21+
2].click()
22+
self.send_signal("Data", self.iris)
23+
self.assertFalse(self.widget.Error.too_many_folds.is_shown())
24+
self.send_signal("Data", self.iris[:5])
25+
self.assertTrue(self.widget.Error.too_many_folds.is_shown())
26+
self.send_signal("Data", None)
27+
self.assertFalse(self.widget.Error.too_many_folds.is_shown())

Orange/widgets/unsupervised/owdistances.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,11 @@ def commit(self):
9999
self.send("Distances", self.compute_distances(metric, self.data))
100100

101101
def compute_distances(self, metric, data):
102+
self.clear_messages()
103+
102104
if data is None:
103105
return
104106

105-
self.clear_messages()
106-
107107
if issparse(data.X) and not metric.supports_sparse:
108108
self.Error.dense_metric_sparse_data()
109109
return
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Test methods with long descriptive names can omit docstrings
2+
# pylint: disable=missing-docstring
3+
import numpy as np
4+
5+
from Orange.data import Table
6+
from Orange.distance import MahalanobisDistance
7+
from Orange.widgets.unsupervised.owdistances import OWDistances, METRICS
8+
from Orange.widgets.tests.base import WidgetTest
9+
10+
11+
class TestOWDistances(WidgetTest):
12+
@classmethod
13+
def setUpClass(cls):
14+
super().setUpClass()
15+
cls.iris = Table("iris")
16+
cls.titanic = Table("titanic")
17+
18+
def setUp(self):
19+
self.widget = self.create_widget(OWDistances)
20+
21+
def test_distance_combo(self):
22+
"""Check distances when the metric changes"""
23+
self.assertEqual(self.widget.metrics_combo.count(), len(METRICS))
24+
self.send_signal("Data", self.iris)
25+
for i, metric in enumerate(METRICS):
26+
if isinstance(metric, MahalanobisDistance):
27+
metric.fit(self.iris)
28+
self.widget.metrics_combo.activated.emit(i)
29+
self.widget.metrics_combo.setCurrentIndex(i)
30+
self.send_signal("Data", self.iris)
31+
np.testing.assert_array_equal(
32+
metric(self.iris), self.get_output("Distances"))
33+
34+
def test_error_message(self):
35+
"""Check if error message appears and then disappears when
36+
data is removed from input"""
37+
self.send_signal("Data", self.iris)
38+
self.assertFalse(self.widget.Error.no_continuous_features.is_shown())
39+
self.send_signal("Data", self.titanic)
40+
self.assertTrue(self.widget.Error.no_continuous_features.is_shown())
41+
self.send_signal("Data", None)
42+
self.assertFalse(self.widget.Error.no_continuous_features.is_shown())

Orange/widgets/visualize/owscatterplot.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ def reset_graph_data(self, *_):
294294
self.update_graph()
295295

296296
def set_data(self, data):
297+
self.clear_messages()
297298
self.Information.sampled_sql.clear()
298299
self.__timer.stop()
299300
self.sampling.setVisible(False)

Orange/widgets/visualize/tests/test_owscatterplot.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,13 @@ def test_optional_combos(self):
8181
def _select_data(self):
8282
self.widget.graph.select_by_rectangle(QRectF(4, 3, 3, 1))
8383
return self.widget.graph.get_selection()
84+
85+
def test_error_message(self):
86+
"""Check if error message appears and then disappears when
87+
data is removed from input"""
88+
data = self.data.copy()
89+
data.X[:, 0] = np.nan
90+
self.send_signal("Data", data)
91+
self.assertTrue(self.widget.Warning.missing_coords.is_shown())
92+
self.send_signal("Data", None)
93+
self.assertFalse(self.widget.Warning.missing_coords.is_shown())

0 commit comments

Comments
 (0)