summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-10-30 15:13:18 +0100
committerPaul Lemire <paul.lemire@kdab.com>2019-10-30 15:25:38 +0100
commitdb9f0721c4406843766aab66d1cae170e76a237d (patch)
treeed737b1fb0f95e58244ef22f41210dac9e17cf1d /tests
parente5b5505569b409798e382d60b71fbf436952bab9 (diff)
Buffer: make sure we force allocate before doing partial updates
Change-Id: I229f9bcd21a10c0a4cff5c4f559cd285a3e50276 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/buffer/tst_buffer.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/auto/render/buffer/tst_buffer.cpp b/tests/auto/render/buffer/tst_buffer.cpp
index 1b53efd33..fa1491914 100644
--- a/tests/auto/render/buffer/tst_buffer.cpp
+++ b/tests/auto/render/buffer/tst_buffer.cpp
@@ -157,6 +157,61 @@ private Q_SLOTS:
QVERIFY(backendBuffer.pendingBufferUpdates().empty());
}
+
+ void checkForceFullUploadOnFirstTime()
+ {
+ // GIVEN
+ Qt3DRender::Render::Buffer backendBuffer;
+ Qt3DRender::Render::BufferManager bufferManager;
+ TestRenderer renderer;
+ Qt3DRender::QBuffer frontendBuffer;
+
+ QByteArray data("111456789\0");
+
+ frontendBuffer.setData(data);
+ frontendBuffer.updateData(1, QByteArray("23\0"));
+
+ // THEN
+ QCOMPARE(frontendBuffer.data(), QByteArray("123456789\0"));
+
+ // WHEN
+ backendBuffer.setManager(&bufferManager);
+ backendBuffer.setRenderer(&renderer);
+ simulateInitializationSync(&frontendBuffer, &backendBuffer);
+
+ // THEN
+ QCOMPARE(backendBuffer.pendingBufferUpdates().size(), 1);
+ Qt3DRender::QBufferUpdate fullUpdate = backendBuffer.pendingBufferUpdates().first();
+ QCOMPARE(fullUpdate.offset, -1);
+ QVERIFY(fullUpdate.data.isEmpty());
+ QCOMPARE(frontendBuffer.data(), backendBuffer.data());
+
+ backendBuffer.pendingBufferUpdates().clear();
+
+ // WHEN
+ frontendBuffer.updateData(1, QByteArray("00\0"));
+ backendBuffer.syncFromFrontEnd(&frontendBuffer, false);
+
+ // THEN
+ QCOMPARE(frontendBuffer.data(), QByteArray("100456789\0"));
+ QCOMPARE(backendBuffer.pendingBufferUpdates().size(), 1);
+ fullUpdate = backendBuffer.pendingBufferUpdates().first();
+ QCOMPARE(fullUpdate.offset, 1);
+ QCOMPARE(fullUpdate.data, QByteArray("00\0"));
+ QCOMPARE(frontendBuffer.data(), backendBuffer.data());
+
+ // WHEN
+ frontendBuffer.updateData(1, QByteArray("22\0"));
+ backendBuffer.syncFromFrontEnd(&frontendBuffer, true);
+
+ // THEN
+ QCOMPARE(frontendBuffer.data(), QByteArray("122456789\0"));
+ fullUpdate = backendBuffer.pendingBufferUpdates().first();
+ QCOMPARE(fullUpdate.offset, -1);
+ QVERIFY(fullUpdate.data.isEmpty());
+ QCOMPARE(frontendBuffer.data(), backendBuffer.data());
+ }
+
void checkPropertyChanges()
{
// GIVEN