summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@qt.io>2019-01-22 12:33:42 +0100
committerChristian Strømme <christian.stromme@qt.io>2019-01-28 10:56:30 +0000
commitbbf69f613e0be819871b859ca900149d93f1fa8c (patch)
tree4838ccb60afb7148cfe11529e35d10fdb3fa9afb /tests
parentf187bed25ce9edb683da205bd5accfd4d953a721 (diff)
Fix and simplify the visibility update
Components should, once created, handle the visibility of it's own objects instead of having a hybrid solution where it's sometimes handled by the parent. Change-Id: I5f4c95dce2573da821a0498c7c40f6cdff9b245d Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/slides/tst_q3dsslides.cpp72
1 files changed, 63 insertions, 9 deletions
diff --git a/tests/auto/slides/tst_q3dsslides.cpp b/tests/auto/slides/tst_q3dsslides.cpp
index 8f0035a..23149a3 100644
--- a/tests/auto/slides/tst_q3dsslides.cpp
+++ b/tests/auto/slides/tst_q3dsslides.cpp
@@ -257,11 +257,11 @@ void tst_Q3DSSlides::setPresentationSlides()
{
QVERIFY(m_sceneManager->currentSlide() == m_presentationSlide1);
// For the first check we have to wait from the first frame update
- QSignalSpy m_updateSpy(m_engine, SIGNAL(nextFrameStarting()));
- m_updateSpy.wait(30);
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
Q3DSAbstractSlidePlayer *player = m_sceneManager->slidePlayer();
- player->stop();
+ player->pause();
QVERIFY(player);
// Check starting state
@@ -274,6 +274,7 @@ void tst_Q3DSSlides::setPresentationSlides()
// Set second slide
m_sceneManager->setCurrentSlide(m_presentationSlide2, true);
+ QVERIFY(updateSpy.wait(500));
// Verify second slide state
QCOMPARE(player->duration(), 10000);
// MasterCylinder should be visible
@@ -285,6 +286,7 @@ void tst_Q3DSSlides::setPresentationSlides()
// Go back to first slide
m_sceneManager->setCurrentSlide(m_presentationSlide1, true);
+ QVERIFY(updateSpy.wait(500));
// Check first slide state
QCOMPARE(player->duration(), 10000);
// MasterCylinder should be visible
@@ -297,6 +299,7 @@ void tst_Q3DSSlides::setPresentationSlides()
// Set 3rd Slide (with Component)
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QCOMPARE(player->duration(), 10000);
// MasterCylinder should be visible
QVERIFY(isNodeVisible(m_masterCylinder));
@@ -309,6 +312,7 @@ void tst_Q3DSSlides::setPresentationSlides()
// Set 4th Slide (from Component)
m_sceneManager->setCurrentSlide(m_presentationSlide4, true);
+ QVERIFY(updateSpy.wait(500));
QCOMPARE(player->duration(), 12028);
// MasterCylinder should be visible
QVERIFY(isNodeVisible(m_masterCylinder));
@@ -323,6 +327,7 @@ void tst_Q3DSSlides::setPresentationSlides()
// Set the same slide again
m_sceneManager->setCurrentSlide(m_presentationSlide4, true);
+ QVERIFY(updateSpy.wait(500));
QCOMPARE(player->duration(), 12028);
// MasterCylinder should be visible
QVERIFY(isNodeVisible(m_masterCylinder));
@@ -338,8 +343,12 @@ void tst_Q3DSSlides::setPresentationSlides()
void tst_Q3DSSlides::presentationRollback()
{
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
+
// Go back to first slide
m_sceneManager->setCurrentSlide(m_presentationSlide1, true);
+ QVERIFY(updateSpy.wait(500));
// DynamicSphere exists on the master slide (visible by default)
// DynamicSphere has eyeball set to false on Slides 2 and 4
@@ -347,30 +356,39 @@ void tst_Q3DSSlides::presentationRollback()
// Go to Second Slide
m_sceneManager->setCurrentSlide(m_presentationSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_dynamicSphere));
// Go to Third Slide (requires rollback)
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_dynamicSphere));
// Go to Forth Slide
m_sceneManager->setCurrentSlide(m_presentationSlide4, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_dynamicSphere));
// Go to another slide with eyeball false (no rollback)
m_sceneManager->setCurrentSlide(m_presentationSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_dynamicSphere));
// Make sure rollback still works
m_sceneManager->setCurrentSlide(m_presentationSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_dynamicSphere));
}
void tst_Q3DSSlides::setComponentSlides()
{
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
+
// Set the presentation slide to Slide3 (contains component)
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_slide3Component));
// Initial slide should be m_componentSlide1
@@ -381,6 +399,7 @@ void tst_Q3DSSlides::setComponentSlides()
// Switch to Component Slide 2 (text)
m_sceneManager->setComponentCurrentSlide(m_componentSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(isNodeVisible(m_componentSlide2Text));
@@ -388,6 +407,7 @@ void tst_Q3DSSlides::setComponentSlides()
// Switch back to Component Slide 1
m_sceneManager->setComponentCurrentSlide(m_componentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentMasterCube));
QVERIFY(isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -395,6 +415,7 @@ void tst_Q3DSSlides::setComponentSlides()
// Switch to Component Slide 3 (deep component)
m_sceneManager->setComponentCurrentSlide(m_componentSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -402,6 +423,7 @@ void tst_Q3DSSlides::setComponentSlides()
// Switch to same slide
m_sceneManager->setComponentCurrentSlide(m_componentSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -410,35 +432,47 @@ void tst_Q3DSSlides::setComponentSlides()
void tst_Q3DSSlides::componentRollback()
{
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
+
// Set the presentation slide to Slide3 (contains component)
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_slide3Component));
// Set first slide which contains "Master Cube"
m_sceneManager->setComponentCurrentSlide(m_componentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentMasterCube));
// Second slide sets Master Cube eyeball to false
m_sceneManager->setComponentCurrentSlide(m_componentSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
// Switch back to first slide (requires rollback)
m_sceneManager->setComponentCurrentSlide(m_componentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentMasterCube));
// Move to slide 3 (no change)
m_sceneManager->setComponentCurrentSlide(m_componentSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentMasterCube));
}
void tst_Q3DSSlides::setDeepComponentSlides()
{
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
// Deep Component is a nested component Slide
// PresentationSlide3 -> ComponentSlide3 -> DeepComponentSlide[n]
// Set the presentation slide to Slide3 (contains component)
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_slide3Component));
m_sceneManager->setComponentCurrentSlide(m_componentSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentSlide3Component));
// At this point the first slide of deep component should be active
@@ -449,18 +483,21 @@ void tst_Q3DSSlides::setDeepComponentSlides()
// Switch to second deep component slide
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_deepComponentSlide1Cylinder));
QVERIFY(isNodeVisible(m_deepComponentSlide2Sphere));
QVERIFY(isNodeVisible(m_deepComponentSlide2Moon));
// Switch back to deep component first slide
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_deepComponentSlide1Cylinder));
QVERIFY(!isNodeVisible(m_deepComponentSlide2Sphere));
QVERIFY(!isNodeVisible(m_deepComponentSlide2Moon));
// Set same slide again
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_deepComponentSlide1Cylinder));
QVERIFY(!isNodeVisible(m_deepComponentSlide2Sphere));
QVERIFY(!isNodeVisible(m_deepComponentSlide2Moon));
@@ -468,29 +505,38 @@ void tst_Q3DSSlides::setDeepComponentSlides()
void tst_Q3DSSlides::deepComponentRollback()
{
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
// Deep Component is a nested component Slide
// PresentationSlide3 -> ComponentSlide3 -> DeepComponentSlide[n]
// Set the presentation slide to Slide3 (contains component)
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_slide3Component));
m_sceneManager->setComponentCurrentSlide(m_componentSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_componentSlide3Component));
// First slide has "master text" active
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_deepComponentMasterText));
// Second slide has eyeball set to false for master text
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_deepComponentMasterText));
// Switch back to first slide to perform rollback
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_deepComponentMasterText));
}
void tst_Q3DSSlides::setNonVisibleComponentSlides()
{
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
+ updateSpy.wait(30);
// It is possible to change component slides even though components
// are not visible. This is useful because when you do switch to a
// slide where components contents are shown they will be in the
@@ -499,12 +545,14 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
// Select a presentation slide that does not have a component
m_sceneManager->setCurrentSlide(m_presentationSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_slide3Component));
// m_slide3Component is only visible on m_presentationSlide3
// change m_slide3Component's slides and make sure the contents
// do not become visible.
m_sceneManager->setComponentCurrentSlide(m_componentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -515,6 +563,7 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
QVERIFY(!isNodeVisible(m_deepComponentMasterText));
m_sceneManager->setComponentCurrentSlide(m_componentSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -525,6 +574,7 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
QVERIFY(!isNodeVisible(m_deepComponentMasterText));
m_sceneManager->setComponentCurrentSlide(m_componentSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -536,6 +586,7 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
// also change deep compoents slides (now active in component slide3)
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -546,6 +597,7 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
QVERIFY(!isNodeVisible(m_deepComponentMasterText));
m_sceneManager->setComponentCurrentSlide(m_deepComponentSlide2, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
QVERIFY(!isNodeVisible(m_componentSlide2Text));
@@ -557,6 +609,7 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
// Now make component visible by switching to slide 3
m_sceneManager->setCurrentSlide(m_presentationSlide3, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_slide3Component));
QVERIFY(isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
@@ -569,6 +622,7 @@ void tst_Q3DSSlides::setNonVisibleComponentSlides()
// make sure that they go away again
m_sceneManager->setCurrentSlide(m_presentationSlide1, true);
+ QVERIFY(updateSpy.wait(500));
QVERIFY(!isNodeVisible(m_slide3Component));
QVERIFY(!isNodeVisible(m_componentMasterCube));
QVERIFY(!isNodeVisible(m_componentSlide1Cone));
@@ -584,29 +638,29 @@ void tst_Q3DSSlides::testTimeLineVisibility()
{
// Select a presentation slide that has items with different starttimes
// and endtimes than the slide they are on
+ QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
m_sceneManager->setCurrentSlide(m_presentationSlide5, true);
-
+ QVERIFY(updateSpy.wait(500));
QVERIFY(isNodeVisible(m_masterCylinder));
QVERIFY(isNodeVisible(m_dynamicSphere));
QVERIFY(!isNodeVisible(m_slide5Rect));
QVERIFY(isNodeVisible(m_slide5Sphere));
Q3DSAbstractSlidePlayer *player = m_sceneManager->slidePlayer();
- player->stop();
+ player->pause();
QVERIFY(player);
- QSignalSpy updateSpy(m_engine, SIGNAL(nextFrameStarting()));
QSignalSpy positionChangedSpy(player, &Q3DSSlidePlayer::positionChanged);
- const auto seekAndWait = [player](int value) { player->seek(value); };
+ const auto seekAndWait = [player, &updateSpy](int value) { player->seek(value); QVERIFY(updateSpy.wait(1000));};
m_sceneManager->setComponentCurrentSlide(m_componentSlide51);
Q_ASSERT(m_componentSlide5MasterSlide == m_slide5Component->masterSlide());
Q3DSAbstractSlidePlayer *compPlayer = m_componentSlide5MasterSlide->attached<Q3DSSlideAttached>()->slidePlayer;
- compPlayer->stop();
+ compPlayer->pause();
QVERIFY(compPlayer);
- const auto seekAndWaitForComp = [compPlayer](int value) { compPlayer->seek(value); };
+ const auto seekAndWaitForComp = [compPlayer, &updateSpy](int value) { compPlayer->seek(value); QVERIFY(updateSpy.wait(30));};
seekAndWait(999);