From 5e2b1144e7641ecaad5fbd87c1b654999595542d Mon Sep 17 00:00:00 2001 From: Sankalp Date: Thu, 26 Jun 2025 10:31:12 +0530 Subject: [PATCH 1/8] RDK-42386 : Improve Unit Tests Coverage for AVInput Plugin Reason for change: Adding L1 test cases for code coverage improvements. Test Procedure: Run L1test to verify Risks: Medium Signed-off-by: Sankalp --- Tests/L1Tests/tests/test_AVInput.cpp | 987 +++++++++++++++++++++++++++ 1 file changed, 987 insertions(+) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index a82e2d21..9d323cb9 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -21,6 +21,11 @@ #include "AVInput.h" +#include "CompositeInputMock.h" +#include "FactoriesImplementation.h" +#include "IarmBusMock.h" +#include "HostMock.h" +#include "ServiceMock.h" #include "HdmiInputMock.h" #include "ThunderPortability.h" @@ -47,12 +52,28 @@ class AVInputTest : public ::testing::Test { class AVInputDsTest : public AVInputTest { protected: HdmiInputImplMock *p_hdmiInputImplMock = nullptr ; + CompositeInputImplMock *p_compositeInputImplMock = nullptr ; + HostImplMock *p_HostImplMock = nullptr ; + IARM_EventHandler_t dsAVGameFeatureStatusEventHandler; + IARM_EventHandler_t dsAVEventHandler; + IARM_EventHandler_t dsAVSignalStatusEventHandler; + IARM_EventHandler_t dsAVStatusEventHandler; + IARM_EventHandler_t dsAVVideoModeEventHandler; + IARM_EventHandler_t dsAviContentTypeEventHandler; AVInputDsTest() : AVInputTest() { p_hdmiInputImplMock = new NiceMock ; device::HdmiInput::setImpl(p_hdmiInputImplMock); + + p_compositeInputImplMock = new NiceMock ; + device::CompositeInput::setImpl(p_compositeInputImplMock); + + p_HostImplMock = new NiceMock ; + device::Host::setImpl(p_HostImplMock); + + } virtual ~AVInputDsTest() override { @@ -62,6 +83,107 @@ class AVInputDsTest : public AVInputTest { delete p_hdmiInputImplMock; p_hdmiInputImplMock = nullptr; } + + device::CompositeInput::setImpl(nullptr); + if (p_compositeInputImplMock != nullptr) + { + delete p_compositeInputImplMock; + p_compositeInputImplMock = nullptr; + } + + device::Host::setImpl(nullptr); + if (p_HostImplMock != nullptr) + { + delete p_HostImplMock; + p_HostImplMock = nullptr; + } + } +}; + +class AVInputInit : public AVInputDsTest { +protected: + IarmBusImplMock* p_iarmBusImplMock = nullptr; + NiceMock factoriesImplementation; + PLUGINHOST_DISPATCHER* dispatcher; + ServiceMock service; + Core::JSONRPC::Message message; + + AVInputInit() + : AVInputDsTest() + { + p_iarmBusImplMock = new NiceMock; + IarmBus::setImpl(p_iarmBusImplMock); + + ON_CALL(*p_iarmBusImplMock, IARM_Bus_RegisterEventHandler(::testing::_, ::testing::_, ::testing::_)) + .WillByDefault(::testing::Invoke( + [&](const char* ownerName, IARM_EventId_t eventId, IARM_EventHandler_t handler) { + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG)) { + EXPECT_TRUE(handler != nullptr); + dsAVEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS)) { + EXPECT_TRUE(handler != nullptr); + dsAVStatusEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS)) { + EXPECT_TRUE(handler != nullptr); + dsAVSignalStatusEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE)) { + EXPECT_TRUE(handler != nullptr); + dsAVVideoModeEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS)) { + EXPECT_TRUE(handler != nullptr); + dsAVGameFeatureStatusEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS)) { + EXPECT_TRUE(handler != nullptr); + dsAVGameFeatureStatusEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG)) { + EXPECT_TRUE(handler != nullptr); + dsAVEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS)) { + EXPECT_TRUE(handler != nullptr); + dsAVSignalStatusEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS)) { + EXPECT_TRUE(handler != nullptr); + dsAVStatusEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE)) { + EXPECT_TRUE(handler != nullptr); + dsAVVideoModeEventHandler = handler; + } + if ((string(IARM_BUS_DSMGR_NAME) == string(ownerName)) && (eventId == IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE)) { + EXPECT_TRUE(handler != nullptr); + dsAviContentTypeEventHandler = handler; + } + return IARM_RESULT_SUCCESS; + })); + EXPECT_EQ(string(""), plugin->Initialize(&service)); + + PluginHost::IFactories::Assign(&factoriesImplementation); + dispatcher = static_cast( + plugin->QueryInterface(PLUGINHOST_DISPATCHER_ID)); + dispatcher->Activate(&service); + } + + virtual ~AVInputInit() override + { + dispatcher->Deactivate(); + dispatcher->Release(); + PluginHost::IFactories::Assign(nullptr); + + plugin->Deinitialize(&service); + + IarmBus::setImpl(nullptr); + if (p_iarmBusImplMock != nullptr) { + delete p_iarmBusImplMock; + p_iarmBusImplMock = nullptr; + } } }; @@ -75,6 +197,871 @@ TEST_F(AVInputTest, RegisteredMethods) EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("setVRRSupport"))); EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getVRRSupport"))); EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getVRRFrameRate"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getInputDevices"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("writeEDID"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("readEDID"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getRawSPD"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getSPD"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("setEdidVersion"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getEdidVersion"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getHdmiVersion"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("setMixerLevels"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("startInput"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("stopInput"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("setVideoRectangle"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getSupportedGameFeatures"))); + EXPECT_EQ(Core::ERROR_NONE, handler.Exists(_T("getGameFeatureStatus"))); +} + +TEST_F(AVInputInit, getInputDevices) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getNumberOfInputs()) + .WillOnce(::testing::Return(1)); + EXPECT_CALL(*p_compositeInputImplMock, getNumberOfInputs()) + .WillOnce(::testing::Return(1)); + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getInputDevices"), _T("{}"), response)); + EXPECT_EQ(response, string("{\"devices\":[{\"id\":0,\"connected\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\"},{\"id\":0,\"connected\":false,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\"}],\"success\":true}")); +} + +TEST_F(AVInputInit, writeEDID) +{ + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("writeEDID"), _T("{\"portId\": \"1\",\"message\":\"Test\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, readEDID) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getEDIDBytesInfo(::testing::_, ::testing::_)) + .WillOnce([](int port, std::vector& edid) { + edid = { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("readEDID"), _T("{\"portId\": \"1\"}"), response)); + EXPECT_EQ(response, string("{\"EDID\":\"AP\\/\\/\\/\\/\\/\\/\\/wA=\",\"success\":true}")); +} + +TEST_F(AVInputInit, getRawSPD) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getHDMISPDInfo(::testing::_, ::testing::_)) + .WillOnce([](int port, std::vector& data) { + data = { 0x53, 0x50, 0x44, 0x00 }; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getRawSPD"), _T("{\"portId\": \"1\"}"), response)); + EXPECT_EQ(response, string("{\"HDMISPD\":\"U1BEAA\",\"success\":true}")); +} + +TEST_F(AVInputInit, getSPD) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getHDMISPDInfo(::testing::_, ::testing::_)) + .WillOnce([](int port, std::vector& data) { + data = { 0x53, 0x50, 0x44, 0x00 }; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getSPD"), _T("{\"portId\": \"1\"}"), response)); + EXPECT_EQ(response, string("{\"HDMISPD\":\"Packet Type:53,Version:80,Length:68,vendor name:wn,product des:,source info:00\",\"success\":true}")); +} + +TEST_F(AVInputInit, setEdidVersion) +{ + EXPECT_CALL(*p_hdmiInputImplMock, setEdidVersion(::testing::_, ::testing::_)) + .WillOnce([](int port, int edidVersion) { + EXPECT_EQ(port, 1); + EXPECT_EQ(edidVersion, 0); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setEdidVersion"), _T("{\"portId\": \"1\", \"edidVersion\":\"HDMI1.4\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, getEdidVersion) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getEdidVersion(::testing::_, ::testing::_)) + .WillOnce([](int port, int* edidVersion) { + *edidVersion = 4; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getEdidVersion"), _T("{\"portId\": \"1\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, getHdmiVersion) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getHdmiVersion(::testing::_, ::testing::_)) + .WillOnce([](int port, dsHdmiMaxCapabilityVersion_t* capVersion) { + if (capVersion) { + *capVersion = HDMI_COMPATIBILITY_VERSION_21; + } + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getHdmiVersion"), _T("{\"portId\": \"1\"}"), response)); + EXPECT_EQ(response, string("{\"HdmiCapabilityVersion\":\"2.1\",\"success\":true}")); +} + +TEST_F(AVInputInit, setMixerLevels) +{ + EXPECT_CALL(*p_HostImplMock, setAudioMixerLevels(dsAUDIO_INPUT_PRIMARY, ::testing::_)) + .WillOnce([](dsAudioInput_t input, int volume) { + EXPECT_EQ(input, dsAUDIO_INPUT_PRIMARY); + EXPECT_EQ(volume, 50); + }); + + EXPECT_CALL(*p_HostImplMock, setAudioMixerLevels(dsAUDIO_INPUT_SYSTEM, ::testing::_)) + .WillOnce([](dsAudioInput_t input, int volume) { + EXPECT_EQ(input, dsAUDIO_INPUT_SYSTEM); + EXPECT_EQ(volume, 30); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setMixerLevels"), _T("{\"primaryVolume\": 50 ,\"inputVolume\":30}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, startInput_HDMI) +{ + EXPECT_CALL(*p_hdmiInputImplMock, selectPort(::testing::_, ::testing::_, ::testing::_, ::testing::_)) + .WillOnce([](int8_t Port, bool audioMix, int videoPlane, bool topMost) { + EXPECT_EQ(Port, 1); + EXPECT_EQ(audioMix, true); + EXPECT_EQ(videoPlane, 1); + EXPECT_EQ(topMost, true); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": 1 ,\"typeOfInput\":\"HDMI\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, startInput_COMPOSITE) +{ + EXPECT_CALL(*p_compositeInputImplMock, selectPort(::testing::_)) + .WillOnce([](int8_t Port) { + EXPECT_EQ(Port, 2); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": 2 ,\"typeOfInput\":\"COMPOSITE\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, stopInput_HDMI) +{ + EXPECT_CALL(*p_hdmiInputImplMock, selectPort(::testing::_, ::testing::_, ::testing::_, ::testing::_)) + .WillOnce([](int8_t Port, bool audioMix, int videoPlane, bool topMost) { + EXPECT_EQ(Port, -1); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"HDMI\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, stopInput_COMPOSITE) +{ + EXPECT_CALL(*p_compositeInputImplMock, selectPort(::testing::_)) + .WillOnce([](int8_t Port) { + EXPECT_EQ(Port, -1); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"COMPOSITE\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, setVideoRectangle_HDMI) +{ + EXPECT_CALL(*p_hdmiInputImplMock, scaleVideo(::testing::_, ::testing::_, ::testing::_, ::testing::_)) + .WillOnce([](int32_t x, int32_t y, int32_t width, int32_t height) { + EXPECT_EQ(x, 0); + EXPECT_EQ(y, 0); + EXPECT_EQ(width, 3840); + EXPECT_EQ(height, 2160); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setVideoRectangle"), _T("{\"x\" : 0, \"y\" : 0, \"w\" : 3840, \"h\" : 2160 ,\"typeOfInput\":\"HDMI\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, setVideoRectangle_COMPOSITE) +{ + EXPECT_CALL(*p_compositeInputImplMock, scaleVideo(::testing::_, ::testing::_, ::testing::_, ::testing::_)) + .WillOnce([](int32_t x, int32_t y, int32_t width, int32_t height) { + EXPECT_EQ(x, 0); + EXPECT_EQ(y, 0); + EXPECT_EQ(width, 720); + EXPECT_EQ(height, 480); + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setVideoRectangle"), _T("{\"x\" : 0, \"y\" : 0, \"w\" : 720, \"h\" : 480 ,\"typeOfInput\":\"COMPOSITE\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + +TEST_F(AVInputInit, getSupportedGameFeatures) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getSupportedGameFeatures(::testing::_)) + .WillOnce([](std::vector& featureList) { + featureList = { "ALLM", "VRR", "QMS" }; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getSupportedGameFeatures"), _T("{}"), response)); + EXPECT_EQ(response, string("{\"supportedGameFeatures\":[\"ALLM\",\"VRR\",\"QMS\"],\"success\":true}")); +} + +TEST_F(AVInputInit, getGameFeatureStatus_ALLM) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getHdmiALLMStatus(::testing::_, ::testing::_)) + .WillOnce([](int iHdmiPort, bool* allmStatus) { + EXPECT_EQ(iHdmiPort, 1); + *allmStatus = true; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getGameFeatureStatus"), _T("{\"portId\" : 1, \"gameFeature\" : \"ALLM\"}"), response)); + EXPECT_EQ(response, string("{\"mode\":true,\"success\":true}")); +} + +TEST_F(AVInputInit, getGameFeatureStatus_VRR_HDMI) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getVRRStatus(::testing::_, ::testing::_)) + .WillOnce([](int iHdmiPort, dsHdmiInVrrStatus_t* vrrStatus) { + ASSERT_NE(vrrStatus, nullptr); + vrrStatus->vrrType = dsVRR_HDMI_VRR; + vrrStatus->vrrAmdfreesyncFramerate_Hz = 90.00; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getGameFeatureStatus"), _T("{\"portId\" : 1, \"gameFeature\" : \"VRR-HDMI\"}"), response)); + EXPECT_EQ(response, string("{\"mode\":true,\"success\":true}")); +} + +TEST_F(AVInputInit, getGameFeatureStatus_VRR_FREESYNC) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getVRRStatus(::testing::_, ::testing::_)) + .WillOnce([](int iHdmiPort, dsHdmiInVrrStatus_t* vrrStatus) { + ASSERT_NE(vrrStatus, nullptr); + vrrStatus->vrrType = dsVRR_AMD_FREESYNC; + vrrStatus->vrrAmdfreesyncFramerate_Hz = 100.00; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getGameFeatureStatus"), _T("{\"portId\" : 1, \"gameFeature\" : \"VRR-FREESYNC\"}"), response)); + EXPECT_EQ(response, string("{\"mode\":true,\"success\":true}")); +} + +TEST_F(AVInputInit, getGameFeatureStatus_VRR_FREESYNC_PREMIUM) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getVRRStatus(::testing::_, ::testing::_)) + .WillOnce([](int iHdmiPort, dsHdmiInVrrStatus_t* vrrStatus) { + ASSERT_NE(vrrStatus, nullptr); + vrrStatus->vrrType = dsVRR_AMD_FREESYNC_PREMIUM; + vrrStatus->vrrAmdfreesyncFramerate_Hz = 120.00; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getGameFeatureStatus"), _T("{\"portId\" : 1, \"gameFeature\" : \"VRR-FREESYNC-PREMIUM\"}"), response)); + EXPECT_EQ(response, string("{\"mode\":true,\"success\":true}")); +} + +TEST_F(AVInputInit, getGameFeatureStatus_VRR_FREESYNC_PREMIUM_PRO) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getVRRStatus(::testing::_, ::testing::_)) + .WillOnce([](int iHdmiPort, dsHdmiInVrrStatus_t* vrrStatus) { + ASSERT_NE(vrrStatus, nullptr); + vrrStatus->vrrType = dsVRR_AMD_FREESYNC_PREMIUM_PRO; + vrrStatus->vrrAmdfreesyncFramerate_Hz = 144.00; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getGameFeatureStatus"), _T("{\"portId\" : 1, \"gameFeature\" : \"VRR-FREESYNC-PREMIUM-PRO\"}"), response)); + EXPECT_EQ(response, string("{\"mode\":true,\"success\":true}")); +} + +TEST_F(AVInputInit, onDevicesChangedHDMI) +{ + ASSERT_TRUE(dsAVEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_connect.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_connect.isPortConnected = true; + + EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); + + dsAVEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); +} + +TEST_F(AVInputInit, onDevicesChangedCOMPOSITE) +{ + ASSERT_TRUE(dsAVEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_connect.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_connect.isPortConnected = true; + + EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); + + dsAVEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedStableHDMI) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_STABLE; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedNoSignalHDMI) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_NOSIGNAL; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedUnstableHDMI) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_UNSTABLE; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedNotSupportedHDMI) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_NOTSUPPORTED; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedDefaultHDMI) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_MAX; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedStableCOMPOSITE) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_STABLE; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedNoSignalCOMPOSITE) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_NOSIGNAL; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedUnstableCOMPOSITE) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_UNSTABLE; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedNotSupportedCOMPOSITE) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_NOTSUPPORTED; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onSignalChangedDefaultCOMPOSITE) +{ + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_MAX; + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); +} + +TEST_F(AVInputInit, onInputStatusChangeOn_HDMI) +{ + ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"0\" , \"typeOfInput\":\"HDMI\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_status.isPresented = true; + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + + dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); +} + +TEST_F(AVInputInit, onInputStatusChangeOff_HDMI) +{ + ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"HDMI\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_status.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_status.isPresented = false; + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + + dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); +} + +TEST_F(AVInputInit, onInputStatusChangeOn_COMPOSITE) +{ + ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"0\" , \"typeOfInput\":\"COMPOSITE\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_status.isPresented = true; + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + + dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); +} + +TEST_F(AVInputInit, onInputStatusChangeOff_COMPOSITE) +{ + ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"COMPOSITE\"}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_status.port = dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_status.isPresented = false; + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + + dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); +} + +TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate) +{ + ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_allm_mode.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_allm_mode.allm_mode = true; + EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + + dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); +} + +TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_HDMI_VRR) +{ + ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_HDMI_VRR; + EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + + dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); +} + +TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC) +{ + ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC; + EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + + dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); +} + +TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC_PREMIUM) +{ + ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC_PREMIUM; + EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + + dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); +} + +TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC_PREMIUM_PRO) +{ + ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC_PREMIUM_PRO; + EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + + dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); + + EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate1_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1920x1080; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_59dot94; + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate2_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x480; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_24; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate3_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x576; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_25; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + +} + +TEST_F(AVInputInit, videoStreamInfoUpdate4_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_3840x2160; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_30; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + +} + +TEST_F(AVInputInit, videoStreamInfoUpdate5_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_50; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate6_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_60; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate7_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_23dot98; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate8_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_29dot97; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate9_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_29dot97; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate10_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_100; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate11_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_119dot88; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate12_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_120; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate13_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_200; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate14_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_239dot76; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate15_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_240; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdateDefault_HDMI) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_MAX; + eventData.data.hdmi_in_video_mode.resolution.interlaced = true; + eventData.data.hdmi_in_video_mode.resolution.frameRate= dsVIDEO_FRAMERATE_MAX; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate1_COMPOSITE) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_video_mode.port =dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x480; + eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_24; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdate2_COMPOSITE) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_video_mode.port =dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x576; + eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_25; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, videoStreamInfoUpdateDefault_COMPOSITE) +{ + ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.composite_in_video_mode.port =dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_MAX; + eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_MAX; + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); +} + +TEST_F(AVInputInit, aviContentTypeUpdate_HDMI) +{ + ASSERT_TRUE(dsAviContentTypeEventHandler != nullptr); + + IARM_Bus_DSMgr_EventData_t eventData; + eventData.data.hdmi_in_content_type.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_content_type.aviContentType = dsAVICONTENT_TYPE_GRAPHICS; + EVENT_SUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("client.events.aviContentTypeUpdate"), message); + dsAviContentTypeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &eventData , 0); + EVENT_UNSUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("client.events.aviContentTypeUpdate"), message); } TEST_F(AVInputTest, contentProtected) From 729ba645fd09e84c28a9aef24d5b9f48026ab2dd Mon Sep 17 00:00:00 2001 From: smanes0213 Date: Tue, 1 Jul 2025 14:36:06 +0530 Subject: [PATCH 2/8] Update test_AVInput.cpp Added negative Test fixtures for all the APIs --- Tests/L1Tests/tests/test_AVInput.cpp | 172 ++++++++++++++++++++++++++- 1 file changed, 167 insertions(+), 5 deletions(-) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index 9d323cb9..a8ba54b9 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -223,21 +223,71 @@ TEST_F(AVInputInit, getInputDevices) EXPECT_EQ(response, string("{\"devices\":[{\"id\":0,\"connected\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\"},{\"id\":0,\"connected\":false,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\"}],\"success\":true}")); } +TEST_F(AVInputInit, getInputDevices_HDMI) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getNumberOfInputs()) + .WillOnce(::testing::Return(1)); + EXPECT_CALL(*p_hdmiInputImplMock, isPortConnected(::testing::_)) + .WillOnce(::testing::Return(true)); + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getInputDevices"), _T("{\"typeOfInput\": \"HDMI\"}"), response)); + EXPECT_EQ(response, string("{\"devices\":[{\"id\":0,\"connected\":true,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\"}],\"success\":true}")); +} + +TEST_F(AVInputInit, getInputDevices_COMPOSITE) +{ + EXPECT_CALL(*p_compositeInputImplMock, getNumberOfInputs()) + .WillOnce(::testing::Return(1)); + EXPECT_CALL(*p_compositeInputImplMock, isPortConnected(::testing::_)) + .WillOnce(::testing::Return(true)); + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getInputDevices"), _T("{\"typeOfInput\": \"COMPOSITE\"}"), response)); + EXPECT_EQ(response, string("{\"devices\":[{\"id\":0,\"connected\":true,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\"}],\"success\":true}")); +} + +TEST_F(AVInputInit, getInputDevices_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getInputDevices"), _T("{\"typeOfInput\": \"Test\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, writeEDID) { EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("writeEDID"), _T("{\"portId\": \"1\",\"message\":\"Test\"}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputInit, writeEDID_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("writeEDID"), _T("{}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, readEDID) { EXPECT_CALL(*p_hdmiInputImplMock, getEDIDBytesInfo(::testing::_, ::testing::_)) .WillOnce([](int port, std::vector& edid) { - edid = { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; + EXPECT_EQ(port,1); + edid = { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; }); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("readEDID"), _T("{\"portId\": \"1\"}"), response)); - EXPECT_EQ(response, string("{\"EDID\":\"AP\\/\\/\\/\\/\\/\\/\\/wA=\",\"success\":true}")); + EXPECT_EQ(response, string("{\"EDID\":\"AP\\/\\/\\/\\/\\/\\/\\/w==\",\"success\":true}")); +} + +TEST_F(AVInputInit, readEDIDFailure) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getEDIDBytesInfo(::testing::_, ::testing::_)) + .WillOnce([](int port, std::vector& edid) { + edid = {}; + }); + + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("readEDID"), _T("{\"portId\": \"1\"}"), response)); + EXPECT_EQ(response, string("")); +} + +TEST_F(AVInputInit, readEDID_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("readEDID"), _T("{\"portId\": \"test\"}"), response)); + EXPECT_EQ(response, string("")); } TEST_F(AVInputInit, getRawSPD) @@ -251,6 +301,12 @@ TEST_F(AVInputInit, getRawSPD) EXPECT_EQ(response, string("{\"HDMISPD\":\"U1BEAA\",\"success\":true}")); } +TEST_F(AVInputInit, getRawSPD_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getRawSPD"), _T("{\"portId\": \"test\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, getSPD) { EXPECT_CALL(*p_hdmiInputImplMock, getHDMISPDInfo(::testing::_, ::testing::_)) @@ -262,6 +318,12 @@ TEST_F(AVInputInit, getSPD) EXPECT_EQ(response, string("{\"HDMISPD\":\"Packet Type:53,Version:80,Length:68,vendor name:wn,product des:,source info:00\",\"success\":true}")); } +TEST_F(AVInputInit, getSPD_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getSPD"), _T("{\"portId\": \"test\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, setEdidVersion) { EXPECT_CALL(*p_hdmiInputImplMock, setEdidVersion(::testing::_, ::testing::_)) @@ -274,15 +336,40 @@ TEST_F(AVInputInit, setEdidVersion) EXPECT_EQ(response, string("{\"success\":true}")); } -TEST_F(AVInputInit, getEdidVersion) +TEST_F(AVInputInit, setEdidVersion_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("setEdidVersion"), _T("{\"portId\": \"test\", \"edidVersion\":\"test\"}"), response)); + EXPECT_EQ(response, string("")); +} + +TEST_F(AVInputInit, getEdidVersion1) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getEdidVersion(::testing::_, ::testing::_)) + .WillOnce([](int port, int* edidVersion) { + EXPECT_EQ(port,0); + *edidVersion = 0; + }); + + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getEdidVersion"), _T("{\"portId\": \"0\"}"), response)); + EXPECT_EQ(response, string("{\"edidVersion\":\"HDMI1.4\",\"success\":true}")); +} + +TEST_F(AVInputInit, getEdidVersion2) { EXPECT_CALL(*p_hdmiInputImplMock, getEdidVersion(::testing::_, ::testing::_)) .WillOnce([](int port, int* edidVersion) { - *edidVersion = 4; + EXPECT_EQ(port,1); + *edidVersion = 1; }); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getEdidVersion"), _T("{\"portId\": \"1\"}"), response)); - EXPECT_EQ(response, string("{\"success\":true}")); + EXPECT_EQ(response, string("{\"edidVersion\":\"HDMI2.0\",\"success\":true}")); +} + +TEST_F(AVInputInit, getEdidVersion_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getEdidVersion"), _T("{\"portId\": \"test\"}}"), response)); + EXPECT_EQ(response, string("")); } TEST_F(AVInputInit, getHdmiVersion) @@ -298,6 +385,12 @@ TEST_F(AVInputInit, getHdmiVersion) EXPECT_EQ(response, string("{\"HdmiCapabilityVersion\":\"2.1\",\"success\":true}")); } +TEST_F(AVInputInit, getHdmiVersion_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getHdmiVersion"), _T("{\"portId\": \"test\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, setMixerLevels) { EXPECT_CALL(*p_HostImplMock, setAudioMixerLevels(dsAUDIO_INPUT_PRIMARY, ::testing::_)) @@ -316,6 +409,12 @@ TEST_F(AVInputInit, setMixerLevels) EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputInit, setMixerLevelsErrorCase) +{ + EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setMixerLevels"), _T("{\"primaryVolume\": 110 ,\"inputVolume\":110}"), response)); + EXPECT_EQ(response, string("{\"success\":true}")); +} + TEST_F(AVInputInit, startInput_HDMI) { EXPECT_CALL(*p_hdmiInputImplMock, selectPort(::testing::_, ::testing::_, ::testing::_, ::testing::_)) @@ -341,6 +440,12 @@ TEST_F(AVInputInit, startInput_COMPOSITE) EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputInit, startInput_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"test\" ,\"typeOfInput\":\"HDMI\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, stopInput_HDMI) { EXPECT_CALL(*p_hdmiInputImplMock, selectPort(::testing::_, ::testing::_, ::testing::_, ::testing::_)) @@ -363,6 +468,12 @@ TEST_F(AVInputInit, stopInput_COMPOSITE) EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputInit, stopInput_COMPOSITE_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"DP\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, setVideoRectangle_HDMI) { EXPECT_CALL(*p_hdmiInputImplMock, scaleVideo(::testing::_, ::testing::_, ::testing::_, ::testing::_)) @@ -391,6 +502,12 @@ TEST_F(AVInputInit, setVideoRectangle_COMPOSITE) EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputInit, setVideoRectangle_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("setVideoRectangle"), _T("{\"x\" : 0, \"y\" : 0, \"w\" : 720, \"h\" : 480 ,\"typeOfInput\":\"DP\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, getSupportedGameFeatures) { EXPECT_CALL(*p_hdmiInputImplMock, getSupportedGameFeatures(::testing::_)) @@ -402,6 +519,17 @@ TEST_F(AVInputInit, getSupportedGameFeatures) EXPECT_EQ(response, string("{\"supportedGameFeatures\":[\"ALLM\",\"VRR\",\"QMS\"],\"success\":true}")); } +TEST_F(AVInputInit, getSupportedGameFeatures_ErrorCase) +{ + EXPECT_CALL(*p_hdmiInputImplMock, getSupportedGameFeatures(::testing::_)) + .WillOnce([](std::vector& featureList) { + featureList = {}; + }); + + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getSupportedGameFeatures"), _T("{}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, getGameFeatureStatus_ALLM) { EXPECT_CALL(*p_hdmiInputImplMock, getHdmiALLMStatus(::testing::_, ::testing::_)) @@ -466,6 +594,12 @@ TEST_F(AVInputInit, getGameFeatureStatus_VRR_FREESYNC_PREMIUM_PRO) EXPECT_EQ(response, string("{\"mode\":true,\"success\":true}")); } +TEST_F(AVInputInit, getGameFeatureStatus_InvalidParameters) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getGameFeatureStatus"), _T("{\"portId\" : \"test\", \"gameFeature\" : \"VRR-FREESYNC-PREMIUM-PRO\"}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputInit, onDevicesChangedHDMI) { ASSERT_TRUE(dsAVEventHandler != nullptr); @@ -1094,6 +1228,11 @@ TEST_F(AVInputDsTest, getEdid2AllmSupport) EXPECT_EQ(response, string("{\"allmSupport\":true,\"success\":true}")); } +TEST_F(AVInputDsTest, getEdid2AllmSupport_ErrorCase) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getEdid2AllmSupport"), _T("{\"portId\": \"test\",\"allmSupport\":true}"), response)); + EXPECT_EQ(response, string("")); +} TEST_F(AVInputDsTest, setEdid2AllmSupport) { @@ -1101,21 +1240,44 @@ TEST_F(AVInputDsTest, setEdid2AllmSupport) EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputDsTest, setEdid2AllmSupport_ErrorCase) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("setEdid2AllmSupport"), _T("{\"portId\": \"test\",\"allmSupport\":true}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputDsTest, getVRRSupport) { EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getVRRSupport"), _T("{\"portId\": \"0\",\"vrrSupport\":true}"), response)); EXPECT_EQ(response, string("{\"vrrSupport\":true,\"success\":true}")); } +TEST_F(AVInputDsTest, getVRRSupport_ErrorCase) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getVRRSupport"), _T("{\"portId\": \"test\",\"vrrSupport\":true}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputDsTest, setVRRSupport) { EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("setVRRSupport"), _T("{\"portId\": \"0\",\"vrrSupport\":true}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); } +TEST_F(AVInputDsTest, setVRRSupport_ErrorCase) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("setVRRSupport"), _T("{\"portId\": \"test\",\"vrrSupport\":true}"), response)); + EXPECT_EQ(response, string("")); +} + TEST_F(AVInputDsTest, getVRRFrameRate) { EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("getVRRFrameRate"), _T("{\"portId\": \"0\"}"), response)); EXPECT_EQ(response, string("{\"currentVRRVideoFrameRate\":0,\"success\":true}")); } +TEST_F(AVInputDsTest, getVRRFrameRate_ErrorCase) +{ + EXPECT_EQ(Core::ERROR_GENERAL, handler.Invoke(connection, _T("getVRRFrameRate"), _T("{\"portId\": \"test\"}"), response)); + EXPECT_EQ(response, string("")); +} From 5c9775ea0bd6adc4d8447daf19fc4b17df0e6d58 Mon Sep 17 00:00:00 2001 From: Sankalp Maneshwar Date: Tue, 1 Jul 2025 14:57:53 +0530 Subject: [PATCH 3/8] Update test_AVInput.cpp --- Tests/L1Tests/tests/test_AVInput.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index a8ba54b9..75bb23eb 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -18,7 +18,6 @@ **/ #include - #include "AVInput.h" #include "CompositeInputMock.h" From f95a85ed9e3069ca34faa501f064a058efb51f5f Mon Sep 17 00:00:00 2001 From: Sankalp Maneshwar Date: Tue, 1 Jul 2025 14:58:11 +0530 Subject: [PATCH 4/8] Update test_AVInput.cpp --- Tests/L1Tests/tests/test_AVInput.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index 75bb23eb..a8ba54b9 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -18,6 +18,7 @@ **/ #include + #include "AVInput.h" #include "CompositeInputMock.h" From 5f4616e01e7236f7516d8cbccfde5cd5461626fc Mon Sep 17 00:00:00 2001 From: Sankalp Maneshwar Date: Wed, 2 Jul 2025 15:21:33 +0530 Subject: [PATCH 5/8] Update test_AVInput.cpp --- Tests/L1Tests/tests/test_AVInput.cpp | 1131 ++++++++++++++++++++------ 1 file changed, 904 insertions(+), 227 deletions(-) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index a8ba54b9..8862bc40 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -1,21 +1,21 @@ /** -* If not stated otherwise in this file or this component's LICENSE -* file the following copyright and licenses apply: -* -* Copyright 2024 RDK Management -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -**/ + * If not stated otherwise in this file or this component's LICENSE + * file the following copyright and licenses apply: + * + * Copyright 2024 RDK Management + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ #include @@ -23,10 +23,10 @@ #include "CompositeInputMock.h" #include "FactoriesImplementation.h" -#include "IarmBusMock.h" +#include "HdmiInputMock.h" #include "HostMock.h" +#include "IarmBusMock.h" #include "ServiceMock.h" -#include "HdmiInputMock.h" #include "ThunderPortability.h" using namespace WPEFramework; @@ -51,9 +51,9 @@ class AVInputTest : public ::testing::Test { class AVInputDsTest : public AVInputTest { protected: - HdmiInputImplMock *p_hdmiInputImplMock = nullptr ; - CompositeInputImplMock *p_compositeInputImplMock = nullptr ; - HostImplMock *p_HostImplMock = nullptr ; + HdmiInputImplMock* p_hdmiInputImplMock = nullptr; + CompositeInputImplMock* p_compositeInputImplMock = nullptr; + HostImplMock* p_HostImplMock = nullptr; IARM_EventHandler_t dsAVGameFeatureStatusEventHandler; IARM_EventHandler_t dsAVEventHandler; IARM_EventHandler_t dsAVSignalStatusEventHandler; @@ -64,36 +64,31 @@ class AVInputDsTest : public AVInputTest { AVInputDsTest() : AVInputTest() { - p_hdmiInputImplMock = new NiceMock ; + p_hdmiInputImplMock = new NiceMock; device::HdmiInput::setImpl(p_hdmiInputImplMock); - p_compositeInputImplMock = new NiceMock ; + p_compositeInputImplMock = new NiceMock; device::CompositeInput::setImpl(p_compositeInputImplMock); - p_HostImplMock = new NiceMock ; + p_HostImplMock = new NiceMock; device::Host::setImpl(p_HostImplMock); - - } virtual ~AVInputDsTest() override { device::HdmiInput::setImpl(nullptr); - if (p_hdmiInputImplMock != nullptr) - { + if (p_hdmiInputImplMock != nullptr) { delete p_hdmiInputImplMock; p_hdmiInputImplMock = nullptr; } device::CompositeInput::setImpl(nullptr); - if (p_compositeInputImplMock != nullptr) - { + if (p_compositeInputImplMock != nullptr) { delete p_compositeInputImplMock; p_compositeInputImplMock = nullptr; } device::Host::setImpl(nullptr); - if (p_HostImplMock != nullptr) - { + if (p_HostImplMock != nullptr) { delete p_HostImplMock; p_HostImplMock = nullptr; } @@ -105,7 +100,7 @@ class AVInputInit : public AVInputDsTest { IarmBusImplMock* p_iarmBusImplMock = nullptr; NiceMock factoriesImplementation; PLUGINHOST_DISPATCHER* dispatcher; - ServiceMock service; + NiceMock service; Core::JSONRPC::Message message; AVInputInit() @@ -265,7 +260,7 @@ TEST_F(AVInputInit, readEDID) { EXPECT_CALL(*p_hdmiInputImplMock, getEDIDBytesInfo(::testing::_, ::testing::_)) .WillOnce([](int port, std::vector& edid) { - EXPECT_EQ(port,1); + EXPECT_EQ(port, 1); edid = { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; }); @@ -346,7 +341,7 @@ TEST_F(AVInputInit, getEdidVersion1) { EXPECT_CALL(*p_hdmiInputImplMock, getEdidVersion(::testing::_, ::testing::_)) .WillOnce([](int port, int* edidVersion) { - EXPECT_EQ(port,0); + EXPECT_EQ(port, 0); *edidVersion = 0; }); @@ -358,7 +353,7 @@ TEST_F(AVInputInit, getEdidVersion2) { EXPECT_CALL(*p_hdmiInputImplMock, getEdidVersion(::testing::_, ::testing::_)) .WillOnce([](int port, int* edidVersion) { - EXPECT_EQ(port,1); + EXPECT_EQ(port, 1); *edidVersion = 1; }); @@ -602,202 +597,419 @@ TEST_F(AVInputInit, getGameFeatureStatus_InvalidParameters) TEST_F(AVInputInit, onDevicesChangedHDMI) { - ASSERT_TRUE(dsAVEventHandler != nullptr); + Core::Event onDevicesChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onDevicesChanged\",\"params\":{\"devices\":[]}}"); + onDevicesChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("org.rdk.AVInput"), message); + + ASSERT_TRUE(dsAVEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_connect.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_connect.isPortConnected = true; - - EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); - dsAVEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_HOTPLUG, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onDevicesChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onDevicesChangedCOMPOSITE) { - ASSERT_TRUE(dsAVEventHandler != nullptr); + Core::Event onDevicesChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onDevicesChanged\",\"params\":{\"devices\":[]}}"); + onDevicesChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("org.rdk.AVInput"), message); + + ASSERT_TRUE(dsAVEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_connect.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_connect.isPortConnected = true; - - EVENT_SUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); - dsAVEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_HOTPLUG, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("client.events.onDevicesChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onDevicesChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onDevicesChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedStableHDMI) { - ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, + "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"stableSignal\"}}"); + + onSignalChanged.SetEvent(); + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); + + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_STABLE; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedNoSignalHDMI) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, + "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"noSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_NOSIGNAL; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedUnstableHDMI) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, + "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"unstableSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_UNSTABLE; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedNotSupportedHDMI) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"notSupportedSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_NOTSUPPORTED; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedDefaultHDMI) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"none\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_sig_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_sig_status.status = dsHDMI_IN_SIGNAL_STATUS_MAX; + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedStableCOMPOSITE) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"stableSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_STABLE; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedNoSignalCOMPOSITE) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"noSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_NOSIGNAL; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedUnstableCOMPOSITE) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"unstableSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_UNSTABLE; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedNotSupportedCOMPOSITE) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"notSupportedSignal\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_NOTSUPPORTED; - - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onSignalChangedDefaultCOMPOSITE) { + Core::Event onSignalChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onSignalChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"signalStatus\":\"none\"}}"); + + onSignalChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_sig_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_sig_status.status = dsCOMP_IN_SIGNAL_STATUS_MAX; + dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_SUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onSignalChanged.Lock()); - dsAVSignalStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_SIGNAL_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("client.events.onSignalChanged"), message); + EVENT_UNSUBSCRIBE(0, _T("onSignalChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onInputStatusChangeOn_HDMI) { - ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + Core::Event onInputStatusChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onInputStatusChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"status\":\"started\",\"plane\":1}}"); + + onInputStatusChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"0\" , \"typeOfInput\":\"HDMI\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); + IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_status.isPresented = true; - - EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onInputStatusChangeOff_HDMI) { - ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + Core::Event onInputStatusChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onInputStatusChanged\",\"params\":{\"id\":0,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"status\":\"stopped\",\"plane\":-1}}"); + + onInputStatusChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"HDMI\"}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); @@ -805,397 +1017,862 @@ TEST_F(AVInputInit, onInputStatusChangeOff_HDMI) eventData.data.hdmi_in_status.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_status.isPresented = false; - EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onInputStatusChangeOn_COMPOSITE) { - ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + Core::Event onInputStatusChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onInputStatusChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"status\":\"started\",\"plane\":1}}"); + + onInputStatusChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("startInput"), _T("{\"portId\": \"0\" , \"typeOfInput\":\"COMPOSITE\", \"requestAudioMix\": true, \"plane\" : 1, \"topMost\" : true}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_status.isPresented = true; - - EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, onInputStatusChangeOff_COMPOSITE) { - ASSERT_TRUE(dsAVStatusEventHandler != nullptr); + Core::Event onInputStatusChanged(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.onInputStatusChanged\",\"params\":{\"id\":0,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"status\":\"stopped\",\"plane\":-1}}"); + + onInputStatusChanged.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); EXPECT_EQ(Core::ERROR_NONE, handler.Invoke(connection, _T("stopInput"), _T("{\"typeOfInput\":\"COMPOSITE\"}"), response)); EXPECT_EQ(response, string("{\"success\":true}")); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.composite_in_status.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_status.isPresented = false; - - EVENT_SUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); - dsAVStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("client.events.onInputStatusChanged"), message); + EXPECT_EQ(Core::ERROR_NONE, onInputStatusChanged.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("onInputStatusChanged"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate) { - ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + Core::Event gameFeatureStatusUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.gameFeatureStatusUpdate\",\"params\":{\"id\":0,\"gameFeature\":\"ALLM\",\"mode\":true}}"); + + gameFeatureStatusUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_allm_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_allm_mode.allm_mode = true; - EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_ALLM_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_HDMI_VRR) { - ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + Core::Event gameFeatureStatusUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.gameFeatureStatusUpdate\",\"params\":{\"id\":0,\"gameFeature\":\"VRR-HDMI\",\"mode\":true}}"); + + gameFeatureStatusUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_HDMI_VRR; - EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC) { - ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + Core::Event gameFeatureStatusUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.gameFeatureStatusUpdate\",\"params\":{\"id\":0,\"gameFeature\":\"VRR-FREESYNC\",\"mode\":true}}"); + + gameFeatureStatusUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC; - EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC_PREMIUM) { - ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + Core::Event gameFeatureStatusUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.gameFeatureStatusUpdate\",\"params\":{\"id\":0,\"gameFeature\":\"VRR-FREESYNC-PREMIUM\",\"mode\":true}}"); + + gameFeatureStatusUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC_PREMIUM; - EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, hdmiGameFeatureStatusUpdate_AMD_FREESYNC_PREMIUM_PRO) { - ASSERT_TRUE(dsAVGameFeatureStatusEventHandler != nullptr); + Core::Event gameFeatureStatusUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.gameFeatureStatusUpdate\",\"params\":{\"id\":0,\"gameFeature\":\"VRR-FREESYNC-PREMIUM-PRO\",\"mode\":true}}"); + + gameFeatureStatusUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; eventData.data.hdmi_in_vrr_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_vrr_mode.vrr_type = dsVRR_AMD_FREESYNC_PREMIUM_PRO; - EVENT_SUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); - dsAVGameFeatureStatusEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VRR_STATUS, &eventData, 0); - EVENT_UNSUBSCRIBE(0, _T("hdmiGameFeatureStatusUpdate"), _T("client.events.hdmiGameFeatureStatusUpdate"), message); + EXPECT_EQ(Core::ERROR_NONE, gameFeatureStatusUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("gameFeatureStatusUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate1_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1920,\"height\":1080,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":60000,\"frameRateD\":1001}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1920x1080; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_59dot94; + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate2_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":720,\"height\":480,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":24000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x480; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_24; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate3_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":720,\"height\":576,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":25000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x576; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_25; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate4_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":3840,\"height\":2160,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":30000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_3840x2160; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_30; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate5_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":4096,\"height\":2160,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":50000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_50; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate6_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text, "{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":4096,\"height\":2160,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":60000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_60; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate7_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":4096,\"height\":2160,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":24000,\"frameRateD\":1001}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_23dot98; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate8_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":4096,\"height\":2160,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":30000,\"frameRateD\":1001}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_4096x2160; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_29dot97; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate9_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":30000,\"frameRateD\":1001}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_29dot97; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate10_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":100000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_100; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate11_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":120000,\"frameRateD\":1001}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_119dot88; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate12_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":120000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_120; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate13_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":200000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_200; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate14_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":240000,\"frameRateD\":1001}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_239dot76; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdate15_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1280,\"height\":720,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":240000,\"frameRateD\":100}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_1280x720; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_240; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdateDefault_HDMI) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":1920,\"height\":1080,\"progressive\":false,\"locator\":\"hdmiin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":60000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_video_mode.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_video_mode.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_MAX; eventData.data.hdmi_in_video_mode.resolution.interlaced = true; - eventData.data.hdmi_in_video_mode.resolution.frameRate= dsVIDEO_FRAMERATE_MAX; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + eventData.data.hdmi_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_MAX; + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } + TEST_F(AVInputInit, videoStreamInfoUpdate1_COMPOSITE) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":720,\"height\":480,\"progressive\":false,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":24000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_video_mode.port =dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_video_mode.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x480; eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_24; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } + TEST_F(AVInputInit, videoStreamInfoUpdate2_COMPOSITE) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":720,\"height\":576,\"progressive\":false,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":25000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_video_mode.port =dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_video_mode.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_720x576; eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_25; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, videoStreamInfoUpdateDefault_COMPOSITE) { - ASSERT_TRUE(dsAVVideoModeEventHandler != nullptr); + Core::Event videoStreamInfoUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.videoStreamInfoUpdate\",\"params\":{\"id\":0,\"width\":720,\"height\":576,\"progressive\":false,\"locator\":\"cvbsin:\\/\\/localhost\\/deviceid\\/0\",\"frameRateN\":60000,\"frameRateD\":1000}}"); + + videoStreamInfoUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.composite_in_video_mode.port =dsCOMPOSITE_IN_PORT_0; + eventData.data.composite_in_video_mode.port = dsCOMPOSITE_IN_PORT_0; eventData.data.composite_in_video_mode.resolution.pixelResolution = dsVIDEO_PIXELRES_MAX; eventData.data.composite_in_video_mode.resolution.frameRate = dsVIDEO_FRAMERATE_MAX; - EVENT_SUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); - dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("client.events.videoStreamInfoUpdate"), message); + dsAVVideoModeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_COMPOSITE_IN_VIDEO_MODE_UPDATE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, videoStreamInfoUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("videoStreamInfoUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputInit, aviContentTypeUpdate_HDMI) { - ASSERT_TRUE(dsAviContentTypeEventHandler != nullptr); + Core::Event aviContentTypeUpdate(false, true); + + EXPECT_CALL(service, Submit(::testing::_, ::testing::_)) + .Times(1) + .WillOnce(::testing::Invoke( + [&](const uint32_t, const Core::ProxyType& json) { + string text; + EXPECT_TRUE(json->ToString(text)); + EXPECT_EQ(text,"{\"jsonrpc\":\"2.0\",\"method\":\"org.rdk.AVInput.aviContentTypeUpdate\",\"params\":{\"id\":0,\"aviContentType\":0}}"); + + aviContentTypeUpdate.SetEvent(); + + return Core::ERROR_NONE; + })); + + EVENT_SUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("org.rdk.AVInput"), message); + ASSERT_TRUE(dsAVSignalStatusEventHandler != nullptr); IARM_Bus_DSMgr_EventData_t eventData; - eventData.data.hdmi_in_content_type.port =dsHDMI_IN_PORT_0; + eventData.data.hdmi_in_content_type.port = dsHDMI_IN_PORT_0; eventData.data.hdmi_in_content_type.aviContentType = dsAVICONTENT_TYPE_GRAPHICS; - EVENT_SUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("client.events.aviContentTypeUpdate"), message); - dsAviContentTypeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &eventData , 0); - EVENT_UNSUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("client.events.aviContentTypeUpdate"), message); + dsAviContentTypeEventHandler(IARM_BUS_DSMGR_NAME, IARM_BUS_DSMGR_EVENT_HDMI_IN_AVI_CONTENT_TYPE, &eventData, 0); + + EXPECT_EQ(Core::ERROR_NONE, aviContentTypeUpdate.Lock()); + + EVENT_UNSUBSCRIBE(0, _T("aviContentTypeUpdate"), _T("org.rdk.AVInput"), message); } TEST_F(AVInputTest, contentProtected) From 9b840ebc5b67af3314c76141672db3fd1bf1bc3d Mon Sep 17 00:00:00 2001 From: Sankalp Maneshwar Date: Wed, 2 Jul 2025 18:59:52 +0530 Subject: [PATCH 6/8] Update test_AVInput.cpp --- Tests/L1Tests/tests/test_AVInput.cpp | 34 ++++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index 8862bc40..c1fb1b85 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -1,21 +1,21 @@ /** - * If not stated otherwise in this file or this component's LICENSE - * file the following copyright and licenses apply: - * - * Copyright 2024 RDK Management - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ +* If not stated otherwise in this file or this component's LICENSE +* file the following copyright and licenses apply: +* +* Copyright 2024 RDK Management +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +**/ #include From 4d30f0c71dc76c96a05500a4fb1e50e9ac835041 Mon Sep 17 00:00:00 2001 From: Sankalp Maneshwar Date: Wed, 2 Jul 2025 19:01:25 +0530 Subject: [PATCH 7/8] Update test_AVInput.cpp --- Tests/L1Tests/tests/test_AVInput.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index c1fb1b85..54bb8d66 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -64,7 +64,7 @@ class AVInputDsTest : public AVInputTest { AVInputDsTest() : AVInputTest() { - p_hdmiInputImplMock = new NiceMock; + p_hdmiInputImplMock = new NiceMock ; device::HdmiInput::setImpl(p_hdmiInputImplMock); p_compositeInputImplMock = new NiceMock; @@ -76,7 +76,8 @@ class AVInputDsTest : public AVInputTest { virtual ~AVInputDsTest() override { device::HdmiInput::setImpl(nullptr); - if (p_hdmiInputImplMock != nullptr) { + if (p_hdmiInputImplMock != nullptr) + { delete p_hdmiInputImplMock; p_hdmiInputImplMock = nullptr; } From 649d212268792523bad77509646916e26103d24c Mon Sep 17 00:00:00 2001 From: Sankalp Maneshwar Date: Wed, 2 Jul 2025 19:01:57 +0530 Subject: [PATCH 8/8] Update test_AVInput.cpp --- Tests/L1Tests/tests/test_AVInput.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/L1Tests/tests/test_AVInput.cpp b/Tests/L1Tests/tests/test_AVInput.cpp index 54bb8d66..0d0be6bd 100644 --- a/Tests/L1Tests/tests/test_AVInput.cpp +++ b/Tests/L1Tests/tests/test_AVInput.cpp @@ -76,7 +76,7 @@ class AVInputDsTest : public AVInputTest { virtual ~AVInputDsTest() override { device::HdmiInput::setImpl(nullptr); - if (p_hdmiInputImplMock != nullptr) + if (p_hdmiInputImplMock != nullptr) { delete p_hdmiInputImplMock; p_hdmiInputImplMock = nullptr;