def test_range_popup_clim_buttons(mock_show, qtbot, layer): """The buttons in the clim_popup should adjust the contrast limits value""" qtctrl = QtBaseImageControls(layer) qtbot.addWidget(qtctrl) original_clims = tuple(layer.contrast_limits) layer.contrast_limits = (20, 40) qtbot.mousePress(qtctrl.contrastLimitsSlider, Qt.RightButton) # pressing the reset button returns the clims to the default values reset_button = qtctrl.clim_popup.findChild(QPushButton, "reset_clims_button") reset_button.click() qtbot.wait(20) assert tuple(qtctrl.contrastLimitsSlider.value()) == original_clims rangebtn = qtctrl.clim_popup.findChild(QPushButton, "full_clim_range_button") # the data we created above was uint16 for Image, and float for Surface # Surface will not have a "full range button" if np.issubdtype(layer.dtype, np.integer): rangebtn.click() qtbot.wait(20) assert tuple(layer.contrast_limits_range) == (0, 2**16 - 1) min_ = qtctrl.contrastLimitsSlider.minimum() max_ = qtctrl.contrastLimitsSlider.maximum() assert (min_, max_) == (0, 2**16 - 1) else: assert rangebtn is None
def test_changing_model_updates_view(qtbot, layer): """Changing the model attribute should update the view""" qtctrl = QtBaseImageControls(layer) qtbot.addWidget(qtctrl) new_clims = (20, 40) layer.contrast_limits = new_clims assert tuple(qtctrl.contrastLimitsSlider.value()) == new_clims
def test_base_controls_creation(qtbot, layer): """Check basic creation of QtBaseImageControls works""" qtctrl = QtBaseImageControls(layer) qtbot.addWidget(qtctrl) original_clims = tuple(layer.contrast_limits) slider_clims = qtctrl.contrastLimitsSlider.value() assert slider_clims[0] == 0 assert slider_clims[1] == 99 assert tuple(slider_clims) == original_clims
def test_clim_right_click_shows_popup(mock_show, qtbot, layer): """Right clicking on the contrast limits slider should show a popup.""" qtctrl = QtBaseImageControls(layer) qtbot.addWidget(qtctrl) qtbot.mousePress(qtctrl.contrastLimitsSlider, Qt.RightButton) assert hasattr(qtctrl, 'clim_popup') # this mock doesn't seem to be working on cirrus windows # but it works on local windows tests... if not (os.name == 'nt' and os.getenv("CI")): mock_show.assert_called_once()
def test_qt_image_controls_change_contrast(qtbot): layer = Image(np.random.rand(8, 8)) qtctrl = QtBaseImageControls(layer) qtbot.addWidget(qtctrl) qtctrl.contrastLimitsSlider.setValue((0.1, 0.8)) assert tuple(layer.contrast_limits) == (0.1, 0.8)