summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2024-03-01 15:10:47 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-03-04 13:35:18 +0000
commitc8be3261625bbf3c8562d28dc96b4ab082987e89 (patch)
treeacd57927cd08a019481b797edf48aa4f67ba4d44
parent7909926e2eb92fdd996db321a3388b67552fe28c (diff)
Add a test for signals of QMediaPlayer upon destruction
Task-number: QTBUG-98437 Pick-to: 6.6 6.5 Change-Id: Iaa9cb568f17227855966961a5b021d28c7a6e4bb Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> (cherry picked from commit 9f0c777d78f97cd01da716809154d30f7926f554) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--tests/auto/integration/qmediaplayerbackend/fixture.h5
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp30
2 files changed, 34 insertions, 1 deletions
diff --git a/tests/auto/integration/qmediaplayerbackend/fixture.h b/tests/auto/integration/qmediaplayerbackend/fixture.h
index f78c6a8e6..c4540be27 100644
--- a/tests/auto/integration/qmediaplayerbackend/fixture.h
+++ b/tests/auto/integration/qmediaplayerbackend/fixture.h
@@ -25,7 +25,8 @@ public:
metadataChanged(&player, &QMediaPlayer::metaDataChanged),
volumeChanged(&output, &QAudioOutput::volumeChanged),
mutedChanged(&output, &QAudioOutput::mutedChanged),
- bufferProgressChanged(&player, &QMediaPlayer::bufferProgressChanged)
+ bufferProgressChanged(&player, &QMediaPlayer::bufferProgressChanged),
+ destroyed(&player, &QObject::destroyed)
{
setVideoSinkAsyncFramesCounter(surface, framesCount);
@@ -46,6 +47,7 @@ public:
volumeChanged.clear();
mutedChanged.clear();
bufferProgressChanged.clear();
+ destroyed.clear();
}
QMediaPlayer player;
@@ -64,6 +66,7 @@ public:
QSignalSpy volumeChanged;
QSignalSpy mutedChanged;
QSignalSpy bufferProgressChanged;
+ QSignalSpy destroyed;
};
// Helper to create an object that is comparable to a QSignalSpy
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
index 6037a5aaa..e4ddd95f4 100644
--- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
@@ -79,6 +79,7 @@ public slots:
private slots:
void testMediaFilesAreSupported();
void destructor_cancelsPreviousSetSource_whenServerDoesNotRespond();
+ void destructor_emitsOnlyQObjectDestroyedSignal_whenPlayerIsRunning();
void getters_returnExpectedValues_whenCalledWithDefaultConstructedPlayer_data() const;
void getters_returnExpectedValues_whenCalledWithDefaultConstructedPlayer() const;
@@ -354,6 +355,35 @@ void tst_QMediaPlayerBackend::destructor_cancelsPreviousSetSource_whenServerDoes
#endif
}
+void tst_QMediaPlayerBackend::destructor_emitsOnlyQObjectDestroyedSignal_whenPlayerIsRunning()
+{
+ CHECK_SELECTED_URL(m_localVideoFile3ColorsWithSound);
+
+ // Arrange
+ m_fixture->player.setSource(*m_localVideoFile3ColorsWithSound);
+ m_fixture->player.play();
+ QTRY_COMPARE(m_fixture->player.mediaStatus(), QMediaPlayer::BufferedMedia);
+
+ m_fixture->clearSpies();
+
+ // Act
+ m_fixture->player.~QMediaPlayer();
+ new (&m_fixture->player) QMediaPlayer;
+
+ // Assert
+ QCOMPARE(m_fixture->playbackStateChanged.size(), 0);
+ QCOMPARE(m_fixture->errorOccurred.size(), 0);
+ QCOMPARE(m_fixture->sourceChanged.size(), 0);
+ QCOMPARE(m_fixture->mediaStatusChanged.size(), 0);
+ QCOMPARE(m_fixture->positionChanged.size(), 0);
+ QCOMPARE(m_fixture->durationChanged.size(), 0);
+ QCOMPARE(m_fixture->metadataChanged.size(), 0);
+ QCOMPARE(m_fixture->volumeChanged.size(), 0);
+ QCOMPARE(m_fixture->mutedChanged.size(), 0);
+ QCOMPARE(m_fixture->bufferProgressChanged.size(), 0);
+ QCOMPARE(m_fixture->destroyed.size(), 1);
+}
+
void tst_QMediaPlayerBackend::
getters_returnExpectedValues_whenCalledWithDefaultConstructedPlayer_data() const
{