Add QScrollBar test in tst_baseline_widgets

Task-number: QTBUG-99882
Pick-to: 6.3
Change-Id: I9e9d3a674c205d26dd008b7de4e4ce31f470bf51
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Axel Spoerl 2022-01-14 12:56:55 +01:00
parent 574b625914
commit 5d75e9d8b0
1 changed files with 69 additions and 0 deletions

View File

@ -29,6 +29,7 @@
#include <qbaselinetest.h>
#include <qwidgetbaselinetest.h>
#include <QtWidgets>
#include <QStyleOptionSlider>
class tst_Widgets : public QWidgetBaselineTest
{
@ -58,6 +59,9 @@ private slots:
void tst_QRadioButton_data();
void tst_QRadioButton();
void tst_QScrollBar_data();
void tst_QScrollBar();
};
void tst_Widgets::tst_QSlider_data()
@ -382,6 +386,71 @@ void tst_Widgets::tst_QRadioButton()
QBASELINE_CHECK_DEFERRED(takeSnapshot(), "releaseChecked");
}
void tst_Widgets::tst_QScrollBar_data()
{
QTest::addColumn<Qt::Orientation>("orientation");
QTest::newRow("Horizontal") << Qt::Horizontal;
QTest::newRow("Vertical") << Qt::Vertical;
}
void tst_Widgets::tst_QScrollBar()
{
QFETCH(Qt::Orientation, orientation);
QBoxLayout box((orientation == Qt::Vertical) ? QBoxLayout::LeftToRight
: QBoxLayout::TopToBottom);
QList<QScrollBar*> bars;
for (int i = 0; i < 4; ++i) {
QScrollBar *bar = new QScrollBar(testWindow());
(orientation == Qt::Vertical) ? bar->setFixedHeight(100)
: bar->setFixedWidth(100);
bar->setOrientation(orientation);
bar->setValue(i * 33);
box.addWidget(bar);
bars.append(bar);
}
testWindow()->setLayout(&box);
takeStandardSnapshots();
// press left/up of first bar
QScrollBar *bar = bars.at(0);
QStyleOptionSlider styleOption = qt_qscrollbarStyleOption(bar);
QPoint clickTarget = bar->style()->subControlRect(QStyle::CC_ScrollBar, &styleOption,
QStyle::SC_ScrollBarSubLine, bar).center();
QTest::mousePress(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
QBASELINE_CHECK_DEFERRED(takeSnapshot(), "pressLeftUp");
QTest::mouseRelease(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
// press slider of first bar
styleOption = qt_qscrollbarStyleOption(bar);
clickTarget = bar->style()->subControlRect(QStyle::CC_ScrollBar, &styleOption,
QStyle::SC_ScrollBarSlider, bar).center();
QTest::mousePress(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
QVERIFY(bar->isSliderDown());
QBASELINE_CHECK_DEFERRED(takeSnapshot(), "pressSlider");
QTest::mouseRelease(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
// Press AddPage up on first bar
clickTarget = bar->style()->subControlRect(QStyle::CC_ScrollBar, &styleOption,
QStyle::SC_ScrollBarAddPage, bar).center();
QTest::mousePress(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
QBASELINE_CHECK_DEFERRED(takeSnapshot(), "pressAddPage");
QTest::mouseRelease(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
// press SubPage of last bar
bar = bars.at(3);
styleOption = qt_qscrollbarStyleOption(bar);
clickTarget = bar->style()->subControlRect(QStyle::CC_ScrollBar, &styleOption,
QStyle::SC_ScrollBarAddLine, bar).center();
QTest::mousePress(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
QBASELINE_CHECK_DEFERRED(takeSnapshot(), "pressRightDown");
QTest::mouseRelease(bar,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0);
}
#define main _realmain
QTEST_MAIN(tst_Widgets)
#undef main