From d1f9f2125e6cbba236dc50309a4aee2dc16a6345 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 3 Dec 2013 09:01:50 +0100 Subject: Stabilize tst_QColumnView::dynamicModelChanges(). Use QTest::qWaitForWindowExposed() and QTRY_COMPARE() instead of hardcoded timeout. Task-number: QTBUG-35308 Change-Id: I27eee9932dd3b6087db4ad13b1a4fb184a487f57 Reviewed-by: Stephen Kelly --- tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp index 6c04e5b39a..e2b2fb9551 100644 --- a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp +++ b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp @@ -1043,13 +1043,14 @@ void tst_QColumnView::dynamicModelChanges() ColumnView view; view.setModel(&model); view.setItemDelegate(&delegate); + centerOnScreen(&view); view.show(); QStandardItem *item = new QStandardItem(QLatin1String("item")); model.appendRow(item); - QTest::qWait(200); //let the time for painting to occur - QCOMPARE(delegate.paintedIndexes.count(), 1); + QVERIFY(QTest::qWaitForWindowExposed(&view)); //let the time for painting to occur + QTRY_COMPARE(delegate.paintedIndexes.count(), 1); QCOMPARE(*delegate.paintedIndexes.begin(), model.index(0,0)); -- cgit v1.2.3 From c70750f5363999640cc99278ccf90679fb27c84d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 29 Nov 2013 10:06:20 +0100 Subject: Stabilize tst_QGraphicsItem The cursor() test was missing a QTest::moveMouse() before sending of the mouse event (as all the following subtests do). When run on a desktop with the panel on the left side of the screen, the mouse pointer would land over the left item instead of in between them, as assumed by the subtest, and the following QCOMPARE failed. Change-Id: Ib74fdf0cfbfbc8ecb79a906610a2da5cb50c89d0 Reviewed-by: Friedemann Kleint --- tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'tests') diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp index 6c26ddb293..fc1d0e34cb 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp @@ -4221,6 +4221,7 @@ void tst_QGraphicsItem::cursor() QCursor cursor = view.viewport()->cursor(); { + QTest::mouseMove(view.viewport(), QPoint(100, 50)); QMouseEvent event(QEvent::MouseMove, QPoint(100, 50), Qt::NoButton, 0, 0); QApplication::sendEvent(view.viewport(), &event); } -- cgit v1.2.3 From 9302169bd5ad8380ebe95f50986d2b32eb486901 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 29 Nov 2013 14:06:50 +0100 Subject: QtConcurrent: Workaround GCC bug 58800 in median calculation 1) Revert 880b614 for libstdc++ <= 4.7.3 || (4.8.0 >= ... <= 4.8.2) 2) Fix off-by-one error in reverted code for Median::_bufferSize <= 2. Task-number: QTBUG-35058 Change-Id: I9d226c2806c1cf06c3d5b9c9f371262d2d69bf2b Reviewed-by: Olivier Goffart Reviewed-by: Marc Mutz --- tests/auto/concurrent/concurrent.pro | 1 + .../qtconcurrentmedian/qtconcurrentmedian.pro | 5 ++ .../qtconcurrentmedian/tst_qtconcurrentmedian.cpp | 87 ++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 tests/auto/concurrent/qtconcurrentmedian/qtconcurrentmedian.pro create mode 100644 tests/auto/concurrent/qtconcurrentmedian/tst_qtconcurrentmedian.cpp (limited to 'tests') diff --git a/tests/auto/concurrent/concurrent.pro b/tests/auto/concurrent/concurrent.pro index 20bad24fc1..e67c51aae3 100644 --- a/tests/auto/concurrent/concurrent.pro +++ b/tests/auto/concurrent/concurrent.pro @@ -3,6 +3,7 @@ SUBDIRS=\ qtconcurrentfilter \ qtconcurrentiteratekernel \ qtconcurrentmap \ + qtconcurrentmedian \ qtconcurrentrun \ qtconcurrentthreadengine diff --git a/tests/auto/concurrent/qtconcurrentmedian/qtconcurrentmedian.pro b/tests/auto/concurrent/qtconcurrentmedian/qtconcurrentmedian.pro new file mode 100644 index 0000000000..1eb27d825a --- /dev/null +++ b/tests/auto/concurrent/qtconcurrentmedian/qtconcurrentmedian.pro @@ -0,0 +1,5 @@ +CONFIG += testcase parallel_test +TARGET = tst_qtconcurrentmedian +QT = core testlib concurrent +SOURCES = tst_qtconcurrentmedian.cpp +DEFINES += QT_STRICT_ITERATORS diff --git a/tests/auto/concurrent/qtconcurrentmedian/tst_qtconcurrentmedian.cpp b/tests/auto/concurrent/qtconcurrentmedian/tst_qtconcurrentmedian.cpp new file mode 100644 index 0000000000..c9fbc790bd --- /dev/null +++ b/tests/auto/concurrent/qtconcurrentmedian/tst_qtconcurrentmedian.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include + +#include + +class tst_QtConcurrentMedian: public QObject +{ + Q_OBJECT +private slots: + void median_data(); + void median(); +}; + +void tst_QtConcurrentMedian::median_data() +{ + QTest::addColumn >("values"); + QTest::addColumn("expectedMedian"); + + QTest::newRow("size=1") + << (QList() << 1) + << 1; + + QTest::newRow("size=2") + << (QList() << 3 << 2) + << 3; + + QTest::newRow("size=3") + << (QList() << 3 << 1 << 2) + << 2; + + QTest::newRow("gcc bug 58800 (nth_element)") + << (QList() << 207089 << 202585 << 180067 << 157549 << 211592 << 216096 << 207089) + << 207089; +} + +void tst_QtConcurrentMedian::median() +{ + QFETCH(QList , values); + QFETCH(int, expectedMedian); + + QtConcurrent::Median m(values.size()); + foreach (int value, values) + m.addValue(value); + QCOMPARE(m.median(), expectedMedian); +} + +QTEST_MAIN(tst_QtConcurrentMedian) +#include "tst_qtconcurrentmedian.moc" -- cgit v1.2.3 From 1983bc9c374fc8b83f608ecc1e6ce6ef4f54e572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Mon, 2 Dec 2013 23:18:00 +0100 Subject: Make layoutDirection pass with new expose behavior MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A QMenu with no actions gets a size of (0, 0) on OS X. With the new stricter expose event behavior this is considered invalid geometry and the platform plugin won't send an expose event, causing the qWaitForWindowExposed test to fail. Add a menu entry since the layoutDirection test is not really interested in testing the special case of empty menus. Change-Id: I5221dc3f0472ac13edf821df08bacc3a4eb5cd9d Reviewed-by: Simo Fält Reviewed-by: Gunnar Sletta --- tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'tests') diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index 7c1bb957d6..ece9026ba2 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -570,6 +570,7 @@ void tst_QMenu::layoutDirection() win.setLayoutDirection(Qt::RightToLeft); QMenu menu(&win); + menu.addAction("foo"); menu.show(); QVERIFY(QTest::qWaitForWindowExposed(&menu)); QCOMPARE(menu.layoutDirection(), Qt::RightToLeft); -- cgit v1.2.3