Files
qt5-legatus-legacy/Lts/Services/AudioVideoManagement/UnitTests/choose_stream_test.cpp
T
2026-08-13 18:33:10 +02:00

180 lines
8.1 KiB
C++
Executable File

/**
* @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 <AudioVideoManagement/AvsCommands/choose_stream.h>
#include <AudioVideoManagement/iava_comm.h>
#include <AudioVideoManagement/iava_command_done_observer.h>
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);
}