Skip to content

Commit 613af71

Browse files
committed
add tests for owchoropleth
1 parent 57d1e1a commit 613af71

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
from unittest.mock import patch
2+
import numpy as np
3+
4+
from AnyQt.QtCore import QRectF, QPointF
5+
6+
from Orange.data import Table
7+
from Orange.widgets.tests.base import WidgetTest, WidgetOutputsTestMixin
8+
from Orange.widgets.visualize.owscatterplotgraph import PaletteItemSample, \
9+
SymbolItemSample
10+
from orangecontrib.geo.widgets.owchoropleth import OWChoropleth
11+
12+
13+
class TestOWChoropleth(WidgetTest, WidgetOutputsTestMixin):
14+
@classmethod
15+
def setUpClass(cls):
16+
super().setUpClass()
17+
WidgetOutputsTestMixin.init(cls)
18+
cls.same_input_output_domain = False
19+
cls.signal_name = "Data"
20+
21+
@patch("orangecontrib.geo.widgets.plotutils.ImageLoader")
22+
def setUp(self, _):
23+
self.widget = self.create_widget(OWChoropleth)
24+
self.signal_data = self.data = Table("India_census_district_population")
25+
26+
def test_set_data(self):
27+
self.send_signal(self.widget.Inputs.data, self.data)
28+
29+
self.assertEqual(self.widget.attr_lat, self.data.domain[1])
30+
self.assertEqual(self.widget.attr_lon, self.data.domain[2])
31+
32+
self.send_signal(self.widget.Inputs.data, None)
33+
34+
self.assertIsNone(self.widget.attr_lat)
35+
self.assertIsNone(self.widget.attr_lon)
36+
37+
def test_admin_level(self):
38+
self.send_signal(self.widget.Inputs.data, self.data)
39+
self.widget.admin_level = 0
40+
self.assertEqual(len(self.widget.region_ids), 2)
41+
42+
self.widget.admin_level = 1
43+
self.widget.setup_plot()
44+
self.assertEqual(len(self.widget.region_ids), 26)
45+
46+
def test_discrete(self):
47+
"""Test if legend changes on discrete mode"""
48+
self.send_signal(self.widget.Inputs.data, self.data)
49+
self.widget.admin_level = 1
50+
self.assertIsInstance(self.widget.graph.color_legend.items[0][0],
51+
PaletteItemSample)
52+
self.assertFalse(self.widget.is_mode())
53+
54+
self.widget.agg_func = "Mode"
55+
self.widget.agg_attr = self.data.domain["State"]
56+
self.widget.setup_plot()
57+
self.assertIsInstance(self.widget.graph.color_legend.items[0][0],
58+
SymbolItemSample)
59+
self.assertTrue(self.widget.is_mode())
60+
61+
def _select_data(self):
62+
rect = QRectF(QPointF(0, 0), QPointF(1, 1))
63+
self.widget.graph.select_by_rectangle(rect)
64+
return np.arange(len(self.data))
65+
66+
def _compare_selected_annotated_domains(self, selected, annotated):
67+
selected_vars = selected.domain.attributes + selected.domain.metas
68+
annotated_vars = annotated.domain.attributes + annotated.domain.metas
69+
self.assertLessEqual(set(selected_vars), set(annotated_vars))
70+
71+
def test_saved_selection(self, timeout=5000):
72+
self.widget.admin_level = 1
73+
self.send_signal(self.widget.Inputs.data, self.data)
74+
self.assertTrue(
75+
self.signal_manager.wait_for_finished(self.widget, timeout),
76+
f"Did not finish in the specified {timeout}ms timeout"
77+
)
78+
79+
ind = list(range(0, self.widget.graph.n_ids, 2))
80+
self.widget.graph.select_by_indices(ind)
81+
settings = self.widget.settingsHandler.pack_data(self.widget)
82+
w = self.create_widget(self.widget.__class__, stored_settings=settings)
83+
84+
self.send_signal(self.widget.Inputs.data, self.data, widget=w)
85+
self.assertTrue(
86+
self.signal_manager.wait_for_finished(w, timeout),
87+
f"Did not finish in the specified {timeout}ms timeout"
88+
)
89+
90+
self.assertEqual(np.sum(w.graph.selection), len(ind))
91+
np.testing.assert_equal(self.widget.graph.selection, w.graph.selection)
92+
93+
def test_send_report(self):
94+
self.send_signal(self.widget.Inputs.data, self.data)
95+
self.widget.report_button.click()
96+
self.send_signal(self.widget.Inputs.data, None)
97+
self.widget.report_button.click()
98+
99+
def test_in_out_summary(self, timeout=5000):
100+
info = self.widget.info
101+
self.assertEqual(info._StateInfo__input_summary.brief, "")
102+
self.assertEqual(info._StateInfo__output_summary.brief, "")
103+
104+
self.send_signal(self.widget.Inputs.data, self.data)
105+
self.assertTrue(
106+
self.signal_manager.wait_for_finished(self.widget, timeout),
107+
f"Did not finish in the specified {timeout}ms timeout"
108+
)
109+
ind = self._select_data()
110+
self.assertEqual(info._StateInfo__input_summary.brief,
111+
str(len(self.data)))
112+
self.assertEqual(info._StateInfo__output_summary.brief, str(len(ind)))
113+
114+
self.send_signal(self.widget.Inputs.data, None)
115+
self.assertEqual(info._StateInfo__input_summary.brief, "")
116+
self.assertEqual(info._StateInfo__output_summary.brief, "")

0 commit comments

Comments
 (0)