diff options
author | Antti Määttä <antti.maatta@qt.io> | 2016-08-12 15:39:03 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2016-08-30 05:21:57 +0000 |
commit | 663f26e1c16cb1794410281f54156424f67603ae (patch) | |
tree | 09c04524e0070818e83480b8d30d744ad3ceed1d | |
parent | ab8ecac7f2045bea6ac396583c6c484d522a068b (diff) |
Add unit tests for QRenderCapture frontend node
Unit tests for the frontend node.
Change-Id: I5cb97533da655771155815782e68d8ce2ff463aa
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
-rw-r--r-- | tests/auto/render/qrendercapture/qrendercapture.pro | 11 | ||||
-rw-r--r-- | tests/auto/render/qrendercapture/tst_qrendercapture.cpp | 113 | ||||
-rw-r--r-- | tests/auto/render/render.pro | 3 |
3 files changed, 126 insertions, 1 deletions
diff --git a/tests/auto/render/qrendercapture/qrendercapture.pro b/tests/auto/render/qrendercapture/qrendercapture.pro new file mode 100644 index 000000000..999f95a58 --- /dev/null +++ b/tests/auto/render/qrendercapture/qrendercapture.pro @@ -0,0 +1,11 @@ +TEMPLATE = app + +TARGET = tst_qrendercapture + +QT += core-private 3dcore 3dcore-private 3drender 3drender-private testlib + +CONFIG += testcase + +SOURCES += tst_qrendercapture.cpp + +include(../commons/commons.pri) diff --git a/tests/auto/render/qrendercapture/tst_qrendercapture.cpp b/tests/auto/render/qrendercapture/tst_qrendercapture.cpp new file mode 100644 index 000000000..ef1e9f53c --- /dev/null +++ b/tests/auto/render/qrendercapture/tst_qrendercapture.cpp @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** 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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include <QtTest/QTest> +#include <QtTest/QSignalSpy> +#include <Qt3DCore/private/qnode_p.h> +#include <Qt3DCore/private/qscene_p.h> +#include <Qt3DRender/QRenderCapture> +#include <Qt3DRender/private/qrendercapture_p.h> + +#include "testpostmanarbiter.h" + +class MyRenderCapture : public Qt3DRender::QRenderCapture +{ + Q_OBJECT +public: + MyRenderCapture(Qt3DCore::QNode *parent = nullptr) + : Qt3DRender::QRenderCapture(parent) + {} + + void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change) Q_DECL_FINAL + { + Qt3DRender::QRenderCapture::sceneChangeEvent(change); + } + +private: + friend class tst_QRenderCapture; +}; + +class tst_QRenderCapture : public Qt3DCore::QNode +{ + Q_OBJECT + +private Q_SLOTS: + + void checkCaptureRequest() + { + // GIVEN + TestArbiter arbiter; + QScopedPointer<Qt3DRender::QRenderCapture> renderCapture(new Qt3DRender::QRenderCapture()); + arbiter.setArbiterOnNode(renderCapture.data()); + + // WHEN + QScopedPointer<Qt3DRender::QRenderCaptureReply> reply(renderCapture->requestCapture(12)); + + // THEN + QCOMPARE(arbiter.events.size(), 1); + Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>(); + QCOMPARE(change->propertyName(), "renderCaptureRequest"); + QCOMPARE(change->subjectId(),renderCapture->id()); + QCOMPARE(change->type(), Qt3DCore::PropertyUpdated); + QCOMPARE(change->value().toInt(), 12); + + arbiter.events.clear(); + } + + void checkRenderCaptureReply() + { + // GIVEN + QScopedPointer<MyRenderCapture> renderCapture(new MyRenderCapture()); + QScopedPointer<Qt3DRender::QRenderCaptureReply> reply(renderCapture->requestCapture(52)); + QImage img = QImage(20, 20, QImage::Format_ARGB32); + + // WHEN + Qt3DRender::RenderCaptureDataPtr data = Qt3DRender::RenderCaptureDataPtr::create(); + data.data()->captureId = 52; + data.data()->image = img; + + auto e = Qt3DCore::QPropertyUpdatedChangePtr::create(renderCapture->id()); + e->setDeliveryFlags(Qt3DCore::QSceneChange::DeliverToAll); + e->setPropertyName("renderCaptureData"); + e->setValue(QVariant::fromValue(data)); + + renderCapture->sceneChangeEvent(e); + + // THEN + QCOMPARE(reply->isComplete(), true); + QCOMPARE(reply->captureId(), 52); + QCOMPARE(reply->image().width(), 20); + QCOMPARE(reply->image().height(), 20); + QCOMPARE(reply->image().format(), QImage::Format_ARGB32); + } +}; + +QTEST_MAIN(tst_QRenderCapture) + +#include "tst_qrendercapture.moc" diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro index 36eda8afb..95cf94d2f 100644 --- a/tests/auto/render/render.pro +++ b/tests/auto/render/render.pro @@ -57,5 +57,6 @@ qtConfig(private_tests) { qsceneloader \ qrendertargetoutput \ qcameralens \ - qcomputecommand + qcomputecommand \ + qrendercapture } |