From 7dcc95fbf3cfacf7ca76679c15e63c6df6df3da1 Mon Sep 17 00:00:00 2001 From: Paul Lemire Date: Fri, 31 Jul 2015 07:57:52 +0200 Subject: QMaterial: unit test notifications on effect change Change-Id: I35cd64157be69ea50c76c2eab6354708a99448df Reviewed-by: Paul Lemire Reviewed-by: Sean Harmer --- tests/auto/render/qmaterial/tst_qmaterial.cpp | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'tests') 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 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(); + QCOMPARE(change->propertyName(), "effect"); + QCOMPARE(change->value().value(), effect.id()); + QCOMPARE(change->type(), Qt3D::NodeAdded); + + arbiter.events.clear(); + + // GIVEN + QScopedPointer 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(); + QCOMPARE(change->propertyName(), "effect"); + QCOMPARE(change->value().value(), oldEffect->id()); + QCOMPARE(change->type(), Qt3D::NodeRemoved); + + change = arbiter2.events.last().staticCast(); + QCOMPARE(change->propertyName(), "effect"); + QCOMPARE(change->value().value(), effect.id()); + QCOMPARE(change->type(), Qt3D::NodeAdded); + } void checkDynamicParametersAddedUpdates() { @@ -344,6 +385,7 @@ private Q_SLOTS: Qt3D::QScenePropertyChangePtr change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "parameter"); QCOMPARE(change->value().value(), param->id()); + QCOMPARE(change->type(), Qt3D::NodeAdded); arbiter.events.clear(); @@ -357,6 +399,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "parameter"); QCOMPARE(change->value().value(), param->id()); + QCOMPARE(change->type(), Qt3D::NodeAdded); arbiter.events.clear(); @@ -370,6 +413,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "parameter"); QCOMPARE(change->value().value(), param->id()); + QCOMPARE(change->type(), Qt3D::NodeAdded); arbiter.events.clear(); @@ -383,6 +427,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "parameter"); QCOMPARE(change->value().value(), param->id()); + QCOMPARE(change->type(), Qt3D::NodeAdded); arbiter.events.clear(); } @@ -403,6 +448,7 @@ private Q_SLOTS: Qt3D::QScenePropertyChangePtr change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "vertexShaderCode"); QCOMPARE(change->value().value(), vertexCode); + QCOMPARE(change->type(), Qt3D::NodeUpdated); arbiter.events.clear(); @@ -416,6 +462,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "fragmentShaderCode"); QCOMPARE(change->value().value(), fragmentCode); + QCOMPARE(change->type(), Qt3D::NodeUpdated); arbiter.events.clear(); @@ -429,6 +476,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "geometryShaderCode"); QCOMPARE(change->value().value(), geometryCode); + QCOMPARE(change->type(), Qt3D::NodeUpdated); arbiter.events.clear(); @@ -442,6 +490,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "computeShaderCode"); QCOMPARE(change->value().value(), computeCode); + QCOMPARE(change->type(), Qt3D::NodeUpdated); arbiter.events.clear(); @@ -455,6 +504,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "tessellationControlShaderCode"); QCOMPARE(change->value().value(), tesselControlCode); + QCOMPARE(change->type(), Qt3D::NodeUpdated); arbiter.events.clear(); @@ -468,6 +518,7 @@ private Q_SLOTS: change = arbiter.events.first().staticCast(); QCOMPARE(change->propertyName(), "tessellationEvaluationShaderCode"); QCOMPARE(change->value().value(), tesselEvalCode); + QCOMPARE(change->type(), Qt3D::NodeUpdated); arbiter.events.clear(); } -- cgit v1.2.3