summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-07-31 07:57:52 +0200
committerSean Harmer <sean.harmer@kdab.com>2015-08-07 00:11:40 +0000
commit7dcc95fbf3cfacf7ca76679c15e63c6df6df3da1 (patch)
treea3752aebbd7fb81df67b9dc736fe3af8e6e7344c /tests
parent2fef951c8725ddb8cb0d5556a608a11559c4e7a4 (diff)
QMaterial: unit test notifications on effect change
Change-Id: I35cd64157be69ea50c76c2eab6354708a99448df Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/qmaterial/tst_qmaterial.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/auto/render/qmaterial/tst_qmaterial.cpp b/tests/auto/render/qmaterial/tst_qmaterial.cpp
index 7ab4f8a40..682a73d2f 100644
--- a/tests/auto/render/qmaterial/tst_qmaterial.cpp
+++ b/tests/auto/render/qmaterial/tst_qmaterial.cpp
@@ -327,6 +327,47 @@ private Q_SLOTS:
compareEffects(material->effect(), clone->effect());
}
+ void checkEffectUpdate()
+ {
+ // GIVEN
+ QScopedPointer<Qt3D::QMaterial> material(new Qt3D::QMaterial());
+ TestArbiter arbiter(material.data());
+
+ // WHEN
+ Qt3D::QEffect effect;
+ material->setEffect(&effect);
+ QCoreApplication::processEvents();
+
+ // THEN
+ QCOMPARE(arbiter.events.size(), 1);
+ Qt3D::QScenePropertyChangePtr change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
+ QCOMPARE(change->propertyName(), "effect");
+ QCOMPARE(change->value().value<Qt3D::QNodeId>(), effect.id());
+ QCOMPARE(change->type(), Qt3D::NodeAdded);
+
+ arbiter.events.clear();
+
+ // GIVEN
+ QScopedPointer<TestMaterial> material2(new TestMaterial());
+ TestArbiter arbiter2(material2.data());
+
+ // WHEN
+ Qt3D::QEffect *oldEffect = material2->effect();
+ material2->setEffect(&effect);
+ QCoreApplication::processEvents();
+
+ // THEN
+ QCOMPARE(arbiter2.events.size(), 2);
+ change = arbiter2.events.first().staticCast<Qt3D::QScenePropertyChange>();
+ QCOMPARE(change->propertyName(), "effect");
+ QCOMPARE(change->value().value<Qt3D::QNodeId>(), oldEffect->id());
+ QCOMPARE(change->type(), Qt3D::NodeRemoved);
+
+ change = arbiter2.events.last().staticCast<Qt3D::QScenePropertyChange>();
+ QCOMPARE(change->propertyName(), "effect");
+ QCOMPARE(change->value().value<Qt3D::QNodeId>(), effect.id());
+ QCOMPARE(change->type(), Qt3D::NodeAdded);
+ }
void checkDynamicParametersAddedUpdates()
{
@@ -344,6 +385,7 @@ private Q_SLOTS:
Qt3D::QScenePropertyChangePtr change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "parameter");
QCOMPARE(change->value().value<Qt3D::QNodeId>(), param->id());
+ QCOMPARE(change->type(), Qt3D::NodeAdded);
arbiter.events.clear();
@@ -357,6 +399,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "parameter");
QCOMPARE(change->value().value<Qt3D::QNodeId>(), param->id());
+ QCOMPARE(change->type(), Qt3D::NodeAdded);
arbiter.events.clear();
@@ -370,6 +413,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "parameter");
QCOMPARE(change->value().value<Qt3D::QNodeId>(), param->id());
+ QCOMPARE(change->type(), Qt3D::NodeAdded);
arbiter.events.clear();
@@ -383,6 +427,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "parameter");
QCOMPARE(change->value().value<Qt3D::QNodeId>(), param->id());
+ QCOMPARE(change->type(), Qt3D::NodeAdded);
arbiter.events.clear();
}
@@ -403,6 +448,7 @@ private Q_SLOTS:
Qt3D::QScenePropertyChangePtr change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "vertexShaderCode");
QCOMPARE(change->value().value<QByteArray>(), vertexCode);
+ QCOMPARE(change->type(), Qt3D::NodeUpdated);
arbiter.events.clear();
@@ -416,6 +462,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "fragmentShaderCode");
QCOMPARE(change->value().value<QByteArray>(), fragmentCode);
+ QCOMPARE(change->type(), Qt3D::NodeUpdated);
arbiter.events.clear();
@@ -429,6 +476,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "geometryShaderCode");
QCOMPARE(change->value().value<QByteArray>(), geometryCode);
+ QCOMPARE(change->type(), Qt3D::NodeUpdated);
arbiter.events.clear();
@@ -442,6 +490,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "computeShaderCode");
QCOMPARE(change->value().value<QByteArray>(), computeCode);
+ QCOMPARE(change->type(), Qt3D::NodeUpdated);
arbiter.events.clear();
@@ -455,6 +504,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "tessellationControlShaderCode");
QCOMPARE(change->value().value<QByteArray>(), tesselControlCode);
+ QCOMPARE(change->type(), Qt3D::NodeUpdated);
arbiter.events.clear();
@@ -468,6 +518,7 @@ private Q_SLOTS:
change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>();
QCOMPARE(change->propertyName(), "tessellationEvaluationShaderCode");
QCOMPARE(change->value().value<QByteArray>(), tesselEvalCode);
+ QCOMPARE(change->type(), Qt3D::NodeUpdated);
arbiter.events.clear();
}