diff --git a/src/test/signalpathtest.h b/src/test/signalpathtest.h index 4cf38a465325..1136656ed6b8 100644 --- a/src/test/signalpathtest.h +++ b/src/test/signalpathtest.h @@ -164,6 +164,23 @@ class BaseSignalPathTest : public MixxxTest, SoundSourceProviderRegistration { m_pNumDecks->set(m_pNumDecks->get() + 1); } + void ejectTrack(Deck* pDeck) { + EngineDeck* pEngineDeck = pDeck->getEngineDeck(); + if (!pEngineDeck->getEngineBuffer()->isTrackLoaded()) { + return; + } + pEngineDeck->getEngineBuffer()->ejectTrack(); + + // Wait for the track to unload. + for (int i = 0; i < 2000; ++i) { + if (!pEngineDeck->getEngineBuffer()->isTrackLoaded()) { + break; + } + QTest::qSleep(1); // sleep 1 ms for waiting 2 s at max + } + DEBUG_ASSERT(!pEngineDeck->getEngineBuffer()->isTrackLoaded()); + } + void loadTrack(Deck* pDeck, TrackPointer pTrack) { EngineDeck* pEngineDeck = pDeck->getEngineDeck(); if (pEngineDeck->getEngineBuffer()->isTrackLoaded()) { diff --git a/src/test/stemcontrolobjecttest.cpp b/src/test/stemcontrolobjecttest.cpp index 9a86b50ef018..819b4559b862 100644 --- a/src/test/stemcontrolobjecttest.cpp +++ b/src/test/stemcontrolobjecttest.cpp @@ -103,6 +103,7 @@ class StemControlTest : public BaseSignalPathTest { // CachingReaderWorker::trackLoaded (CachingReader) -> // EngineBuffer::loaded (CachingReader, direct) -> // BaseTrackPlayerImpl::slotTrackLoaded (main) + QTest::qSleep(20); // sleep 20 ms for waiting event from CachingReaderWorker QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents, 100); } @@ -148,6 +149,8 @@ TEST_F(StemControlTest, StemColor) { EXPECT_EQ(m_pStem3Color->get(), 0x00 << 16 | 0xe8 << 8 | 0xe8); EXPECT_EQ(m_pStem4Color->get(), 0xad << 16 | 0x65 << 8 | 0xff); + ejectTrack(m_pMixerDeck1); + QString kTrackLocationTest = getTestDir().filePath(QStringLiteral("sine-30.wav")); TrackPointer pTrack(Track::newTemporary(kTrackLocationTest)); loadTrack(m_pMixerDeck1, pTrack); @@ -157,6 +160,8 @@ TEST_F(StemControlTest, StemColor) { EXPECT_EQ(m_pStem3Color->get(), -1.0); EXPECT_EQ(m_pStem4Color->get(), -1.0); + ejectTrack(m_pMixerDeck1); + kTrackLocationTest = getTestDir().filePath("stems/test.stem.mp4"); pTrack = Track::newTemporary(kTrackLocationTest); loadTrack(m_pMixerDeck1, pTrack);