Skip to content

Commit 1ff9c6b

Browse files
committed
FreeViz: tests
1 parent 3e57748 commit 1ff9c6b

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Test methods with long descriptive names can omit docstrings
2+
# pylint: disable=missing-docstring
3+
import scipy.sparse as sp
4+
5+
from AnyQt.QtCore import QRectF, QPointF
6+
7+
from Orange.data import Table, Domain, ContinuousVariable, DiscreteVariable
8+
from Orange.widgets.tests.utils import simulate
9+
from Orange.widgets.visualize.owfreeviz import OWFreeViz
10+
from Orange.widgets.tests.base import WidgetTest, WidgetOutputsTestMixin, \
11+
datasets
12+
13+
14+
class TestOWFreeViz(WidgetTest, WidgetOutputsTestMixin):
15+
@classmethod
16+
def setUpClass(cls):
17+
super().setUpClass()
18+
WidgetOutputsTestMixin.init(cls)
19+
20+
cls.signal_name = "Data"
21+
cls.signal_data = cls.data
22+
cls.same_input_output_domain = False
23+
cls.heart_disease = Table("heart_disease")
24+
25+
def setUp(self):
26+
self.widget = self.create_widget(OWFreeViz)
27+
28+
def test_points_combo_boxes(self):
29+
self.send_signal(self.widget.Inputs.data, self.heart_disease)
30+
graph = self.widget.controls.graph
31+
self.assertEqual(len(graph.attr_color.model()), 17)
32+
self.assertEqual(len(graph.attr_shape.model()), 11)
33+
self.assertEqual(len(graph.attr_size.model()), 8)
34+
self.assertEqual(len(graph.attr_label.model()), 17)
35+
36+
def test_ugly_datasets(self):
37+
self.send_signal(self.widget.Inputs.data, Table(datasets.path("testing_dataset_cls")))
38+
self.send_signal(self.widget.Inputs.data, Table(datasets.path("testing_dataset_reg")))
39+
40+
def test_error_msg(self):
41+
data = self.data[:, list(range(len(self.data.domain.attributes)))]
42+
self.assertFalse(self.widget.Error.no_class_var.is_shown())
43+
self.assertFalse(self.widget.Error.not_enough_class_vars.is_shown())
44+
self.send_signal(self.widget.Inputs.data, data)
45+
self.assertTrue(self.widget.Error.no_class_var.is_shown())
46+
data = self.data[:40]
47+
data.domain.class_var.values = data.domain.class_var.values[0:1]
48+
data = data.transform(self.data.domain)
49+
self.send_signal(self.widget.Inputs.data, data)
50+
self.assertTrue(self.widget.Error.not_enough_class_vars.is_shown())
51+
self.send_signal(self.widget.Inputs.data, None)
52+
self.assertFalse(self.widget.Error.no_class_var.is_shown())
53+
self.assertFalse(self.widget.Error.not_enough_class_vars.is_shown())
54+
55+
def _select_data(self):
56+
self.widget.graph.select_by_rectangle(QRectF(QPointF(-20, -20), QPointF(20, 20)))
57+
return self.widget.graph.get_selection()
58+
59+
def test_optimization(self):
60+
self.send_signal(self.widget.Inputs.data, Table("iris"))
61+
self.widget.btn_start.click()
62+
63+
def test_optimization_cancelled(self):
64+
self.test_optimization()
65+
self.widget.btn_start.click()
66+
67+
def test_reset_optimization(self):
68+
self.send_signal(self.widget.Inputs.data, Table("iris"))
69+
simulate.combobox_activate_index(self.widget.controls.initialization, 0)
70+
simulate.combobox_activate_index(self.widget.controls.initialization, 1)
71+
72+
def test_size_hint(self):
73+
self.widget.show()
74+
75+
def test_send_report(self):
76+
self.send_signal(self.widget.Inputs.data, Table("iris"))
77+
self.widget.report_button.click()
78+
self.send_signal(self.widget.Inputs.data, None)
79+
self.widget.report_button.click()
80+
81+
def test_subset_data(self):
82+
self.send_signal(self.widget.Inputs.data, self.heart_disease)
83+
self.send_signal(self.widget.Inputs.data_subset, self.heart_disease)
84+
85+
def test_sparse(self):
86+
table = Table("iris")
87+
table.X = sp.csr_matrix(table.X)
88+
self.assertTrue(sp.issparse(table.X))
89+
self.assertFalse(self.widget.Warning.sparse_not_supported.is_shown())
90+
self.send_signal(self.widget.Inputs.data, table)
91+
self.assertTrue(self.widget.Warning.sparse_not_supported.is_shown())
92+
93+
def test_none_data(self):
94+
table = Table(
95+
Domain(
96+
[ContinuousVariable("a"),
97+
DiscreteVariable("b", values=["y", "n"])]
98+
),
99+
list(zip(
100+
[],
101+
""))
102+
)
103+
self.send_signal(self.widget.Inputs.data, table)
104+
self.widget.reset_graph_data()
105+
106+
def test_class_density(self):
107+
self.send_signal(self.widget.Inputs.data, Table("iris"))
108+
self.widget.cb_class_density.click()

0 commit comments

Comments
 (0)