diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-06-02 07:35:40 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-06-29 09:20:54 +0000 |
commit | f5c7d9fd88ce5d1d8f627034b04959136504f760 (patch) | |
tree | 8c1517c649136ac489fc4abe58ade07b76a83482 /tests/auto/render/qgeometry | |
parent | f2c8e786d49f931a11eada68619a47edb499ec5d (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.cpp | 34 |
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) |