From 40c99f0549aaaab0ac3ebcce55e95d171b919beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= Date: Mon, 4 Dec 2023 13:15:25 -0500 Subject: [PATCH] tests: add test for audio file Change-Id: Ie67ad8f18ef453dd7de8e3ef201d77e54843ca33 --- test/unitTest/media/test.mp3 | Bin 0 -> 47124 bytes test/unitTest/media/test_media_player.cpp | 66 ++++++++++++++-------- 2 files changed, 44 insertions(+), 22 deletions(-) create mode 100644 test/unitTest/media/test.mp3 diff --git a/test/unitTest/media/test.mp3 b/test/unitTest/media/test.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8d355a660bee86e3c3c2c381aa2ae8870a720620 GIT binary patch literal 47124 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

?`g)lkXW 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 literal 0 HcmV?d00001 diff --git a/test/unitTest/media/test_media_player.cpp b/test/unitTest/media/test_media_player.cpp index 153be0ca0..a3632fbb2 100644 --- a/test/unitTest/media/test_media_player.cpp +++ b/test/unitTest/media/test_media_player.cpp @@ -38,8 +38,6 @@ public: void tearDown(); private: - std::string filePath = "./media/test_video_file.mp4"; - void testCreate(); void testJPG(); void testPause(); @@ -87,12 +85,7 @@ MediaPlayerTest::setUp() playerId2_ = playerId; cv.notify_all(); })); - libjami::registerSignalHandlers(handler); - - playerId1_ = jami::createMediaPlayer(filePath); - mediaPlayer = jami::getMediaPlayer(playerId1_); - cv.wait_for(lk, 5s); } void @@ -108,7 +101,10 @@ MediaPlayerTest::tearDown() void MediaPlayerTest::testCreate() { - JAMI_INFO() << "Start testCreate"; + JAMI_INFO("Start testCreate"); + playerId1_ = jami::createMediaPlayer("./media/test_video_file.mp4"); + mediaPlayer = jami::getMediaPlayer(playerId1_); + cv.wait_for(lk, 5s); CPPUNIT_ASSERT(playerId1_ == playerId2_); CPPUNIT_ASSERT(mediaPlayer->getId() == playerId1_); CPPUNIT_ASSERT(mediaPlayer->isInputValid()); @@ -116,47 +112,70 @@ MediaPlayerTest::testCreate() CPPUNIT_ASSERT(video_stream_ != -1); CPPUNIT_ASSERT(mediaPlayer->isPaused()); CPPUNIT_ASSERT(mediaPlayer->getPlayerPosition() == 0); - JAMI_INFO() << "End testCreate"; + JAMI_INFO("End testCreate"); } void MediaPlayerTest::testJPG() { - JAMI_INFO() << "Start testJpg"; - std::string filePathJpg = "./media/jami.jpg"; - auto pid = jami::createMediaPlayer(filePathJpg); + JAMI_INFO("Start testJpg"); + playerId1_ = jami::createMediaPlayer("./media/jami.jpg"); + mediaPlayer = jami::getMediaPlayer(playerId1_); + cv.wait_for(lk, 5s); + CPPUNIT_ASSERT(playerId1_ == playerId2_); + CPPUNIT_ASSERT(mediaPlayer->getId() == playerId1_); + CPPUNIT_ASSERT(mediaPlayer->isInputValid()); + CPPUNIT_ASSERT(audio_stream_ == -1); + CPPUNIT_ASSERT(video_stream_ != -1); + CPPUNIT_ASSERT(mediaPlayer->isPaused()); + CPPUNIT_ASSERT(mediaPlayer->getPlayerPosition() == 0); + JAMI_INFO("End testJpg"); +} - CPPUNIT_ASSERT(pid == playerId2_); - CPPUNIT_ASSERT(mediaPlayer->getId() == pid); +void +MediaPlayerTest::testAudioFile() +{ + JAMI_INFO("Start testAudioFile"); + playerId1_ = jami::createMediaPlayer("./media/test.mp3"); + mediaPlayer = jami::getMediaPlayer(playerId1_); + cv.wait_for(lk, 5s); + CPPUNIT_ASSERT(playerId1_ == playerId2_); + CPPUNIT_ASSERT(mediaPlayer->getId() == playerId1_); CPPUNIT_ASSERT(mediaPlayer->isInputValid()); CPPUNIT_ASSERT(audio_stream_ != -1); CPPUNIT_ASSERT(video_stream_ != -1); CPPUNIT_ASSERT(mediaPlayer->isPaused()); CPPUNIT_ASSERT(mediaPlayer->getPlayerPosition() == 0); - JAMI_INFO() << "End testJpg"; + JAMI_INFO("End testAudioFile"); } void MediaPlayerTest::testPause() { - JAMI_INFO() << "Start testPause"; + playerId1_ = jami::createMediaPlayer("./media/test_video_file.mp4"); + mediaPlayer = jami::getMediaPlayer(playerId1_); + cv.wait_for(lk, 5s); + JAMI_INFO("Start testPause"); // should start paused CPPUNIT_ASSERT(mediaPlayer->isPaused()); mediaPlayer->pause(false); CPPUNIT_ASSERT(!mediaPlayer->isPaused()); - JAMI_INFO() << "End testPause"; + JAMI_INFO("End testPause"); } bool MediaPlayerTest::isWithinUsec(int64_t currentTime, int64_t seekTime, int64_t margin) { - return (std::abs(currentTime-seekTime) <= margin); + return std::abs(currentTime-seekTime) <= margin; } void MediaPlayerTest::testSeekWhilePaused() { - JAMI_INFO() << "Start testSeekWhilePaused"; + JAMI_INFO("Start testSeekWhilePaused"); + playerId1_ = jami::createMediaPlayer("./media/test_video_file.mp4"); + mediaPlayer = jami::getMediaPlayer(playerId1_); + cv.wait_for(lk, 5s); int64_t startTime = mediaPlayer->getPlayerPosition(); @@ -176,13 +195,16 @@ MediaPlayerTest::testSeekWhilePaused() CPPUNIT_ASSERT(isWithinUsec(mediaPlayer->getPlayerPosition(), 0, 1)); CPPUNIT_ASSERT(!(mediaPlayer->seekToTime(duration_+1))); - JAMI_INFO() << "End testSeekWhilePaused"; + JAMI_INFO("End testSeekWhilePaused"); } void MediaPlayerTest::testSeekWhilePlaying() { - JAMI_INFO() << "Start testSeekWhilePlaying"; + JAMI_INFO("Start testSeekWhilePlaying"); + playerId1_ = jami::createMediaPlayer("./media/test_video_file.mp4"); + mediaPlayer = jami::getMediaPlayer(playerId1_); + cv.wait_for(lk, 5s); mediaPlayer->pause(false); int64_t startTime = mediaPlayer->getPlayerPosition(); @@ -201,7 +223,7 @@ MediaPlayerTest::testSeekWhilePlaying() CPPUNIT_ASSERT(isWithinUsec(mediaPlayer->getPlayerPosition(), 0, 50)); CPPUNIT_ASSERT(!(mediaPlayer->seekToTime(duration_+1))); - JAMI_INFO() << "End testSeekWhilePlaying"; + JAMI_INFO("End testSeekWhilePlaying"); } }} // namespace jami::test