|
| 1 | +from unittest.mock import Mock |
| 2 | + |
1 | 3 | import numpy as np |
2 | 4 |
|
3 | 5 | from AnyQt.QtTest import QSignalSpy |
4 | | -from AnyQt.QtCore import Qt, QStringListModel |
| 6 | +from AnyQt.QtCore import Qt, QStringListModel, QModelIndex |
5 | 7 |
|
| 8 | +from Orange.widgets.utils import itemmodels |
6 | 9 | from Orange.widgets.utils.colorgradientselection import ColorGradientSelection |
7 | 10 | from Orange.widgets.tests.base import GuiTest |
8 | 11 |
|
| 12 | + |
9 | 13 | class TestColorGradientSelection(GuiTest): |
10 | 14 | def test_constructor(self): |
11 | 15 | w = ColorGradientSelection(thresholds=(0.1, 0.9)) |
@@ -68,3 +72,40 @@ def test_slider_move(self): |
68 | 72 | low, high = changed[-1] |
69 | 73 | self.assertLessEqual(low, high) |
70 | 74 | 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]]) |
0 commit comments