180 lines
8.1 KiB
C++
Executable File
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);
|
|
}
|