Skip to content

Commit dae3822

Browse files
committed
Color gradient selection: Tests for centering
1 parent 6613114 commit dae3822

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

Orange/widgets/utils/tests/test_colorgradientselection.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1+
from unittest.mock import Mock
2+
13
import numpy as np
24

35
from AnyQt.QtTest import QSignalSpy
4-
from AnyQt.QtCore import Qt, QStringListModel
6+
from AnyQt.QtCore import Qt, QStringListModel, QModelIndex
57

8+
from Orange.widgets.utils import itemmodels
69
from Orange.widgets.utils.colorgradientselection import ColorGradientSelection
710
from Orange.widgets.tests.base import GuiTest
811

12+
913
class TestColorGradientSelection(GuiTest):
1014
def test_constructor(self):
1115
w = ColorGradientSelection(thresholds=(0.1, 0.9))
@@ -68,3 +72,40 @@ def test_slider_move(self):
6872
low, high = changed[-1]
6973
self.assertLessEqual(low, high)
7074
self.assertEqual(high, 0.0)
75+
76+
def test_center(self):
77+
w = ColorGradientSelection(center=42)
78+
self.assertEqual(w.center(), 42)
79+
w.setCenter(40)
80+
self.assertEqual(w.center(), 40)
81+
82+
def test_center_visibility(self):
83+
w = ColorGradientSelection(center=0)
84+
w.center_box.setVisible = Mock()
85+
model = itemmodels.ContinuousPalettesModel()
86+
w.setModel(model)
87+
for row in range(model.rowCount(QModelIndex())):
88+
palette = model.data(model.index(row, 0), Qt.UserRole)
89+
if palette:
90+
if palette.flags & palette.Diverging:
91+
diverging = row
92+
else:
93+
nondiverging = row
94+
95+
w.setCurrentIndex(diverging)
96+
w.center_box.setVisible.assert_called_with(True)
97+
w.setCurrentIndex(nondiverging)
98+
w.center_box.setVisible.assert_called_with(False)
99+
w.setCurrentIndex(diverging)
100+
w.center_box.setVisible.assert_called_with(True)
101+
102+
w = ColorGradientSelection()
103+
self.assertIsNone(w.center_box)
104+
105+
def test_center_changed(self):
106+
w = ColorGradientSelection(center=42)
107+
changed = QSignalSpy(w.centerChanged)
108+
w.center_edit.setText("41")
109+
w.center_edit.editingFinished.emit()
110+
self.assertEqual(w.center(), 41)
111+
self.assertEqual(list(changed), [[41]])

Orange/widgets/visualize/tests/test_owheatmap.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# pylint: disable=missing-docstring, protected-access
33
import warnings
44
import unittest
5-
from unittest.mock import patch
5+
from unittest.mock import patch, Mock
66

77
import numpy as np
88
from sklearn.exceptions import ConvergenceWarning
@@ -245,6 +245,21 @@ def test_palette_centering(self):
245245
colors = image_row_colors(image)
246246
np.testing.assert_almost_equal(colors, desired)
247247

248+
def test_centering_threshold_change(self):
249+
data = np.arange(2).reshape(-1, 1)
250+
table = Table.from_numpy(Domain([ContinuousVariable("y")]), data)
251+
self.send_signal(self.widget.Inputs.data, table)
252+
253+
cmw = self.widget.color_map_widget
254+
palette_index = cmw.findData(
255+
colorpalettes.ContinuousPalettes["diverging_bwr_40_95_c42"],
256+
Qt.UserRole)
257+
cmw.setCurrentIndex(palette_index)
258+
259+
self.widget.update_color_schema = Mock()
260+
cmw.centerChanged.emit(42)
261+
self.widget.update_color_schema.assert_called()
262+
248263
def test_palette_center(self):
249264
widget = self.widget
250265
model = widget.color_map_widget.model()

0 commit comments

Comments
 (0)