summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/qgeometry
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-06-02 07:35:40 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-06-29 09:20:54 +0000
commitf5c7d9fd88ce5d1d8f627034b04959136504f760 (patch)
tree8c1517c649136ac489fc4abe58ade07b76a83482 /tests/auto/render/qgeometry
parentf2c8e786d49f931a11eada68619a47edb499ec5d (diff)
tst_QGeometry: add tests for attribute bookkeeping
Change-Id: I9a975e3714a149a9656a093dd16348522b777b0c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render/qgeometry')
-rw-r--r--tests/auto/render/qgeometry/tst_qgeometry.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/render/qgeometry/tst_qgeometry.cpp b/tests/auto/render/qgeometry/tst_qgeometry.cpp
index d07b410ee..b9271a8c0 100644
--- a/tests/auto/render/qgeometry/tst_qgeometry.cpp
+++ b/tests/auto/render/qgeometry/tst_qgeometry.cpp
@@ -146,6 +146,40 @@ private Q_SLOTS:
arbiter.events.clear();
}
+
+ void checkAttributeBookkeeping()
+ {
+ // GIVEN
+ QScopedPointer<Qt3DRender::QGeometry> geometry(new Qt3DRender::QGeometry);
+ {
+ // WHEN
+ Qt3DRender::QAttribute attribute;
+ geometry->addAttribute(&attribute);
+
+ // THEN
+ QCOMPARE(attribute.parent(), geometry.data());
+ QCOMPARE(geometry->attributes().size(), 1);
+ }
+ // THEN (Should not crash and parameter be unset)
+ QVERIFY(geometry->attributes().isEmpty());
+
+ {
+ // WHEN
+ Qt3DRender::QGeometry someOtherGeometry;
+ QScopedPointer<Qt3DRender::QAttribute> attribute(new Qt3DRender::QAttribute(&someOtherGeometry));
+ geometry->addAttribute(attribute.data());
+
+ // THEN
+ QCOMPARE(attribute->parent(), &someOtherGeometry);
+ QCOMPARE(geometry->attributes().size(), 1);
+
+ // WHEN
+ geometry.reset();
+ attribute.reset();
+
+ // THEN Should not crash when the attribute is destroyed (tests for failed removal of destruction helper)
+ }
+ }
};
QTEST_MAIN(tst_QGeometry)