summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp')
-rw-r--r--tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp249
1 files changed, 249 insertions, 0 deletions
diff --git a/tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp b/tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp
index c7158f4de..73c882619 100644
--- a/tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp
+++ b/tests/auto/render/qabstracttexture/tst_qabstracttexture.cpp
@@ -42,6 +42,17 @@
class FakeTexture : public Qt3DRender::QAbstractTexture
{
+public:
+ int sharedTextureId() const
+ {
+ return static_cast<Qt3DRender::QAbstractTexturePrivate *>(d_ptr.get())->m_sharedTextureId;
+ }
+
+ void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change) override
+ {
+ Qt3DRender::QAbstractTexture::sceneChangeEvent(change);
+ }
+
};
class FakeTextureImage : public Qt3DRender::QAbstractTextureImage
@@ -91,6 +102,10 @@ private Q_SLOTS:
QCOMPARE(abstractTexture.layers(), 1);
QCOMPARE(abstractTexture.samples(), 1);
QCOMPARE(abstractTexture.textureImages().size(), 0);
+ QCOMPARE(abstractTexture.samples(), 1);
+ QCOMPARE(abstractTexture.sharedTextureId(), -1);
+ QCOMPARE(abstractTexture.handleType(), Qt3DRender::QAbstractTexture::NoHandle);
+ QCOMPARE(abstractTexture.handle(), QVariant());
}
void checkPropertyChanges()
@@ -383,6 +398,7 @@ private Q_SLOTS:
QCOMPARE(abstractTexture.comparisonMode(), cloneData.comparisonMode);
QCOMPARE(abstractTexture.layers(), cloneData.layers);
QCOMPARE(abstractTexture.samples(), cloneData.samples);
+ QCOMPARE(abstractTexture.sharedTextureId(), cloneData.sharedTextureId);
QCOMPARE(abstractTexture.textureImages().size(), cloneData.textureImageIds.size());
for (int i = 0, m = abstractTexture.textureImages().size(); i < m; ++i)
@@ -425,6 +441,7 @@ private Q_SLOTS:
QCOMPARE(abstractTexture.comparisonMode(), cloneData.comparisonMode);
QCOMPARE(abstractTexture.layers(), cloneData.layers);
QCOMPARE(abstractTexture.samples(), cloneData.samples);
+ QCOMPARE(abstractTexture.sharedTextureId(), cloneData.sharedTextureId);
QCOMPARE(abstractTexture.textureImages().size(), cloneData.textureImageIds.size());
for (int i = 0, m = abstractTexture.textureImages().size(); i < m; ++i)
@@ -882,6 +899,238 @@ private Q_SLOTS:
}
}
+ void checkSceneChangedEvent()
+ {
+ // GIVEN
+ TestArbiter arbiter;
+ FakeTexture abstractTexture;
+ arbiter.setArbiterOnNode(&abstractTexture);
+
+ qRegisterMetaType<Qt3DRender::QAbstractTexture::Status>("Status");
+ qRegisterMetaType<Qt3DRender::QAbstractTexture::TextureFormat>("TextureFormat");
+ qRegisterMetaType<Qt3DRender::QAbstractTexture::HandleType>("HandleType");
+
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(widthChanged(int)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("width");
+ valueChange->setValue(883);
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.width(), 883);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.width(), 883);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(heightChanged(int)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("height");
+ valueChange->setValue(1584);
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.height(), 1584);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.height(), 1584);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(depthChanged(int)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("depth");
+ valueChange->setValue(8);
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.depth(), 8);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.depth(), 8);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(layersChanged(int)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("layers");
+ valueChange->setValue(256);
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.layers(), 256);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.layers(), 256);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(formatChanged(TextureFormat)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("format");
+ const auto newFormat = Qt3DRender::QAbstractTexture::R8I;
+ valueChange->setValue(QVariant::fromValue(newFormat));
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.format(), newFormat);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.format(), newFormat);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(statusChanged(Status)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("status");
+ const auto newStatus = Qt3DRender::QAbstractTexture::Error;
+ valueChange->setValue(QVariant::fromValue(newStatus));
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.status(), newStatus);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.status(), newStatus);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(handleTypeChanged(HandleType)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("handleType");
+ const auto newType = Qt3DRender::QAbstractTexture::OpenGLTextureId;
+ valueChange->setValue(QVariant::fromValue(newType));
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.handleType(), newType);
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.handleType(), newType);
+ }
+
+ {
+ QSignalSpy spy(&abstractTexture, SIGNAL(handleChanged(QVariant)));
+
+ // THEN
+ QVERIFY(spy.isValid());
+
+ // WHEN
+ Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
+ valueChange->setPropertyName("handle");
+ valueChange->setValue(QVariant(1));
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.handle(), QVariant(1));
+
+ // WHEN
+ spy.clear();
+ abstractTexture.sceneChangeEvent(valueChange);
+
+ // THEN
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(arbiter.events.size(), 0);
+ QCOMPARE(abstractTexture.handle(), QVariant(1));
+ }
+ }
+
};
QTEST_MAIN(tst_QAbstractTexture)