summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/qmaterial/tst_qmaterial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/render/qmaterial/tst_qmaterial.cpp')
-rw-r--r--tests/auto/render/qmaterial/tst_qmaterial.cpp120
1 files changed, 30 insertions, 90 deletions
diff --git a/tests/auto/render/qmaterial/tst_qmaterial.cpp b/tests/auto/render/qmaterial/tst_qmaterial.cpp
index 994b11d43..50e2d9989 100644
--- a/tests/auto/render/qmaterial/tst_qmaterial.cpp
+++ b/tests/auto/render/qmaterial/tst_qmaterial.cpp
@@ -30,7 +30,6 @@
#include <Qt3DCore/private/qnode_p.h>
#include <Qt3DCore/private/qscene_p.h>
#include <Qt3DRender/private/qrenderstate_p.h>
-#include <Qt3DCore/private/qnodecreatedchangegenerator_p.h>
#include <Qt3DRender/QEffect>
#include <Qt3DRender/QMaterial>
@@ -47,7 +46,7 @@
#include <Qt3DRender/private/qmaterial_p.h>
-#include "testpostmanarbiter.h"
+#include "testarbiter.h"
class TestMaterial : public Qt3DRender::QMaterial
{
@@ -185,61 +184,6 @@ private:
private Q_SLOTS:
- void checkCloning_data()
- {
- QTest::addColumn<Qt3DRender::QMaterial *>("material");
-
- Qt3DRender::QMaterial *material = new Qt3DRender::QMaterial();
- QTest::newRow("empty material") << material;
- material = new TestMaterial();
- QTest::newRow("test material") << material;
- material = new Qt3DExtras::QPhongMaterial();
- QTest::newRow("QPhongMaterial") << material;
- material = new Qt3DExtras::QDiffuseMapMaterial();
- QTest::newRow("QDiffuseMapMaterial") << material;
- material = new Qt3DExtras::QDiffuseSpecularMapMaterial();
- QTest::newRow("QDiffuseMapSpecularMaterial") << material;
- material = new Qt3DExtras::QPerVertexColorMaterial();
- QTest::newRow("QPerVertexColorMaterial") << material;
- material = new Qt3DExtras::QNormalDiffuseMapMaterial();
- QTest::newRow("QNormalDiffuseMapMaterial") << material;
- material = new Qt3DExtras::QNormalDiffuseMapAlphaMaterial();
- QTest::newRow("QNormalDiffuseMapAlphaMaterial") << material;
- material = new Qt3DExtras::QNormalDiffuseSpecularMapMaterial();
- QTest::newRow("QNormalDiffuseSpecularMapMaterial") << material;
- }
-
- void checkCloning()
- {
- // GIVEN
- QFETCH(Qt3DRender::QMaterial *, material);
-
- // WHEN
- Qt3DCore::QNodeCreatedChangeGenerator creationChangeGenerator(material);
- QVector<Qt3DCore::QNodeCreatedChangeBasePtr> creationChanges = creationChangeGenerator.creationChanges();
-
- // THEN
- QVERIFY(creationChanges.size() >= 1);
-
- const Qt3DCore::QNodeCreatedChangePtr<Qt3DRender::QMaterialData> creationChangeData =
- qSharedPointerCast<Qt3DCore::QNodeCreatedChange<Qt3DRender::QMaterialData>>(creationChanges.first());
- const Qt3DRender::QMaterialData &cloneData = creationChangeData->data;
-
- // THEN
- QCOMPARE(material->id(), creationChangeData->subjectId());
- QCOMPARE(material->isEnabled(), creationChangeData->isNodeEnabled());
- QCOMPARE(material->metaObject(), creationChangeData->metaObject());
- QCOMPARE(material->effect() ? material->effect()->id() : Qt3DCore::QNodeId(), cloneData.effectId);
- QCOMPARE(material->parameters().size(), cloneData.parameterIds.size());
-
- for (int i = 0, m = material->parameters().size(); i < m; ++i)
- QCOMPARE(material->parameters().at(i)->id(), cloneData.parameterIds.at(i));
-
- // TO DO: Add unit tests for parameter and effect that do check this
- // compareParameters(material->parameters(), clone->parameters());
- // compareEffects(material->effect(), clone->effect());
- }
-
void checkEffectUpdate()
{
// GIVEN
@@ -252,10 +196,10 @@ private Q_SLOTS:
material->setEffect(&effect);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material.data());
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material.data());
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
// GIVEN
TestArbiter arbiter2;
@@ -266,10 +210,10 @@ private Q_SLOTS:
material2->setEffect(&effect);
// THEN
- QCOMPARE(arbiter2.dirtyNodes.size(), 1);
- QCOMPARE(arbiter2.dirtyNodes.front(), material2.data());
+ QCOMPARE(arbiter2.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter2.dirtyNodes().front(), material2.data());
- arbiter2.dirtyNodes.clear();
+ arbiter2.clear();
}
void checkDynamicParametersAddedUpdates()
@@ -281,7 +225,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// Clear events trigger by child generation of TestMnterial
- arbiter.events.clear();
+ arbiter.clear();
// WHEN (add parameter to material)
Qt3DRender::QParameter *param = new Qt3DRender::QParameter("testParamMaterial", QVariant::fromValue(383.0f));
@@ -292,8 +236,7 @@ private Q_SLOTS:
QCOMPARE(param->parent(), material);
// THEN
- QCOMPARE(arbiter.events.size(), 0);
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
QVERIFY(material->parameters().contains(param));
// WHEN (add parameter to effect)
@@ -302,8 +245,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 0);
- QCOMPARE(arbiter.dirtyNodes.size(), 2);
+ QCOMPARE(arbiter.dirtyNodes().size(), 2);
QVERIFY(material->effect()->parameters().contains(param));
// WHEN (add parameter to technique)
@@ -312,8 +254,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 0);
- QCOMPARE(arbiter.dirtyNodes.size(), 3);
+ QCOMPARE(arbiter.dirtyNodes().size(), 3);
QVERIFY(material->m_technique->parameters().contains(param));
@@ -323,8 +264,7 @@ private Q_SLOTS:
QCoreApplication::processEvents();
// THEN
- QCOMPARE(arbiter.events.size(), 0);
- QCOMPARE(arbiter.dirtyNodes.size(), 4);
+ QCOMPARE(arbiter.dirtyNodes().size(), 4);
QVERIFY(material->m_renderPass->parameters().contains(param));
}
@@ -340,59 +280,59 @@ private Q_SLOTS:
material->m_shaderProgram->setVertexShaderCode(vertexCode);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material->m_shaderProgram);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material->m_shaderProgram);
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
// WHEN
const QByteArray fragmentCode = QByteArrayLiteral("new fragment shader code");
material->m_shaderProgram->setFragmentShaderCode(fragmentCode);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material->m_shaderProgram);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material->m_shaderProgram);
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
// WHEN
const QByteArray geometryCode = QByteArrayLiteral("new geometry shader code");
material->m_shaderProgram->setGeometryShaderCode(geometryCode);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material->m_shaderProgram);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material->m_shaderProgram);
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
// WHEN
const QByteArray computeCode = QByteArrayLiteral("new compute shader code");
material->m_shaderProgram->setComputeShaderCode(computeCode);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material->m_shaderProgram);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material->m_shaderProgram);
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
// WHEN
const QByteArray tesselControlCode = QByteArrayLiteral("new tessellation control shader code");
material->m_shaderProgram->setTessellationControlShaderCode(tesselControlCode);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material->m_shaderProgram);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material->m_shaderProgram);
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
// WHEN
const QByteArray tesselEvalCode = QByteArrayLiteral("new tessellation eval shader code");
material->m_shaderProgram->setTessellationEvaluationShaderCode(tesselEvalCode);
// THEN
- QCOMPARE(arbiter.dirtyNodes.size(), 1);
- QCOMPARE(arbiter.dirtyNodes.front(), material->m_shaderProgram);
+ QCOMPARE(arbiter.dirtyNodes().size(), 1);
+ QCOMPARE(arbiter.dirtyNodes().front(), material->m_shaderProgram);
- arbiter.dirtyNodes.clear();
+ arbiter.clear();
}
void checkEffectBookkeeping()