summaryrefslogtreecommitdiffstats
path: root/tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp')
-rw-r--r--tests/auto/animation/lerpclipblend/tst_lerpclipblend.cpp62
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)