summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-08-05 12:33:56 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-08-05 15:59:59 +0000
commit3f4b3d1a30da20f36101aa5505eafb90f3dd72c6 (patch)
tree4aa2876b7303b259bc9f4d51be97e385081abc60 /tests
parentd6fdc93bb085d64d1817b20f787e25b7bb911e5c (diff)
Fix graphics api filter compatibility test and add unit test
Also needed to properly specify namespace and class name for signal arguments so they are picked up in old style connections. Task-number: QTBUG-54711 Change-Id: Id752a3dd0703aa6bf02da4ec4252c6207fa60acb Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/qgraphicsapifilter/qgraphicsapifilter.pro13
-rw-r--r--tests/auto/render/qgraphicsapifilter/tst_qgraphicsapifilter.cpp220
-rw-r--r--tests/auto/render/render.pro3
3 files changed, 235 insertions, 1 deletions
diff --git a/tests/auto/render/qgraphicsapifilter/qgraphicsapifilter.pro b/tests/auto/render/qgraphicsapifilter/qgraphicsapifilter.pro
new file mode 100644
index 000000000..ce2d9ac12
--- /dev/null
+++ b/tests/auto/render/qgraphicsapifilter/qgraphicsapifilter.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+
+TARGET = tst_qgraphicsapifilter
+
+QT += 3dcore 3dcore-private 3drender 3drender-private testlib
+
+CONFIG += testcase
+
+SOURCES += \
+ tst_qgraphicsapifilter.cpp
+
+include(../../core/common/common.pri)
+include(../commons/commons.pri)
diff --git a/tests/auto/render/qgraphicsapifilter/tst_qgraphicsapifilter.cpp b/tests/auto/render/qgraphicsapifilter/tst_qgraphicsapifilter.cpp
new file mode 100644
index 000000000..00a55655b
--- /dev/null
+++ b/tests/auto/render/qgraphicsapifilter/tst_qgraphicsapifilter.cpp
@@ -0,0 +1,220 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
+** 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 <QObject>
+#include <Qt3DRender/qgraphicsapifilter.h>
+#include <QtGui/qopenglcontext.h>
+#include <QtCore/qsharedpointer.h>
+#include <QSignalSpy>
+
+class tst_QGraphicsApiFilter : public QObject
+{
+ Q_OBJECT
+private Q_SLOTS:
+ void defaultConstruction()
+ {
+ // WHEN
+ Qt3DRender::QGraphicsApiFilter apiFilter;
+
+ // THEN
+ const auto api = (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGL)
+ ? Qt3DRender::QGraphicsApiFilter::OpenGL
+ : Qt3DRender::QGraphicsApiFilter::OpenGLES;
+ QCOMPARE(apiFilter.api(), api);
+ QCOMPARE(apiFilter.profile(), Qt3DRender::QGraphicsApiFilter::NoProfile);
+ QCOMPARE(apiFilter.majorVersion(), 0);
+ QCOMPARE(apiFilter.minorVersion(), 0);
+ QCOMPARE(apiFilter.extensions(), QStringList());
+ QCOMPARE(apiFilter.vendor(), QString());
+ }
+
+ void properties()
+ {
+ // GIVEN
+ Qt3DRender::QGraphicsApiFilter apiFilter;
+
+ {
+ // WHEN
+ QSignalSpy spy(&apiFilter, SIGNAL(apiChanged(Qt3DRender::QGraphicsApiFilter::Api)));
+ apiFilter.setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+
+ // THEN
+ QCOMPARE(apiFilter.api(), Qt3DRender::QGraphicsApiFilter::OpenGL);
+ bool shouldEmitSignal = (QOpenGLContext::openGLModuleType() != QOpenGLContext::LibGL);
+ QCOMPARE(spy.isEmpty(), !shouldEmitSignal);
+ }
+
+ {
+ // WHEN
+ QSignalSpy spy(&apiFilter, SIGNAL(profileChanged(Qt3DRender::QGraphicsApiFilter::OpenGLProfile)));
+ apiFilter.setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+
+ // THEN
+ QCOMPARE(apiFilter.profile(), Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ QCOMPARE(spy.count(), 1);
+ }
+
+ {
+ // WHEN
+ QSignalSpy spy(&apiFilter, SIGNAL(majorVersionChanged(int)));
+ apiFilter.setMajorVersion(4);
+
+ // THEN
+ QCOMPARE(apiFilter.majorVersion(), 4);
+ QCOMPARE(spy.count(), 1);
+ }
+
+ {
+ // WHEN
+ QSignalSpy spy(&apiFilter, SIGNAL(minorVersionChanged(int)));
+ apiFilter.setMinorVersion(5);
+
+ // THEN
+ QCOMPARE(apiFilter.minorVersion(), 5);
+ QCOMPARE(spy.count(), 1);
+ }
+
+ {
+ // WHEN
+ QSignalSpy spy(&apiFilter, SIGNAL(extensionsChanged(QStringList)));
+ const auto extensions = (QStringList() << QLatin1String("extension1") << QLatin1String("extension2"));
+ apiFilter.setExtensions(extensions);
+
+ // THEN
+ QCOMPARE(apiFilter.extensions(), extensions);
+ QCOMPARE(spy.count(), 1);
+ }
+
+ {
+ // WHEN
+ QSignalSpy spy(&apiFilter, SIGNAL(vendorChanged(QString)));
+ const QLatin1String vendor("Triangles McTriangleFace");
+ apiFilter.setVendor(vendor);
+
+ // THEN
+ QCOMPARE(apiFilter.vendor(), vendor);
+ QCOMPARE(spy.count(), 1);
+ }
+ }
+
+ void shouldDetermineCompatibility_data()
+ {
+ QTest::addColumn<QSharedPointer<Qt3DRender::QGraphicsApiFilter>>("required");
+ QTest::addColumn<QSharedPointer<Qt3DRender::QGraphicsApiFilter>>("actual");
+ QTest::addColumn<bool>("expected");
+
+ auto required = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ required->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ required->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ required->setMajorVersion(4);
+ required->setMinorVersion(5);
+ auto actual = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ actual->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ actual->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ actual->setMajorVersion(4);
+ actual->setMinorVersion(5);
+ bool expected = true;
+ QTest::newRow("exact_match") << required << actual << expected;
+
+ required = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ required->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ required->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ required->setMajorVersion(3);
+ required->setMinorVersion(2);
+ actual = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ actual->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ actual->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ actual->setMajorVersion(4);
+ actual->setMinorVersion(5);
+ expected = true;
+ QTest::newRow("actual_is_higher_version") << required << actual << expected;
+
+ required = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ required->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ required->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ required->setMajorVersion(4);
+ required->setMinorVersion(5);
+ actual = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ actual->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ actual->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ actual->setMajorVersion(3);
+ actual->setMinorVersion(2);
+ expected = false;
+ QTest::newRow("actual_is_lower_version") << required << actual << expected;
+
+ required = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ required->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ required->setProfile(Qt3DRender::QGraphicsApiFilter::CompatibilityProfile);
+ required->setMajorVersion(4);
+ required->setMinorVersion(5);
+ actual = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ actual->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ actual->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ actual->setMajorVersion(4);
+ actual->setMinorVersion(5);
+ expected = false;
+ QTest::newRow("wrong_profile") << required << actual << expected;
+
+ required = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ required->setApi(Qt3DRender::QGraphicsApiFilter::OpenGL);
+ required->setProfile(Qt3DRender::QGraphicsApiFilter::CoreProfile);
+ required->setMajorVersion(3);
+ required->setMinorVersion(2);
+ actual = QSharedPointer<Qt3DRender::QGraphicsApiFilter>::create();
+ actual->setApi(Qt3DRender::QGraphicsApiFilter::OpenGLES);
+ actual->setProfile(Qt3DRender::QGraphicsApiFilter::NoProfile);
+ actual->setMajorVersion(3);
+ actual->setMinorVersion(2);
+ expected = false;
+ QTest::newRow("wrong_api") << required << actual << expected;
+ }
+
+ void shouldDetermineCompatibility()
+ {
+ // GIVEN
+ QFETCH(QSharedPointer<Qt3DRender::QGraphicsApiFilter>, required);
+ QFETCH(QSharedPointer<Qt3DRender::QGraphicsApiFilter>, actual);
+ QFETCH(bool, expected);
+
+ // WHEN
+ const auto isCompatible = (*actual == *required);
+
+ // THEN
+ QCOMPARE(isCompatible, expected);
+ }
+
+ // TODO: Add equality test in 5.8 when we can add new api to
+ // test for compatibility and properly use operator == to really
+ // test for equality.
+};
+
+
+QTEST_APPLESS_MAIN(tst_QGraphicsApiFilter)
+
+#include "tst_qgraphicsapifilter.moc"
diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro
index be5a39d2c..bfd2abe09 100644
--- a/tests/auto/render/render.pro
+++ b/tests/auto/render/render.pro
@@ -48,5 +48,6 @@ contains(QT_CONFIG, private_tests) {
shadercache \
layerfiltering \
filterentitybycomponent \
- genericlambdajob
+ genericlambdajob \
+ qgraphicsapifilter
}