/** * @RDE_HEADER@ * ChooseStreamTest * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, NLSE, 2018-01-26 */ #include "choose_stream_test.h" #include "ava_comm_double.h" #include #include #include using namespace AudioVideoManagement; namespace { class DoneObserver : public IAvaCommandDoneObserver { public: void done(ICommand *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::ChooseStream *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::GetStreamList *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::QueryTimeline *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::GetElokaList *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::QueryEloka *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::SetRtProfileBase *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::SetAnnouncementProfile *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::SetVideoProfile *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::SetScript *cmd) override { Q_UNUSED(cmd); m_done = true; } void done(AvaCommands::StartScript *cmd) override { Q_UNUSED(cmd); m_done = true; } void failed(ICommand *cmd) override { Q_UNUSED(cmd); } void alive(ICommand *cmd) override { Q_UNUSED(cmd); } bool m_done{false}; }; } // anonymous namespace /** * Scenario when chooseStream is called when no stream is currently chosen. * Sample comm protocol: * chooseStream CAMERA_IN_AP_3 1 Video1 * 200 OK * 220 "CAMERA_IN_AP_3" "Video1" 1516978925.00 1516978925.00 0.00 STREAMINFO * 221 "CAMERA_IN_AP_3" "Video1" 1516978924.97 STREAMPOS * 222 "CAMERA_IN_AP_3" "Video1" 100 STREAMSPEED * 223 "CAMERA_IN_AP_3" "Video1" 0 STREAMSTATE * 224 "CAMERA_IN_AP_3" "Video1" 1 0 STREAMMODE * 225 "CAMERA_IN_AP_3" "Video1" 1 STREAMAUDIOMUTE * 228 "CAMERA_IN_AP_3" "Video1" 1 STREAMVOLUMECHANGED * 225 "CAMERA_IN_AP_3" "Video1" 1 STREAMAUDIOMUTE * 223 "CAMERA_IN_AP_3" "Video1" 1 STREAMSTATE */ void ChooseStreamTest::testChooseFirstStream() { const QString dialog = QStringLiteral("Video1"); const QString stream = QStringLiteral("cam1"); AvaCommDouble avaCommDouble; DoneObserver observer; AvaCommands::ChooseStream chooseStream(&avaCommDouble, &observer, dialog, stream); chooseStream.send(); emit avaCommDouble.ok(); emit avaCommDouble.streamInfoReceived(dialog, stream, AvaStreamInfo{AvaTimePoint{AvaDuration{151697892500}}, AvaTimePoint{AvaDuration{151697892500}}, AvaDuration{0}}); emit avaCommDouble.streamStateReceived(dialog, stream, AvaStreamState::Stop); QVERIFY(!observer.m_done); emit avaCommDouble.streamModeReceived(dialog, stream, true, false); QVERIFY(observer.m_done); } /** * Scenario when chooseStream is called when a stream is currenly chosen already. * Sample comm protocol: * chooseStream CAMERA_IN_AP_1 1 Video1 * 200 OK * 221 "CAMERA_IN_AP_3" "Video1" 1516978962.33 STREAMPOS * 223 "CAMERA_IN_AP_3" "Video1" 3 STREAMSTATE * 223 "CAMERA_IN_AP_3" "Video1" 3 STREAMSTATE * 220 "CAMERA_IN_AP_1" "Video1" 1516978962.00 1516978962.00 0.00 STREAMINFO * 221 "CAMERA_IN_AP_1" "Video1" 1516978962.37 STREAMPOS * 222 "CAMERA_IN_AP_1" "Video1" 100 STREAMSPEED * 223 "CAMERA_IN_AP_1" "Video1" 0 STREAMSTATE * 224 "CAMERA_IN_AP_1" "Video1" 1 0 STREAMMODE * 225 "CAMERA_IN_AP_1" "Video1" 1 STREAMAUDIOMUTE * 228 "CAMERA_IN_AP_1" "Video1" 1 STREAMVOLUMECHANGED * 225 "CAMERA_IN_AP_1" "Video1" 1 STREAMAUDIOMUTE * 223 "CAMERA_IN_AP_1" "Video1" 1 STREAMSTATE */ void ChooseStreamTest::testChooseSecondStream() { const QString dialog = QStringLiteral("Video1"); const QString oldStream = QStringLiteral("cam1"); const QString newStream = QStringLiteral("cam2"); AvaCommDouble avaCommDouble; DoneObserver observer; AvaCommands::ChooseStream chooseStream(&avaCommDouble, &observer, dialog, newStream); chooseStream.send(); emit avaCommDouble.ok(); emit avaCommDouble.streamStateReceived(dialog, oldStream, AvaStreamState::NotPossible); emit avaCommDouble.streamStateReceived(dialog, oldStream, AvaStreamState::NotPossible); emit avaCommDouble.streamInfoReceived(dialog, newStream, AvaStreamInfo{AvaTimePoint{AvaDuration{151697896200}}, AvaTimePoint{AvaDuration{151697896200}}, AvaDuration{0}}); emit avaCommDouble.streamStateReceived(dialog, newStream, AvaStreamState::Stop); QVERIFY(!observer.m_done); emit avaCommDouble.streamModeReceived(dialog, newStream, true, false); QVERIFY(observer.m_done); } /** * Same as testChooseSecondStream but we choose the same stream. */ void ChooseStreamTest::testChooseSameStream() { const QString dialog = QStringLiteral("Video1"); const QString stream = QStringLiteral("cam1"); AvaCommDouble avaCommDouble; DoneObserver observer; AvaCommands::ChooseStream chooseStream(&avaCommDouble, &observer, dialog, stream); chooseStream.send(); emit avaCommDouble.ok(); emit avaCommDouble.streamStateReceived(dialog, stream, AvaStreamState::NotPossible); emit avaCommDouble.streamStateReceived(dialog, stream, AvaStreamState::NotPossible); emit avaCommDouble.streamInfoReceived(dialog, stream, AvaStreamInfo{AvaTimePoint{AvaDuration{151697896200}}, AvaTimePoint{AvaDuration{151697896200}}, AvaDuration{0}}); emit avaCommDouble.streamStateReceived(dialog, stream, AvaStreamState::Stop); QVERIFY(!observer.m_done); emit avaCommDouble.streamModeReceived(dialog, stream, true, false); QVERIFY(observer.m_done); } /** * Almost the same as testChooseSecondStream() but this time there are two streams * choosen already (using chooseStreamOverview). * Sample comm protocol: * chooseStream CAMERA_IN_AP_3 1 Video1 * 200 OK * 221 "CAMERA_IN_AP_1" "Video1" 1516979047.87 STREAMPOS * 221 "CAMERA_IN_AP_2" "Video1" 1516979047.87 STREAMPOS * 223 "CAMERA_IN_AP_1" "Video1" 3 STREAMSTATE * 223 "CAMERA_IN_AP_2" "Video1" 3 STREAMSTATE * 223 "CAMERA_IN_AP_1" "Video1" 3 STREAMSTATE * 223 "CAMERA_IN_AP_2" "Video1" 3 STREAMSTATE * 220 "CAMERA_IN_AP_3" "Video1" 1516979048.00 1516979048.00 0.00 STREAMINFO * 221 "CAMERA_IN_AP_3" "Video1" 1516979047.92 STREAMPOS * 222 "CAMERA_IN_AP_3" "Video1" 100 STREAMSPEED * 223 "CAMERA_IN_AP_3" "Video1" 0 STREAMSTATE * 224 "CAMERA_IN_AP_3" "Video1" 1 0 STREAMMODE * 225 "CAMERA_IN_AP_3" "Video1" 1 STREAMAUDIOMUTE * 228 "CAMERA_IN_AP_3" "Video1" 1 STREAMVOLUMECHANGED * 225 "CAMERA_IN_AP_3" "Video1" 1 STREAMAUDIOMUTE * 223 "CAMERA_IN_AP_3" "Video1" 1 STREAMSTATE */ void ChooseStreamTest::testChooseAfterOverview() { const QString dialog = QStringLiteral("Video1"); const QString oldStream1 = QStringLiteral("cam1"); const QString oldStream2 = QStringLiteral("cam2"); const QString newStream = QStringLiteral("cam3"); AvaCommDouble avaCommDouble; DoneObserver observer; AvaCommands::ChooseStream chooseStream(&avaCommDouble, &observer, dialog, newStream); chooseStream.send(); emit avaCommDouble.streamStateReceived(dialog, oldStream1, AvaStreamState::NotPossible); emit avaCommDouble.streamStateReceived(dialog, oldStream2, AvaStreamState::NotPossible); emit avaCommDouble.streamStateReceived(dialog, oldStream1, AvaStreamState::NotPossible); emit avaCommDouble.streamStateReceived(dialog, oldStream2, AvaStreamState::NotPossible); emit avaCommDouble.streamInfoReceived(dialog, newStream, AvaStreamInfo{AvaTimePoint{AvaDuration{151697904800}}, AvaTimePoint{AvaDuration{151697904800}}, AvaDuration{0}}); emit avaCommDouble.streamStateReceived(dialog, newStream, AvaStreamState::Stop); QVERIFY(!observer.m_done); emit avaCommDouble.streamModeReceived(dialog, newStream, true, false); QVERIFY(observer.m_done); }