diff options
Diffstat (limited to 'tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp')
-rw-r--r-- | tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp b/tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp index 34c52ff53..6dac3c8d9 100644 --- a/tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp +++ b/tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp @@ -37,9 +37,45 @@ using namespace Qt3DAnimation::Animation; +namespace { + +class TestClipBlendNode : public ClipBlendNode +{ +public: + TestClipBlendNode(double duration) + : ClipBlendNode(ClipBlendNode::LerpBlendType) + , m_duration(duration) + {} + + float blend(float, float) const Q_DECL_FINAL { return 0.0f; } + + QVector<Qt3DCore::QNodeId> dependencyIds() const Q_DECL_FINAL + { + return QVector<Qt3DCore::QNodeId>(); + } + + using ClipBlendNode::setClipResults; + + double duration() const Q_DECL_FINAL { return m_duration; } + + double m_duration; +}; + +} // anonymous + class tst_LerpClipBlend : public Qt3DCore::QBackendNodeTester { Q_OBJECT +public: + TestClipBlendNode *createTestBlendNode(Handler *handler, + double duration) + { + auto id = Qt3DCore::QNodeId::createId(); + TestClipBlendNode *node = new TestClipBlendNode(duration); + setPeerId(node, id); + handler->clipBlendNodeManager()->appendNode(id, node); + return node; + } private Q_SLOTS: @@ -171,6 +207,32 @@ private Q_SLOTS: QCOMPARE(actualIds[0], startClipId); QCOMPARE(actualIds[1], anotherEndClipId); } + + void checkDuration() + { + // GIVEN + auto handler = new Handler(); + const double startNodeDuration = 10.0; + const double endNodeDuration = 20.0; + const float blendFactor = 0.25f; + const double expectedDuration = 12.5; + + auto startNode = createTestBlendNode(handler, startNodeDuration); + auto endNode = createTestBlendNode(handler, endNodeDuration); + + LerpClipBlend blendNode; + blendNode.setHandler(handler); + blendNode.setClipBlendNodeManager(handler->clipBlendNodeManager()); + blendNode.setStartClipId(startNode->peerId()); + blendNode.setEndClipId(endNode->peerId()); + blendNode.setBlendFactor(blendFactor); + + // WHEN + double actualDuration = blendNode.duration(); + + // THEN + QCOMPARE(actualDuration, expectedDuration); + } }; QTEST_MAIN(tst_LerpClipBlend) |