|
13 | 13 | from Orange.widgets.tests.base import WidgetTest, WidgetOutputsTestMixin |
14 | 14 | from Orange.widgets.visualize.owmosaic import OWMosaicDisplay |
15 | 15 | from Orange.widgets.tests.utils import simulate |
| 16 | +from Orange.widgets.utils.state_summary import (format_multiple_summaries, |
| 17 | + format_summary_details) |
16 | 18 |
|
17 | 19 |
|
18 | 20 | class TestOWMosaicDisplay(WidgetTest, WidgetOutputsTestMixin): |
@@ -184,6 +186,54 @@ def test_selection_setting(self): |
184 | 186 | self.assertEqual(w.selection, {1}) |
185 | 187 | self.assertIsNotNone(self.get_output(w.Outputs.selected_data, widget=w)) |
186 | 188 |
|
| 189 | + def test_summary(self): |
| 190 | + """Check if status bar is updated when data is received""" |
| 191 | + info = self.widget.info |
| 192 | + data, subset = Table("zoo"), Table("zoo")[::10] |
| 193 | + no_input, no_output = "No data on input", "No data on output" |
| 194 | + |
| 195 | + self.send_signal(self.widget.Inputs.data, data) |
| 196 | + data_list = [("Data", data), ("Data subset", None)] |
| 197 | + summary, details = f"{len(data)}, 0", format_multiple_summaries(data_list) |
| 198 | + self.assertEqual(info._StateInfo__input_summary.brief, summary) |
| 199 | + self.assertEqual(info._StateInfo__input_summary.details, details) |
| 200 | + self.assertEqual(info._StateInfo__output_summary.brief, "") |
| 201 | + self.assertEqual(info._StateInfo__output_summary.details, no_output) |
| 202 | + |
| 203 | + self._select_data() |
| 204 | + output = self.get_output(self.widget.Outputs.selected_data) |
| 205 | + summary, details = f"{len(output)}", format_summary_details(output) |
| 206 | + self.assertEqual(info._StateInfo__output_summary.brief, summary) |
| 207 | + self.assertEqual(info._StateInfo__output_summary.details, details) |
| 208 | + |
| 209 | + self.send_signal(self.widget.Inputs.data_subset, subset) |
| 210 | + data_list = [("Data", data), ("Data subset", subset)] |
| 211 | + summary = f"{len(data)}, {len(subset)}" |
| 212 | + details = format_multiple_summaries(data_list) |
| 213 | + self.assertEqual(info._StateInfo__input_summary.brief, summary) |
| 214 | + self.assertEqual(info._StateInfo__input_summary.details, details) |
| 215 | + self.assertEqual(info._StateInfo__output_summary.brief, "") |
| 216 | + self.assertEqual(info._StateInfo__output_summary.details, no_output) |
| 217 | + self._select_data() |
| 218 | + output = self.get_output(self.widget.Outputs.selected_data) |
| 219 | + summary, details = f"{len(output)}", format_summary_details(output) |
| 220 | + self.assertEqual(info._StateInfo__output_summary.brief, summary) |
| 221 | + self.assertEqual(info._StateInfo__output_summary.details, details) |
| 222 | + |
| 223 | + self.send_signal(self.widget.Inputs.data, None) |
| 224 | + data_list = [("Data", None), ("Data subset", subset)] |
| 225 | + summary, details = f"0, {len(subset)}", format_multiple_summaries(data_list) |
| 226 | + self.assertEqual(info._StateInfo__input_summary.brief, summary) |
| 227 | + self.assertEqual(info._StateInfo__input_summary.details, details) |
| 228 | + self.assertEqual(info._StateInfo__output_summary.brief, "") |
| 229 | + self.assertEqual(info._StateInfo__output_summary.details, no_output) |
| 230 | + |
| 231 | + self.send_signal(self.widget.Inputs.data_subset, None) |
| 232 | + self.assertEqual(info._StateInfo__input_summary.brief, "") |
| 233 | + self.assertEqual(info._StateInfo__input_summary.details, no_input) |
| 234 | + self.assertEqual(info._StateInfo__output_summary.brief, "") |
| 235 | + self.assertEqual(info._StateInfo__output_summary.details, no_output) |
| 236 | + |
187 | 237 |
|
188 | 238 | # Derive from WidgetTest to simplify creation of the Mosaic widget, although |
189 | 239 | # we are actually testing the MosaicVizRank dialog and not the widget |
|
0 commit comments