diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/render/qgraphicsapifilter/qgraphicsapifilter.pro | 13 | ||||
-rw-r--r-- | tests/auto/render/qgraphicsapifilter/tst_qgraphicsapifilter.cpp | 220 | ||||
-rw-r--r-- | tests/auto/render/render.pro | 3 |
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 } |