summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/qmaterial
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-06-02 07:24:42 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-06-29 09:20:46 +0000
commitc5d7df13132ad714dfaf62fa983cbfe67e3930d1 (patch)
treeb1eec3045a418a01fe829169d6711321e6e81c31 /tests/auto/render/qmaterial
parente3bbc117308f11e33641e408af24b3fcf4a7071e (diff)
tst_QMaterial: add bookkeeping tests for effect and parameters
Change-Id: I5b9e8b736dd68fd3a5a81db53171e94d78666f22 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render/qmaterial')
-rw-r--r--tests/auto/render/qmaterial/tst_qmaterial.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/auto/render/qmaterial/tst_qmaterial.cpp b/tests/auto/render/qmaterial/tst_qmaterial.cpp
index 2dfe6637c..dc6fe7789 100644
--- a/tests/auto/render/qmaterial/tst_qmaterial.cpp
+++ b/tests/auto/render/qmaterial/tst_qmaterial.cpp
@@ -452,6 +452,74 @@ private Q_SLOTS:
arbiter.events.clear();
}
+
+ void checkEffectBookkeeping()
+ {
+ // GIVEN
+ QScopedPointer<Qt3DRender::QMaterial> material(new Qt3DRender::QMaterial);
+ {
+ // WHEN
+ Qt3DRender::QEffect effect;
+ material->setEffect(&effect);
+
+ // THEN
+ QCOMPARE(effect.parent(), material.data());
+ QCOMPARE(material->effect(), &effect);
+ }
+ // THEN (Should not crash and effect be unset)
+ QVERIFY(material->effect() == nullptr);
+
+ {
+ // WHEN
+ Qt3DRender::QMaterial someOtherMaterial;
+ QScopedPointer<Qt3DRender::QEffect> effect(new Qt3DRender::QEffect(&someOtherMaterial));
+ material->setEffect(effect.data());
+
+ // THEN
+ QCOMPARE(effect->parent(), &someOtherMaterial);
+ QCOMPARE(material->effect(), effect.data());
+
+ // WHEN
+ material.reset();
+ effect.reset();
+
+ // THEN Should not crash when the effect is destroyed (tests for failed removal of destruction helper)
+ }
+ }
+
+ void checkParametersBookkeeping()
+ {
+ // GIVEN
+ QScopedPointer<Qt3DRender::QMaterial> material(new Qt3DRender::QMaterial);
+ {
+ // WHEN
+ Qt3DRender::QParameter param;
+ material->addParameter(&param);
+
+ // THEN
+ QCOMPARE(param.parent(), material.data());
+ QCOMPARE(material->parameters().size(), 1);
+ }
+ // THEN (Should not crash and parameter be unset)
+ QVERIFY(material->parameters().empty());
+
+ {
+ // WHEN
+ Qt3DRender::QMaterial someOtherMaterial;
+ QScopedPointer<Qt3DRender::QParameter> param(new Qt3DRender::QParameter(&someOtherMaterial));
+ material->addParameter(param.data());
+
+ // THEN
+ QCOMPARE(param->parent(), &someOtherMaterial);
+ QCOMPARE(material->parameters().size(), 1);
+
+ // WHEN
+ material.reset();
+ param.reset();
+
+ // THEN Should not crash when the parameter is destroyed (tests for failed removal of destruction helper)
+ }
+ }
};
QTEST_MAIN(tst_QMaterial)