aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/snippets/tst_snippets.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-06-09 18:20:52 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-06-27 08:41:16 +0000
commitbe1f6327428ff746d2a4e903c1223d2664f16759 (patch)
treec876c836e0eb6f8d982d0490071cb1ee1db43957 /tests/auto/snippets/tst_snippets.cpp
parent6ee9612bdcbe6c59cf9b3a0381f03943f5350b67 (diff)
Add tst_snippets
This is going to include all snippets used in the documentation, which will be then automatically tested for vality, and at the same time the respective screenshots are automatically generated. Notice that copying the screenshots over to src/doc/images is still a manual step. This is fully intentional because the screenshot results may vary quite a bit across different platforms due to different fonts and so on. FWIW, my personal favorite for generating the screenshots is OS X. Change-Id: I72b299f15b498abc1afd0a686c56d43159bee775 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'tests/auto/snippets/tst_snippets.cpp')
-rw-r--r--tests/auto/snippets/tst_snippets.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/auto/snippets/tst_snippets.cpp b/tests/auto/snippets/tst_snippets.cpp
new file mode 100644
index 00000000..b07e10b0
--- /dev/null
+++ b/tests/auto/snippets/tst_snippets.cpp
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** 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 The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/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 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later 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 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest>
+#include <QtQuick>
+
+typedef QPair<QString, QString> QStringPair;
+
+class tst_Snippets : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase();
+
+ void screenshots();
+ void screenshots_data();
+
+private:
+ QQuickView view;
+ QMap<QString, QStringPair> filePaths;
+};
+
+void tst_Snippets::initTestCase()
+{
+ QDir outdir(QDir::current().filePath("screenshots"));
+ QVERIFY(outdir.exists() || QDir::current().mkpath("screenshots"));
+
+ QString datadir = QFINDTESTDATA("data");
+ QVERIFY(!datadir.isEmpty());
+
+ qInfo() << datadir;
+
+ QDirIterator it(datadir, QStringList() << "*.qml", QDir::Files | QDir::Readable, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ QFileInfo fi(it.next());
+ filePaths.insert(fi.baseName(), qMakePair(fi.filePath(), outdir.filePath(fi.baseName() + ".png")));
+ }
+ QVERIFY(!filePaths.isEmpty());
+}
+
+void tst_Snippets::screenshots()
+{
+ QFETCH(QString, input);
+ QFETCH(QString, output);
+
+ view.setSource(QUrl::fromLocalFile(input));
+ QVERIFY(view.rootObject());
+
+ view.show();
+ view.requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(&view));
+
+ QSharedPointer<QQuickItemGrabResult> result = view.rootObject()->grabToImage();
+ QSignalSpy spy(result.data(), SIGNAL(ready()));
+ QVERIFY(spy.isValid());
+ QVERIFY(spy.wait());
+ QVERIFY(result->saveToFile(output));
+}
+
+void tst_Snippets::screenshots_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QString>("output");
+
+ QMap<QString, QStringPair>::const_iterator it;
+ for (it = filePaths.begin(); it != filePaths.end(); ++it)
+ QTest::newRow(qPrintable(it.key())) << it.value().first << it.value().second;
+}
+
+QTEST_MAIN(tst_Snippets)
+
+#include "tst_snippets.moc"