diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2024-03-01 15:10:47 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-03-04 13:35:18 +0000 |
commit | c8be3261625bbf3c8562d28dc96b4ab082987e89 (patch) | |
tree | acd57927cd08a019481b797edf48aa4f67ba4d44 | |
parent | 7909926e2eb92fdd996db321a3388b67552fe28c (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.h | 5 | ||||
-rw-r--r-- | tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp | 30 |
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 { |