summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/animation/animationutils/animationutils.qrc1
-rw-r--r--tests/auto/animation/animationutils/clip4.json65
-rw-r--r--tests/auto/animation/animationutils/tst_animationutils.cpp57
-rw-r--r--tests/auto/quick3d/quick3dnodeinstantiator/data/createNested.qml15
-rw-r--r--tests/auto/quick3d/quick3dnodeinstantiator/quick3dnodeinstantiator.pro1
-rw-r--r--tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp29
6 files changed, 165 insertions, 3 deletions
diff --git a/tests/auto/animation/animationutils/animationutils.qrc b/tests/auto/animation/animationutils/animationutils.qrc
index bbcd96524..ddaeab7f1 100644
--- a/tests/auto/animation/animationutils/animationutils.qrc
+++ b/tests/auto/animation/animationutils/animationutils.qrc
@@ -3,5 +3,6 @@
<file>clip1.json</file>
<file>clip2.json</file>
<file>clip3.json</file>
+ <file>clip4.json</file>
</qresource>
</RCC>
diff --git a/tests/auto/animation/animationutils/clip4.json b/tests/auto/animation/animationutils/clip4.json
new file mode 100644
index 000000000..0915294cd
--- /dev/null
+++ b/tests/auto/animation/animationutils/clip4.json
@@ -0,0 +1,65 @@
+{
+ "animations": [
+ {
+ "animationName": "LinearTranslation",
+ "channels": [
+ {
+ "channelComponents": [
+ {
+ "channelComponentName": "Location X",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 5.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Location Y",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ -2.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Location Z",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 6.0
+ ]
+ }
+ ]
+ }
+ ],
+ "channelName": "Location"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tests/auto/animation/animationutils/tst_animationutils.cpp b/tests/auto/animation/animationutils/tst_animationutils.cpp
index a70fd271c..4c97cf7e5 100644
--- a/tests/auto/animation/animationutils/tst_animationutils.cpp
+++ b/tests/auto/animation/animationutils/tst_animationutils.cpp
@@ -42,6 +42,7 @@
#include <QtGui/qvector3d.h>
#include <QtGui/qvector4d.h>
#include <QtGui/qquaternion.h>
+#include <QtGui/qcolor.h>
#include <qbackendnodetester.h>
#include <testpostmanarbiter.h>
@@ -1000,7 +1001,7 @@ private Q_SLOTS:
MappingData mapping;
mapping.targetId = Qt3DCore::QNodeId::createId();
mapping.propertyName = "foo";
- mapping.type = static_cast<int>(QVariant::Vector2D);
+ mapping.type = static_cast<int>(QVariant::Vector4D);
mapping.channelIndices = QVector<int>() << 0 << 1 << 2 << 3;
mappingData.push_back(mapping);
channelResults = QVector<float>() << 4.0f << 3.0f << 2.0f << 1.0f;
@@ -1036,7 +1037,7 @@ private Q_SLOTS:
auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(mapping.targetId);
change->setDeliveryFlags(Qt3DCore::QSceneChange::DeliverToAll);
change->setPropertyName(mapping.propertyName);
- change->setValue(QVariant::fromValue(QQuaternion(1.0f, 0.0f, 0.0f, 1.0f)));
+ change->setValue(QVariant::fromValue(QQuaternion(1.0f, 0.0f, 0.0f, 1.0f).normalized()));
expectedChanges.push_back(change);
QTest::newRow("quaternion rotation")
@@ -1047,6 +1048,34 @@ private Q_SLOTS:
channelResults.clear();
expectedChanges.clear();
}
+
+ // Single property, QColor
+ {
+ animatorId = Qt3DCore::QNodeId::createId();
+ MappingData mapping;
+ mapping.targetId = Qt3DCore::QNodeId::createId();
+ mapping.propertyName = "color";
+ mapping.type = static_cast<int>(QVariant::Color);
+ mapping.channelIndices = QVector<int>() << 0 << 1 << 2;
+ mappingData.push_back(mapping);
+ channelResults = QVector<float>() << 0.5f << 0.4f << 0.3f;
+ finalFrame = false;
+
+ auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(mapping.targetId);
+ change->setDeliveryFlags(Qt3DCore::QSceneChange::DeliverToAll);
+ change->setPropertyName(mapping.propertyName);
+ change->setValue(QVariant::fromValue(QColor::fromRgbF(0.5f, 0.4f, 0.3f)));
+ expectedChanges.push_back(change);
+
+ QTest::newRow("QColor color")
+ << animatorId << mappingData << channelResults << finalFrame
+ << expectedChanges;
+
+ mappingData.clear();
+ channelResults.clear();
+ expectedChanges.clear();
+ }
+
}
void checkPreparePropertyChanges()
@@ -1067,7 +1096,7 @@ private Q_SLOTS:
for (int i = 0; i < actualChanges.size(); ++i) {
auto expectedChange = expectedChanges[i];
auto actualChange
- = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(expectedChanges[i]);
+ = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(actualChanges[i]);
QCOMPARE(actualChange->subjectId(), expectedChange->subjectId());
QCOMPARE(actualChange->deliveryFlags(), expectedChange->deliveryFlags());
@@ -1157,6 +1186,28 @@ private Q_SLOTS:
<< handler << clip << localTime << expectedResults;
expectedResults.clear();
}
+ {
+ // a clip with linear interpolation
+ handler = new Handler();
+ clip = createAnimationClipLoader(handler, QUrl("qrc:/clip4.json"));
+ localTime = clip->duration();
+ expectedResults = QVector<float>() << 5.0 << -2.0f << 6.0f;
+
+ QTest::newRow("clip4.json, linear, t = duration")
+ << handler << clip << localTime << expectedResults;
+ expectedResults.clear();
+ }
+ {
+ // a clip with linear interpolation
+ handler = new Handler();
+ clip = createAnimationClipLoader(handler, QUrl("qrc:/clip4.json"));
+ localTime = clip->duration() / 2.0f;
+ expectedResults = QVector<float>() << 2.5f << -1.0f << 3.0f;
+
+ QTest::newRow("clip4.json, linear, t = duration/2")
+ << handler << clip << localTime << expectedResults;
+ expectedResults.clear();
+ }
}
void checkEvaluateClipAtLocalTime()
diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/createNested.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/createNested.qml
new file mode 100644
index 000000000..55be54297
--- /dev/null
+++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/createNested.qml
@@ -0,0 +1,15 @@
+import QtQml 2.1
+import Qt3D.Core 2.0
+
+Entity {
+ NodeInstantiator {
+ model: 3
+ delegate: NodeInstantiator {
+ model: 4
+ delegate: Entity {
+ property bool success: true
+ property int idx: index
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/quick3dnodeinstantiator.pro b/tests/auto/quick3d/quick3dnodeinstantiator/quick3dnodeinstantiator.pro
index 15435d13e..9026f91ff 100644
--- a/tests/auto/quick3d/quick3dnodeinstantiator/quick3dnodeinstantiator.pro
+++ b/tests/auto/quick3d/quick3dnodeinstantiator/quick3dnodeinstantiator.pro
@@ -12,6 +12,7 @@ OTHER_FILES = \
data/createMultiple.qml \
data/createNone.qml \
data/createSingle.qml \
+ data/createNested.qml \
data/inactive.qml \
data/stringModel.qml
diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp b/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp
index acaba6690..d4d0d56e2 100644
--- a/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp
+++ b/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp
@@ -50,6 +50,7 @@ private slots:
void createNone();
void createSingle();
void createMultiple();
+ void createNested();
void stringModel();
void activeProperty();
void intModelChange();
@@ -109,6 +110,34 @@ void tst_quick3dnodeinstantiator::createMultiple()
}
}
+void tst_quick3dnodeinstantiator::createNested()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("createNested.qml"));
+ const auto root = qobject_cast<Qt3DCore::QNode*>(component.create());
+ QVERIFY(root != 0);
+
+ auto instantiators = root->findChildren<Quick3DNodeInstantiator*>();
+ QCOMPARE(instantiators.count(), 4);
+
+ const auto outerInstantiator = instantiators.takeFirst();
+ QCOMPARE(outerInstantiator->isActive(), true);
+ QCOMPARE(outerInstantiator->count(), 3);
+
+ for (const auto instantiator : instantiators) {
+ QCOMPARE(instantiator->isActive(), true);
+ QCOMPARE(instantiator->count(), 4);
+
+ for (int i = 0; i < 4; i++) {
+ auto object = instantiator->objectAt(i);
+ QVERIFY(object);
+ QCOMPARE(object->parent(), root);
+ QCOMPARE(object->property("success").toBool(), true);
+ QCOMPARE(object->property("idx").toInt(), i);
+ }
+ }
+}
+
void tst_quick3dnodeinstantiator::stringModel()
{
QQmlEngine engine;