mirror of
https://github.com/pyapp-kit/superqt.git
synced 2025-09-05 17:20:27 +02:00
* Check min max vs value * add test * style: [pre-commit.ci] auto fixes [...] * test min too * check that max > min per Qt * update test --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
106 lines
2.6 KiB
Python
106 lines
2.6 KiB
Python
from qtpy.QtCore import Qt
|
|
|
|
from superqt.spinbox import QLargeIntSpinBox
|
|
|
|
|
|
def test_large_spinbox(qtbot):
|
|
sb = QLargeIntSpinBox()
|
|
qtbot.addWidget(sb)
|
|
|
|
for e in range(2, 100, 2):
|
|
sb.setMaximum(10**e + 2)
|
|
with qtbot.waitSignal(sb.valueChanged) as sgnl:
|
|
sb.setValue(10**e)
|
|
assert sgnl.args == [10**e]
|
|
assert sb.value() == 10**e
|
|
|
|
sb.setMinimum(-(10**e) - 2)
|
|
|
|
with qtbot.waitSignal(sb.valueChanged) as sgnl:
|
|
sb.setValue(-(10**e))
|
|
assert sgnl.args == [-(10**e)]
|
|
assert sb.value() == -(10**e)
|
|
|
|
|
|
def test_large_spinbox_range(qtbot):
|
|
sb = QLargeIntSpinBox()
|
|
qtbot.addWidget(sb)
|
|
sb.setRange(-100, 100)
|
|
sb.setValue(50)
|
|
|
|
sb.setRange(-10, 10)
|
|
assert sb.value() == 10
|
|
|
|
sb.setRange(100, 1000)
|
|
assert sb.value() == 100
|
|
|
|
sb.setRange(50, 0)
|
|
assert sb.minimum() == 50
|
|
assert sb.maximum() == 50
|
|
assert sb.value() == 50
|
|
|
|
|
|
def test_large_spinbox_type(qtbot):
|
|
sb = QLargeIntSpinBox()
|
|
qtbot.addWidget(sb)
|
|
|
|
assert isinstance(sb.value(), int)
|
|
|
|
sb.setValue(1.1)
|
|
assert isinstance(sb.value(), int)
|
|
assert sb.value() == 1
|
|
|
|
sb.setValue(1.9)
|
|
assert isinstance(sb.value(), int)
|
|
assert sb.value() == 1
|
|
|
|
|
|
def test_large_spinbox_signals(qtbot):
|
|
sb = QLargeIntSpinBox()
|
|
qtbot.addWidget(sb)
|
|
|
|
with qtbot.waitSignal(sb.valueChanged) as sgnl:
|
|
sb.setValue(200)
|
|
assert sgnl.args == [200]
|
|
|
|
with qtbot.waitSignal(sb.textChanged) as sgnl:
|
|
sb.setValue(240)
|
|
assert sgnl.args == ["240"]
|
|
|
|
|
|
def test_keyboard_tracking(qtbot):
|
|
sb = QLargeIntSpinBox()
|
|
qtbot.addWidget(sb)
|
|
|
|
assert sb.value() == 0
|
|
sb.setKeyboardTracking(False)
|
|
with qtbot.assertNotEmitted(sb.valueChanged):
|
|
sb.lineEdit().setText("20")
|
|
assert sb.lineEdit().text() == "20"
|
|
assert sb.value() == 0
|
|
assert sb._pending_emit is True
|
|
|
|
with qtbot.waitSignal(sb.valueChanged) as sgnl:
|
|
qtbot.keyPress(sb, Qt.Key.Key_Enter)
|
|
assert sgnl.args == [20]
|
|
assert sb._pending_emit is False
|
|
|
|
sb.setKeyboardTracking(True)
|
|
with qtbot.waitSignal(sb.valueChanged) as sgnl:
|
|
sb.lineEdit().setText("25")
|
|
assert sb._pending_emit is False
|
|
assert sgnl.args == [25]
|
|
|
|
|
|
def test_large_spinbox_step_type(qtbot):
|
|
sb = QLargeIntSpinBox()
|
|
qtbot.addWidget(sb)
|
|
sb.setMaximum(1_000_000_000)
|
|
sb.setStepType(sb.StepType.AdaptiveDecimalStepType)
|
|
sb.setValue(1_000_000)
|
|
sb.stepBy(1)
|
|
assert sb.value() == 1_100_000
|
|
sb.setStepType(sb.StepType.DefaultStepType)
|
|
sb.stepBy(1)
|
|
assert sb.value() == 1_100_001
|