diff --git a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp index 9be41ad7992..04b1114c3d7 100644 --- a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp +++ b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp @@ -3,11 +3,14 @@ #include + #include +#include #include #include #include #include + #include #include #include @@ -66,7 +69,13 @@ private slots: void setRepeatAction(); void connectedSliders(); + void sliderChange_QDial() { sliderChange_impl(); } + void sliderChange_QScrollBar() { sliderChange_impl(); } + void sliderChange_QSlider() { sliderChange_impl(); } + private: + template + void sliderChange_impl(); void waitUntilTimeElapsed(const QElapsedTimer &t, int ms); QWidget *topLevel; @@ -2101,5 +2110,58 @@ void tst_QAbstractSlider::connectedSliders() delete slider2; } + + +template +void tst_QAbstractSlider::sliderChange_impl() +{ + struct Tracker : Slider { + using Slider::Slider; + using QAbstractSlider::SliderChange; // make it public + + std::vector changes; + + void sliderChange(QAbstractSlider::SliderChange c) override + { + Slider::sliderChange(c); + changes.push_back(c); + } + }; + using SliderChange = typename Tracker::SliderChange; + + Tracker sl; + QCOMPARE(sl.changes.size(), 0U); + + sl.setRange(0, 100'000); + QCOMPARE(sl.changes.size(), 1U); + QCOMPARE(sl.changes.back(), SliderChange::SliderRangeChange); + sl.changes.clear(); + + sl.setOrientation(sl.orientation() == Qt::Horizontal ? Qt::Vertical + /* else */ : Qt::Horizontal); + QEXPECT_FAIL("", "QTBUG-135597", Continue); + QCOMPARE(sl.changes.size(), 1U); + if (!sl.changes.empty()) { + QEXPECT_FAIL("", "QTBUG-135597", Continue); + QCOMPARE(sl.changes.back(), SliderChange::SliderOrientationChange); + } + sl.changes.clear(); + + sl.setPageStep(1025); // unlikely to be the default ;) + QCOMPARE(sl.changes.size(), 1U); + QCOMPARE(sl.changes.back(), SliderChange::SliderStepsChange); + sl.changes.clear(); + + sl.setSingleStep(42); // unlikely to be the default ;) + QCOMPARE(sl.changes.size(), 1U); + QCOMPARE(sl.changes.back(), SliderChange::SliderStepsChange); + sl.changes.clear(); + + sl.setValue(131); // unlikely to be the default ;) + QCOMPARE(sl.changes.size(), 1U); + QCOMPARE(sl.changes.back(), SliderChange::SliderValueChange); + sl.changes.clear(); +} + QTEST_MAIN(tst_QAbstractSlider) #include "tst_qabstractslider.moc"