summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorThierry Bastian <thierry.bastian@nokia.com>2010-12-17 00:00:10 (GMT)
committerThierry Bastian <thierry.bastian@nokia.com>2010-12-17 00:00:10 (GMT)
commit3a5aaa781547838ca824fbbf03333728aa68ed1a (patch)
treea1beb8604aeb2d1e566d8f6b0631998cb39ba290 /tests/auto
parent983d577ccd5844e24690757a4140594d8da05625 (diff)
parent64e1f888586f2c988b08bcc93579990e970b7206 (diff)
downloadQt-3a5aaa781547838ca824fbbf03333728aa68ed1a.zip
Qt-3a5aaa781547838ca824fbbf03333728aa68ed1a.tar.gz
Qt-3a5aaa781547838ca824fbbf03333728aa68ed1a.tar.bz2
Merge branch 'master-upstream' into master-water
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/baselineexample/baselineexample.pro18
-rw-r--r--tests/auto/baselineexample/tst_baselineexample.cpp158
-rw-r--r--tests/auto/lancelot/lancelot.pro5
-rw-r--r--tests/auto/lancelot/tst_lancelot.cpp67
-rw-r--r--tests/auto/other.pro1
5 files changed, 211 insertions, 38 deletions
diff --git a/tests/auto/baselineexample/baselineexample.pro b/tests/auto/baselineexample/baselineexample.pro
new file mode 100644
index 0000000..30feecc
--- /dev/null
+++ b/tests/auto/baselineexample/baselineexample.pro
@@ -0,0 +1,18 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2010-12-09T14:55:13
+#
+#-------------------------------------------------
+
+QT += testlib
+
+TARGET = tst_baselineexample
+CONFIG += console
+CONFIG -= app_bundle
+
+TEMPLATE = app
+
+SOURCES += tst_baselineexample.cpp
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+include($$QT_SOURCE_TREE/tests/arthur/common/qbaselinetest.pri)
diff --git a/tests/auto/baselineexample/tst_baselineexample.cpp b/tests/auto/baselineexample/tst_baselineexample.cpp
new file mode 100644
index 0000000..28cbec5
--- /dev/null
+++ b/tests/auto/baselineexample/tst_baselineexample.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** 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, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qbaselinetest.h>
+#include <QPushButton>
+
+class tst_BaselineExample : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_BaselineExample();
+
+private Q_SLOTS:
+ void testBasicUsage();
+ void testMultipleImages();
+ void testDataDriven_data();
+ void testDataDriven();
+ void testDataDrivenMultiple_data();
+ void testDataDrivenMultiple();
+ void testChecksum_data();
+ void testChecksum();
+};
+
+
+tst_BaselineExample::tst_BaselineExample()
+{
+}
+
+
+void tst_BaselineExample::testBasicUsage()
+{
+ // Generate an image:
+ QPushButton b("Press me!");
+ b.resize(100, 50);
+ b.show();
+ QTest::qWaitForWindowShown(&b);
+ QImage img1 = QPixmap::grabWidget(&b).toImage();
+ QVERIFY(!img1.isNull());
+
+ // Compare it to baseline on server:
+ QBASELINE_CHECK(img1, "button");
+}
+
+
+void tst_BaselineExample::testMultipleImages()
+{
+ QPushButton b("Press me!");
+ b.resize(100, 50);
+ b.show();
+ QTest::qWaitForWindowShown(&b);
+ QBASELINE_CHECK(QPixmap::grabWidget(&b).toImage(), "text1");
+
+ b.setText("Kick me!");
+ QTest::qWait(50);
+ QBASELINE_CHECK(QPixmap::grabWidget(&b).toImage(), "text2");
+}
+
+
+void tst_BaselineExample::testDataDriven_data()
+{
+ QTest::addColumn<QString>("label");
+ QTest::newRow("short") << "Ok!";
+ QTest::newRow("long") << "A really long button text that just does not seem to end";
+ QTest::newRow("empty") << "";
+}
+
+
+void tst_BaselineExample::testDataDriven()
+{
+ QFETCH(QString, label);
+ QPushButton b(label);
+ b.resize(100, 50);
+ b.show();
+ QTest::qWaitForWindowShown(&b);
+ QBASELINE_CHECK(QPixmap::grabWidget(&b).toImage(), 0);
+}
+
+
+void tst_BaselineExample::testDataDrivenMultiple_data()
+{
+ testDataDriven_data();
+}
+
+
+void tst_BaselineExample::testDataDrivenMultiple()
+{
+ QFETCH(QString, label);
+ QPushButton b(label);
+ b.resize(100, 50);
+ b.show();
+ QTest::qWaitForWindowShown(&b);
+ QBASELINE_CHECK(QPixmap::grabWidget(&b).toImage(), "normal");
+
+ b.setText(label.prepend('&'));
+ QTest::qWait(50);
+ QBASELINE_CHECK(QPixmap::grabWidget(&b).toImage(), "shortcut");
+}
+
+
+void tst_BaselineExample::testChecksum_data()
+{
+ testDataDriven_data();
+}
+
+
+void tst_BaselineExample::testChecksum()
+{
+ QFETCH(QString, label);
+ QPushButton b(label);
+ b.resize(100, 50);
+ b.show();
+ QTest::qWaitForWindowShown(&b);
+ QBASELINE_CHECK_SUM(QPixmap::grabWidget(&b).toImage(), 0, quint16(qHash(label)));
+}
+
+
+QTEST_MAIN(tst_BaselineExample);
+
+#include "tst_baselineexample.moc"
diff --git a/tests/auto/lancelot/lancelot.pro b/tests/auto/lancelot/lancelot.pro
index 4535b83..6d6edf8 100644
--- a/tests/auto/lancelot/lancelot.pro
+++ b/tests/auto/lancelot/lancelot.pro
@@ -7,9 +7,6 @@ SOURCES += tst_lancelot.cpp \
HEADERS += $$QT_SOURCE_TREE/tests/arthur/common/paintcommands.h
RESOURCES += $$QT_SOURCE_TREE/tests/arthur/common/images.qrc
-include($$QT_SOURCE_TREE/tests/arthur/common/baselineprotocol.pri)
-win32|symbian*:MKSPEC=$$replace(QMAKESPEC, \\\\, /)
-else:MKSPEC=$$QMAKESPEC
-DEFINES += QMAKESPEC=\\\"$$MKSPEC\\\"
+include($$QT_SOURCE_TREE/tests/arthur/common/qbaselinetest.pri)
!symbian:!wince*:DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/lancelot/tst_lancelot.cpp b/tests/auto/lancelot/tst_lancelot.cpp
index 7c6fe66..4bde927 100644
--- a/tests/auto/lancelot/tst_lancelot.cpp
+++ b/tests/auto/lancelot/tst_lancelot.cpp
@@ -66,10 +66,15 @@ public:
static bool simfail;
private:
- ImageItem render(const ImageItem &item);
+ enum GraphicsEngine {
+ Raster = 0,
+ OpenGL = 1
+ };
+
+ bool setupTestSuite(const QStringList& blacklist);
+ void runTestSuite(GraphicsEngine engine, QImage::Format format);
+ ImageItem render(const ImageItem &item, GraphicsEngine engine, QImage::Format format);
void paint(QPaintDevice *device, const QStringList &script, const QString &filePath);
- void runTestSuite();
- bool setupTestSuite(ImageItem::GraphicsEngine engine, QImage::Format format, const QStringList& blacklist);
BaselineProtocol proto;
ImageItemList baseList;
@@ -108,7 +113,7 @@ void tst_Lancelot::initTestCase()
#if defined(Q_OS_SOMEPLATFORM)
QSKIP("This test is not supported on this platform.", SkipAll);
#endif
- if (!proto.connect(&dryRunMode))
+ if (!proto.connect(QLatin1String("tst_Lancelot"), &dryRunMode))
QSKIP(qPrintable(proto.errorMessage()), SkipAll);
QDir qpsDir(scriptsDir);
@@ -125,8 +130,8 @@ void tst_Lancelot::initTestCase()
file.open(QFile::ReadOnly);
QByteArray cont = file.readAll();
scripts.insert(fileName, QString::fromLatin1(cont).split(QLatin1Char('\n'), QString::SkipEmptyParts));
- it->scriptName = fileName;
- it->scriptChecksum = qChecksum(cont.constData(), cont.size());
+ it->itemName = fileName;
+ it->itemChecksum = qChecksum(cont.constData(), cont.size());
it++;
}
}
@@ -135,42 +140,42 @@ void tst_Lancelot::initTestCase()
void tst_Lancelot::testRasterARGB32PM_data()
{
QStringList localBlacklist;
- if (!setupTestSuite(ImageItem::Raster, QImage::Format_ARGB32_Premultiplied, localBlacklist))
+ if (!setupTestSuite(localBlacklist))
QSKIP("Communication with baseline image server failed.", SkipAll);
}
void tst_Lancelot::testRasterARGB32PM()
{
- runTestSuite();
+ runTestSuite(Raster, QImage::Format_ARGB32_Premultiplied);
}
void tst_Lancelot::testRasterRGB32_data()
{
QStringList localBlacklist;
- if (!setupTestSuite(ImageItem::Raster, QImage::Format_RGB32, localBlacklist))
+ if (!setupTestSuite(localBlacklist))
QSKIP("Communication with baseline image server failed.", SkipAll);
}
void tst_Lancelot::testRasterRGB32()
{
- runTestSuite();
+ runTestSuite(Raster, QImage::Format_RGB32);
}
void tst_Lancelot::testRasterRGB16_data()
{
QStringList localBlacklist;
- if (!setupTestSuite(ImageItem::Raster, QImage::Format_RGB16, localBlacklist))
+ if (!setupTestSuite(localBlacklist))
QSKIP("Communication with baseline image server failed.", SkipAll);
}
void tst_Lancelot::testRasterRGB16()
{
- runTestSuite();
+ runTestSuite(Raster, QImage::Format_RGB16);
}
@@ -178,7 +183,7 @@ void tst_Lancelot::testRasterRGB16()
void tst_Lancelot::testOpenGL_data()
{
QStringList localBlacklist = QStringList() << QLatin1String("rasterops.qps");
- if (!setupTestSuite(ImageItem::OpenGL, QImage::Format_RGB32, localBlacklist))
+ if (!setupTestSuite(localBlacklist))
QSKIP("Communication with baseline image server failed.", SkipAll);
}
@@ -197,45 +202,39 @@ void tst_Lancelot::testOpenGL()
ok = true;
}
if (ok)
- runTestSuite();
+ runTestSuite(OpenGL, QImage::Format_RGB32);
else
QSKIP("System under test does not meet preconditions for GL testing. Skipping.", SkipAll);
}
#endif
-bool tst_Lancelot::setupTestSuite(ImageItem::GraphicsEngine engine, QImage::Format format, const QStringList& blacklist)
+bool tst_Lancelot::setupTestSuite(const QStringList& blacklist)
{
QTest::addColumn<ImageItem>("baseline");
ImageItemList itemList(baseList);
-
- for(ImageItemList::iterator it = itemList.begin(); it != itemList.end(); it++) {
- it->engine = engine;
- it->renderFormat = format;
- }
-
- if (!proto.requestBaselineChecksums(&itemList)) {
+ if (!proto.requestBaselineChecksums(QTest::currentTestFunction(), &itemList)) {
QWARN(qPrintable(proto.errorMessage()));
return false;
}
foreach(const ImageItem& item, itemList) {
- if (!blacklist.contains(item.scriptName))
- QTest::newRow(item.scriptName.toLatin1()) << item;
+ if (!blacklist.contains(item.itemName))
+ QTest::newRow(item.itemName.toLatin1()) << item;
}
return true;
}
-void tst_Lancelot::runTestSuite()
+void tst_Lancelot::runTestSuite(GraphicsEngine engine, QImage::Format format)
{
QFETCH(ImageItem, baseline);
if (baseline.status == ImageItem::IgnoreItem)
QSKIP("Blacklisted by baseline server.", SkipSingle);
- ImageItem rendered = render(baseline);
+ ImageItem rendered = render(baseline, engine, format);
if (rendered.image.isNull()) { // Assume an error in the test environment, not Qt
QWARN("Error: Failed to render image.");
QSKIP("Aborted due to errors.", SkipSingle);
@@ -253,26 +252,26 @@ void tst_Lancelot::runTestSuite()
if (dryRunMode)
qDebug() << "Dryrun mode, ignoring detected mismatch." << serverMsg;
else
- QFAIL("Rendered image differs from baseline.\n" + serverMsg);
+ QFAIL("Rendered image differs from baseline. Report:\n " + serverMsg);
}
}
-ImageItem tst_Lancelot::render(const ImageItem &item)
+ImageItem tst_Lancelot::render(const ImageItem &item, GraphicsEngine engine, QImage::Format format)
{
ImageItem res = item;
res.imageChecksums.clear();
res.image = QImage();
- QString filePath = scriptsDir + item.scriptName;
- QStringList script = scripts.value(item.scriptName);
+ QString filePath = scriptsDir + item.itemName;
+ QStringList script = scripts.value(item.itemName);
- if (item.engine == ImageItem::Raster) {
- QImage img(800, 800, item.renderFormat);
+ if (engine == Raster) {
+ QImage img(800, 800, format);
paint(&img, script, QFileInfo(filePath).absoluteFilePath()); // eh yuck (filePath stuff)
res.image = img;
res.imageChecksums.append(ImageItem::computeChecksum(img));
#ifndef QT_NO_OPENGL
- } else if (item.engine == ImageItem::OpenGL) {
+ } else if (engine == OpenGL) {
QGLWidget glWidget;
if (glWidget.isValid()) {
glWidget.makeCurrent();
@@ -281,7 +280,7 @@ ImageItem tst_Lancelot::render(const ImageItem &item)
fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
QGLFramebufferObject fbo(800, 800, fboFormat);
paint(&fbo, script, QFileInfo(filePath).absoluteFilePath()); // eh yuck (filePath stuff)
- res.image = fbo.toImage().convertToFormat(item.renderFormat);
+ res.image = fbo.toImage().convertToFormat(format);
res.imageChecksums.append(ImageItem::computeChecksum(res.image));
}
#endif
diff --git a/tests/auto/other.pro b/tests/auto/other.pro
index d1a7a86..512cd25 100644
--- a/tests/auto/other.pro
+++ b/tests/auto/other.pro
@@ -4,6 +4,7 @@
TEMPLATE=subdirs
SUBDIRS=\
# exceptionsafety_objects \ shouldn't enable it
+# baselineexample \ Just an example demonstrating qbaselinetest usage
lancelot \
qaccessibility \
qalgorithms \