def test_change_floatslider_range(gslider: QRangeSlider, qtbot): with qtbot.waitSignals([gslider.rangeChanged, gslider.valueChanged]): gslider.setMinimum(30) assert gslider.value()[0] == 30 == gslider.minimum() assert gslider.maximum() == 99 with qtbot.waitSignal(gslider.rangeChanged): gslider.setMaximum(70) assert gslider.value()[0] == 30 == gslider.minimum() assert gslider.value()[1] == 70 == gslider.maximum() with qtbot.waitSignals([gslider.rangeChanged, gslider.valueChanged]): gslider.setRange(40, 60) assert gslider.value()[0] == 40 == gslider.minimum() assert gslider.maximum() == 60 with qtbot.waitSignal(gslider.valueChanged): gslider.setValue([40, 50]) assert gslider.value()[0] == 40 == gslider.minimum() assert gslider.value()[1] == 50 with qtbot.waitSignals([gslider.rangeChanged, gslider.valueChanged]): gslider.setMaximum(45) assert gslider.value()[0] == 40 == gslider.minimum() assert gslider.value()[1] == 45 == gslider.maximum()
def test_slider_extremes(gslider: QRangeSlider, mag, qtbot): _mag = 10**mag with qtbot.waitSignal(gslider.rangeChanged): gslider.setRange(-_mag, _mag) for i in _linspace(-_mag, _mag, 10): gslider.setValue((i, _mag)) assert math.isclose(gslider.value()[0], i, rel_tol=1e-8) gslider.initStyleOption(QStyleOptionSlider())
def test_range(qtbot, orientation): rs = QRangeSlider(getattr(Qt, orientation)) qtbot.addWidget(rs) rs.setValue([10, 20]) assert rs.value() == (10, 20) rs.setRange(15, 20) assert rs.value() == (15, 20) assert rs.minimum() == 15 assert rs.maximum() == 20
def test_float_values(gslider: QRangeSlider, qtbot): with qtbot.waitSignal(gslider.rangeChanged): gslider.setRange(0.1, 0.9) assert gslider.minimum() == 0.1 assert gslider.maximum() == 0.9 with qtbot.waitSignal(gslider.valueChanged): gslider.setValue([0.4, 0.6]) assert gslider.value() == (0.4, 0.6) with qtbot.waitSignal(gslider.valueChanged): gslider.setValue([0, 1.9]) assert gslider.value()[0] == 0.1 == gslider.minimum() assert gslider.value()[1] == 0.9 == gslider.maximum()
def test_drag_handles(qtbot): rs = QRangeSlider(Qt.Horizontal) qtbot.addWidget(rs) rs.setRange(0, 99) rs.setValue((20, 80)) rs.setMouseTracking(True) rs.show() # press the left handle pos = rs._handleRect(0).center() with qtbot.waitSignal(rs.sliderPressed): qtbot.mousePress(rs, Qt.LeftButton, pos=pos) assert rs._pressedControl == SC_HANDLE assert rs._pressedIndex == 0 # drag the left handle with qtbot.waitSignals([rs.sliderMoved] * 13): # couple less signals for _ in range(15): pos.setX(pos.x() + 2) qtbot.mouseMove(rs, pos) with qtbot.waitSignal(rs.sliderReleased): qtbot.mouseRelease(rs, Qt.LeftButton) # check the values assert rs.value()[0] > 30 assert rs._pressedControl == SC_NONE # press the right handle pos = rs._handleRect(1).center() with qtbot.waitSignal(rs.sliderPressed): qtbot.mousePress(rs, Qt.LeftButton, pos=pos) assert rs._pressedControl == SC_HANDLE assert rs._pressedIndex == 1 # drag the right handle with qtbot.waitSignals([rs.sliderMoved] * 13): # couple less signals for _ in range(15): pos.setX(pos.x() - 2) qtbot.mouseMove(rs, pos) with qtbot.waitSignal(rs.sliderReleased): qtbot.mouseRelease(rs, Qt.LeftButton) # check the values assert rs.value()[1] < 70 assert rs._pressedControl == SC_NONE
def test_drag_handles_beyond_edge(qtbot): rs = QRangeSlider(Qt.Horizontal) qtbot.addWidget(rs) rs.setRange(0, 99) rs.setValue((20, 80)) rs.setMouseTracking(True) rs.show() # press the right handle pos = rs._handleRect(1).center() with qtbot.waitSignal(rs.sliderPressed): qtbot.mousePress(rs, Qt.LeftButton, pos=pos) assert rs._pressedControl == SC_HANDLE assert rs._pressedIndex == 1 # drag the handle off the right edge and make sure the value gets to the max for _ in range(7): pos.setX(pos.x() + 10) qtbot.mouseMove(rs, pos) with qtbot.waitSignal(rs.sliderReleased): qtbot.mouseRelease(rs, Qt.LeftButton) assert rs.value()[1] == 99