diff options
author | Oliver Wolff <oliver.wolff@digia.com> | 2012-12-17 14:15:59 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-01-09 08:59:26 +0100 |
commit | 083d2c8bb8a2a0fc92342625049bd7becdcea922 (patch) | |
tree | 2eb0fe9f3eec59eba2858ac85069bb6d3d147075 /tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp | |
parent | 05659223bf02c8bac0463fe1e7a9364ef5677b75 (diff) |
Removed hardcoded values from tst_qgraphicsview::scrollBarRanges
Instead of testing the "windows" and "motif" styles, that test should
actually test the scrollBarRanges for all available styles. To be able
to do that, the magic numbers 16 (width/height of scrollbars) and 4
(spacing for the faux motif style) were replaced and instead of setting
the explicit values in the data the "number of scrollbars/spacings to
add/remove" is saved in a struct and the value of these (depending
on the style) is obtained in the test run.
This change does not also cause the fusion style to also be tested but
also fixes this test for Windows 7 and 8 (Aero) where the scrollbar
width/height is not 16 but 17.
Task-number: QTBUG-28611
Task-number: QTBUG-29002
Change-Id: I5d103018fde81cee6e6e89cd414426768b2dc8e7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp')
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp | 61 |
1 files changed, 44 insertions, 17 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp index 4ef41f4fca..03227a440a 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp @@ -68,9 +68,15 @@ #include <private/qinputmethod_p.h> #include "../../../qtest-config.h" +#include "tst_qgraphicsview.h" +Q_DECLARE_METATYPE(ExpectedValueDescription) +Q_DECLARE_METATYPE(QList<int>) +Q_DECLARE_METATYPE(QList<QRectF>) +Q_DECLARE_METATYPE(QMatrix) Q_DECLARE_METATYPE(QPainterPath) Q_DECLARE_METATYPE(Qt::ScrollBarPolicy) +Q_DECLARE_METATYPE(ScrollBarCount) #ifdef Q_OS_MAC //On mac we get full update. So check that the expected region is contained inside the actual @@ -2756,32 +2762,32 @@ public: void tst_QGraphicsView::scrollBarRanges() { + QFETCH(QString, style); QFETCH(QSize, viewportSize); QFETCH(QRectF, sceneRect); + QFETCH(ScrollBarCount, sceneRectOffsetFactors); QFETCH(QTransform, transform); QFETCH(Qt::ScrollBarPolicy, hbarpolicy); QFETCH(Qt::ScrollBarPolicy, vbarpolicy); - QFETCH(int, hmin); - QFETCH(int, hmax); - QFETCH(int, vmin); - QFETCH(int, vmax); - QFETCH(bool, useMotif); + QFETCH(ExpectedValueDescription, hmin); + QFETCH(ExpectedValueDescription, hmax); + QFETCH(ExpectedValueDescription, vmin); + QFETCH(ExpectedValueDescription, vmax); QFETCH(bool, useStyledPanel); - QGraphicsScene scene(sceneRect); - scene.addRect(sceneRect, QPen(Qt::blue), QBrush(QColor(Qt::green))); + if (style == QLatin1String("GTK+") && useStyledPanel) + QSKIP("GTK + style test skipped, see QTBUG-29002"); + + QGraphicsScene scene; QGraphicsView view(&scene); view.setRenderHint(QPainter::Antialiasing); view.setTransform(transform); view.setFrameStyle(useStyledPanel ? QFrame::StyledPanel : QFrame::NoFrame); - if (useMotif) { + if (style == QString("motif")) view.setStyle(new FauxMotifStyle); - } else { -#if !defined(QT_NO_STYLE_WINDOWS) - view.setStyle(QStyleFactory::create("windows")); -#endif - } + else + view.setStyle(QStyleFactory::create(style)); view.setStyleSheet(" "); // enables style propagation ;-) int adjust = 0; @@ -2795,10 +2801,31 @@ void tst_QGraphicsView::scrollBarRanges() view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view)); - QCOMPARE(view.horizontalScrollBar()->minimum(), hmin); - QCOMPARE(view.verticalScrollBar()->minimum(), vmin); - QCOMPARE(view.horizontalScrollBar()->maximum(), hmax); - QCOMPARE(view.verticalScrollBar()->maximum(), vmax); + const int offset = view.style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, 0); + + QRectF actualSceneRect; + actualSceneRect.setLeft(sceneRect.left() + sceneRectOffsetFactors.left * offset); + actualSceneRect.setWidth(sceneRect.width() + sceneRectOffsetFactors.right * offset); + actualSceneRect.setTop(sceneRect.top() + sceneRectOffsetFactors.top * offset); + actualSceneRect.setHeight(sceneRect.height() + sceneRectOffsetFactors.bottom * offset); + scene.setSceneRect(actualSceneRect); + scene.addRect(actualSceneRect, QPen(Qt::blue), QBrush(QColor(Qt::green))); + + int expectedHmin = hmin.value + hmin.scrollBarExtentsToAdd * offset; + int expectedVmin = vmin.value + vmin.scrollBarExtentsToAdd * offset; + int expectedHmax = hmax.value + hmax.scrollBarExtentsToAdd * offset; + int expectedVmax = vmax.value + vmax.scrollBarExtentsToAdd* offset; + if (useStyledPanel && view.style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents)) { + int spacing = view.style()->pixelMetric(QStyle::PM_ScrollView_ScrollBarSpacing); + expectedHmin += hmin.spacingsToAdd * spacing; + expectedVmin += vmin.spacingsToAdd * spacing; + expectedHmax += hmax.spacingsToAdd * spacing; + expectedVmax += vmax.spacingsToAdd * spacing; + } + QCOMPARE(view.horizontalScrollBar()->minimum(), expectedHmin); + QCOMPARE(view.verticalScrollBar()->minimum(), expectedVmin); + QCOMPARE(view.horizontalScrollBar()->maximum(), expectedHmax); + QCOMPARE(view.verticalScrollBar()->maximum(), expectedVmax); } class TestView : public QGraphicsView |