diff --git a/services/screenservice/test/unittest/sinkservice/screenregionmgr/engineutils/include/engine_test_utils.h b/services/screenservice/test/unittest/sinkservice/screenregionmgr/engineutils/include/engine_test_utils.h index cf63202b664f45bfff2bc90b6fa6fef99e785441..798d6637c395fbccd934dc02a971250eb977848b 100644 --- a/services/screenservice/test/unittest/sinkservice/screenregionmgr/engineutils/include/engine_test_utils.h +++ b/services/screenservice/test/unittest/sinkservice/screenregionmgr/engineutils/include/engine_test_utils.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Huawei Device Co., Ltd. + * Copyright (c) 2023-2025 Huawei Device Co., Ltd. * 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 @@ -31,13 +31,6 @@ public: void OnEngineMessage(const std::shared_ptr &message) override {} void OnEngineDataDone(const std::shared_ptr &buffer) override {} }; -class MockAVSenderAdapterCallback : public AVSenderAdapterCallback { -public: - explicit MockAVSenderAdapterCallback() {} - ~MockAVSenderAdapterCallback() {} - void OnEngineEvent(DScreenEventType event, const std::string &content) override {} - void OnEngineMessage(const std::shared_ptr &message) override {} -}; class MockIAVReceiverEngine : public IAVReceiverEngine { public: @@ -105,78 +98,6 @@ public: return false; } }; - -class MockIAVSenderEngine : public IAVSenderEngine { -public: - explicit MockIAVSenderEngine() {} - ~MockIAVSenderEngine() {} - - int32_t Initialize() override - { - return 0; - } - - int32_t Start() override - { - return 0; - } - - int32_t Stop() override - { - return 0; - } - - int32_t Release() override - { - return 0; - } - - int32_t PushData(const std::shared_ptr &buffer) override - { - return 0; - } - - int32_t SetParameter(AVTransTag tag, const std::string &value) override - { - (void) tag; - (void) value; - return 0; - } - - int32_t SendMessage(const std::shared_ptr &message) override - { - return 0; - } - - int32_t CreateControlChannel(const std::vector &dstDevIds, - const ChannelAttribute &attribution) override - { - (void) dstDevIds; - (void) attribution; - return 0; - } - - int32_t RegisterSenderCallback(const std::shared_ptr &callback) - { - (void) callback; - return 0; - } - - bool StartDumpMediaData() override - { - return false; - } - - bool StopDumpMediaData() override - { - return false; - } - - bool ReStartDumpMediaData() override - { - return false; - } -}; } // DistributedHardware } // OHOS #endif // OHOS_ENGINE_TEST_UTILS_H \ No newline at end of file diff --git a/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/include/av_sender_engine_adapter_test.h b/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/include/av_sender_engine_adapter_test.h index e870d8c3791b8c1d3c9f2f4ada6f3be1f6f24382..46704f2d1c0aa776df55332ab432b3d3b4c5946d 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/include/av_sender_engine_adapter_test.h +++ b/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/include/av_sender_engine_adapter_test.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-2024 Huawei Device Co., Ltd. + * Copyright (c) 2023-2025 Huawei Device Co., Ltd. * 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 @@ -17,9 +17,12 @@ #define OHOS_DAUDIO_AV_SENDER_ENGINE_ADAPTER_TEST_H #include +#include -#include "dscreen_errcode.h" #include "2.0/include/av_sender_engine_adapter.h" +#include "dscreen_errcode.h" +#include "i_av_receiver_engine.h" +#include "i_av_sender_engine.h" namespace OHOS { namespace DistributedHardware { @@ -32,6 +35,44 @@ public: std::shared_ptr senderAdapter_ = nullptr; }; + +class MockAVSenderEngine : public IAVSenderEngine { +public: + MOCK_METHOD(int32_t, Initialize, (), (override)); + MOCK_METHOD(int32_t, Release, (), (override)); + MOCK_METHOD(int32_t, Start, (), (override)); + MOCK_METHOD(int32_t, Stop, (), (override)); + MOCK_METHOD(int32_t, PushData, (const std::shared_ptr &buffer), (override)); + MOCK_METHOD(int32_t, SetParameter, (AVTransTag tag, const std::string &value), (override)); + MOCK_METHOD(int32_t, SendMessage, (const std::shared_ptr &message), (override)); + MOCK_METHOD(int32_t, CreateControlChannel, + (const std::vector &dstDevIds, const ChannelAttribute &attribution), (override)); + MOCK_METHOD(int32_t, RegisterSenderCallback, (const std::shared_ptr &callback), + (override)); + + bool StartDumpMediaData() override + { + return false; + } + + bool StopDumpMediaData() override + { + return false; + } + + bool ReStartDumpMediaData() override + { + return false; + } +}; + +class MockAVSenderAdapterCallback : public AVSenderAdapterCallback { +public: + explicit MockAVSenderAdapterCallback() {} + ~MockAVSenderAdapterCallback() {} + void OnEngineEvent(DScreenEventType event, const std::string &content) override {} + void OnEngineMessage(const std::shared_ptr &message) override {} +}; } // namespace DistributedHardware } // namespace OHOS #endif // OHOS_DAUDIO_AV_SENDER_ENGINE_ADAPTER_TEST_H diff --git a/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter_test.cpp b/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter_test.cpp index 4b95ed3b11360c690efa6a7935b464593f0a7ffe..f78d6bcac755c2a1d1bb546cba432dc00e9b55c8 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter_test.cpp +++ b/services/screenservice/test/unittest/sourceservice/dscreenmgr/2.0/src/av_sender_engine_adapter_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023-2024 Huawei Device Co., Ltd. + * Copyright (c) 2023-2025 Huawei Device Co., Ltd. * 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 @@ -20,7 +20,6 @@ #include "2.0/include/dscreen.h" #include "dscreen_log.h" #include "dscreen_util.h" -#include "engine_test_utils.h" using namespace testing::ext; @@ -56,35 +55,94 @@ HWTEST_F(AVSenderEngineAdapterTest, Initialize_001, TestSize.Level1) } /** - * @tc.name: Initialize_002 - * @tc.desc: Verify the Initialize function. + * @tc.name: Release_001 + * @tc.desc: Verify the Release function. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(AVSenderEngineAdapterTest, Initialize_002, TestSize.Level1) +HWTEST_F(AVSenderEngineAdapterTest, Release_001, TestSize.Level1) { - std::string peerDevId = "peerDevId"; + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, Release()).Times(1).WillOnce(testing::Return(0)); + senderAdapter_->Release(); + EXPECT_EQ(nullptr, senderAdapter_->senderEngine_); +} + +/** + * @tc.name: Release_002 + * @tc.desc: Verify the Release function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, Release_002, TestSize.Level1) +{ + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, Release()).Times(1).WillOnce(testing::Return(-1)); + senderAdapter_->Release(); + EXPECT_EQ(nullptr, senderAdapter_->senderEngine_); +} + +/** + * @tc.name: Start_001 + * @tc.desc: Verify the Start and Stop function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, Start_001, TestSize.Level1) +{ + senderAdapter_->transStartSuccess_ = false; EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->Start()); EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->Stop()); - EXPECT_EQ(DH_SUCCESS, senderAdapter_->Release()); - senderAdapter_->senderEngine_ = std::make_shared(); +} + +/** + * @tc.name: Start_002 + * @tc.desc: Verify the Start and Stop function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, Start_002, TestSize.Level1) +{ senderAdapter_->transStartSuccess_ = true; + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, Stop()).Times(1).WillOnce(testing::Return(0)); EXPECT_EQ(DH_SUCCESS, senderAdapter_->Start()); EXPECT_EQ(DH_SUCCESS, senderAdapter_->Stop()); - senderAdapter_->senderEngine_ = nullptr; - EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->Start()); } /** - * @tc.name: Start_001 + * @tc.name: Start_003 * @tc.desc: Verify the Start and Stop function. * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(AVSenderEngineAdapterTest, Start_001, TestSize.Level1) +HWTEST_F(AVSenderEngineAdapterTest, Start_003, TestSize.Level1) { - EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->Start()); - EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->Stop()); + senderAdapter_->transStartSuccess_ = false; + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, Start()).Times(1).WillOnce(testing::Return(0)); + EXPECT_CALL(*mockInstance, Stop()).Times(1).WillOnce(testing::Return(-1)); + EXPECT_EQ(DH_SUCCESS, senderAdapter_->Start()); + EXPECT_EQ(ERR_DH_AV_TRANS_STOP_FAILED, senderAdapter_->Stop()); +} + +/** + * @tc.name: Start_004 + * @tc.desc: Verify the Start and Stop function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, Start_004, TestSize.Level1) +{ + senderAdapter_->transStartSuccess_ = false; + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, Start()).Times(1).WillOnce(testing::Return(-1)); + EXPECT_EQ(ERR_DH_AV_TRANS_START_FAILED, senderAdapter_->Start()); } /** @@ -108,10 +166,27 @@ HWTEST_F(AVSenderEngineAdapterTest, SetParameter_001, TestSize.Level1) HWTEST_F(AVSenderEngineAdapterTest, SetParameter_002, TestSize.Level1) { std::string param = "param"; - senderAdapter_->senderEngine_ = std::make_shared(); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, SetParameter(testing::_, testing::_)).Times(1).WillOnce(testing::Return(0)); EXPECT_EQ(DH_SUCCESS, senderAdapter_->SetParameter(AVTransTag::VIDEO_FRAME_RATE, param)); } +/** + * @tc.name: SetParameter_003 + * @tc.desc: Verify the SetParameter function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, SetParameter_003, TestSize.Level1) +{ + std::string param = "param"; + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, SetParameter(testing::_, testing::_)).Times(1).WillOnce(testing::Return(-1)); + EXPECT_EQ(ERR_DH_AV_TRANS_SETUP_FAILED, senderAdapter_->SetParameter(AVTransTag::VIDEO_FRAME_RATE, param)); +} + /** * @tc.name: PushData_001 * @tc.desc: Verify the PushData function. @@ -122,10 +197,28 @@ HWTEST_F(AVSenderEngineAdapterTest, PushData_001, TestSize.Level1) { struct VideoData videoData; EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->PushData(videoData)); - senderAdapter_->senderEngine_ = std::make_shared(); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, PushData(testing::_)).Times(1).WillOnce(testing::Return(0)); EXPECT_EQ(DH_SUCCESS, senderAdapter_->PushData(videoData)); } +/** + * @tc.name: PushData_002 + * @tc.desc: Verify the PushData function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, PushData_002, TestSize.Level1) +{ + struct VideoData videoData; + EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->PushData(videoData)); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, PushData(testing::_)).Times(1).WillOnce(testing::Return(-1)); + EXPECT_EQ(ERR_DH_AV_TRANS_FEED_DATA_FAILED, senderAdapter_->PushData(videoData)); +} + /** * @tc.name: CreateControlChannel_001 * @tc.desc: Verify the CreateControlChannel function. @@ -150,7 +243,25 @@ HWTEST_F(AVSenderEngineAdapterTest, CreateControlChannel_002, TestSize.Level1) { std::string peerDevId = "peerDevId"; EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->CreateControlChannel(peerDevId)); - senderAdapter_->senderEngine_ = std::make_shared(); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, CreateControlChannel(testing::_, testing::_)).Times(1).WillOnce(testing::Return(0)); + EXPECT_EQ(ERR_DH_AV_TRANS_CREATE_CHANNEL_FAILED, senderAdapter_->CreateControlChannel(peerDevId)); +} + +/** + * @tc.name: CreateControlChannel_003 + * @tc.desc: Verify the CreateControlChannel function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, CreateControlChannel_003, TestSize.Level1) +{ + std::string peerDevId = "peerDevId"; + EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->CreateControlChannel(peerDevId)); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, CreateControlChannel(testing::_, testing::_)).Times(1).WillOnce(testing::Return(-1)); EXPECT_EQ(ERR_DH_AV_TRANS_CREATE_CHANNEL_FAILED, senderAdapter_->CreateControlChannel(peerDevId)); } @@ -167,10 +278,31 @@ HWTEST_F(AVSenderEngineAdapterTest, SendMessageToRemote_001, TestSize.Level1) std::string dstDevId = "dstDevId"; auto message = std::make_shared(type, content, dstDevId); EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->SendMessageToRemote(message)); - senderAdapter_->senderEngine_ = std::make_shared(); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, SendMessage(testing::_)).Times(1).WillOnce(testing::Return(0)); EXPECT_EQ(DH_SUCCESS, senderAdapter_->SendMessageToRemote(message)); } +/** + * @tc.name: SendMessageToRemote_002 + * @tc.desc: Verify the SendMessageToRemote function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(AVSenderEngineAdapterTest, SendMessageToRemote_002, TestSize.Level1) +{ + uint32_t type = 0; + std::string content = "content"; + std::string dstDevId = "dstDevId"; + auto message = std::make_shared(type, content, dstDevId); + EXPECT_EQ(ERR_DH_AV_TRANS_NULL_VALUE, senderAdapter_->SendMessageToRemote(message)); + std::shared_ptr mockInstance = std::make_shared(); + senderAdapter_->senderEngine_ = mockInstance; + EXPECT_CALL(*mockInstance, SendMessage(testing::_)).Times(1).WillOnce(testing::Return(-1)); + EXPECT_EQ(ERR_DH_AV_TRANS_SEND_MSG_FAILED, senderAdapter_->SendMessageToRemote(message)); +} + /** * @tc.name: RegisterAdapterCallback_001 * @tc.desc: Verify the RegisterAdapterCallback function. diff --git a/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn b/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn index 6ff4d63e4f8a51934f9c29eab69e516aa89c81ea..3724e5b53c59b871976fa58a73156b51a891aba8 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn +++ b/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn @@ -1,4 +1,4 @@ -# Copyright (c) 2022-2024 Huawei Device Co., Ltd. +# Copyright (c) 2022-2025 Huawei Device Co., Ltd. # 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 @@ -37,17 +37,11 @@ config("module_private_config") { "${services_path}/screentransport/screensourcetrans/include", "${services_path}/screenservice/sinkservice/screenregionmgr", "${services_path}/screenservice/test/unittest/sourceservice/dscreenmgr", - "${services_path}/screenservice/test/unittest/sinkservice/screenregionmgr/engineutils/include", ] } ## UnitTest DscreenMgrTest ohos_unittest("DscreenMgrTest") { - sanitize = { - cfi = true - cfi_cross_dso = true - debug = false - } module_out_path = module_out_path sources = [ diff --git a/services/screenservice/test/unittest/sourceservice/dscreenservice/src/dscreen_source_service_test.cpp b/services/screenservice/test/unittest/sourceservice/dscreenservice/src/dscreen_source_service_test.cpp index c85fadb2b2681ab1631aaf2eaa24e77820839cf3..38f28af5a53c32fd8d953e0f017c89d7e0b3404e 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenservice/src/dscreen_source_service_test.cpp +++ b/services/screenservice/test/unittest/sourceservice/dscreenservice/src/dscreen_source_service_test.cpp @@ -50,34 +50,34 @@ int32_t V2_0::DScreenManager::EnableDistributedScreen(const std::string &devId, return g_mockEnableDistributedScreenReturnInt32Value; } -int32_t V1_0::DScreenManager::DScreenManager::DisableDistributedScreen(const std::string &devId, +int32_t V1_0::DScreenManager::DisableDistributedScreen(const std::string &devId, const std::string &dhId, const std::string &reqId) { return g_mockUnregisterDistributedHardwareV1ReturnInt32Value; } -int32_t V2_0::DScreenManager::DScreenManager::DisableDistributedScreen(const std::string &devId, +int32_t V2_0::DScreenManager::DisableDistributedScreen(const std::string &devId, const std::string &dhId, const std::string &reqId) { return g_mockUnregisterDistributedHardwareV2ReturnInt32Value; } -int32_t V1_0::DScreenManager::DScreenManager::Init() +int32_t V1_0::DScreenManager::Init() { return g_mockInitV1ReturnInt32Value; } -int32_t V2_0::DScreenManager::DScreenManager::Initialize() +int32_t V2_0::DScreenManager::Initialize() { return g_mockInitializeV2ReturnInt32Value; } -int32_t V1_0::DScreenManager::DScreenManager::UnInit() +int32_t V1_0::DScreenManager::UnInit() { return g_mockUnInitV1ReturnInt32Value; } -int32_t V2_0::DScreenManager::DScreenManager::Release() +int32_t V2_0::DScreenManager::Release() { return g_mockReleaseV2ReturnInt32Value; } diff --git a/services/screentransport/test/unittest/screensourceprocessor/src/image_source_encoder_test.cpp b/services/screentransport/test/unittest/screensourceprocessor/src/image_source_encoder_test.cpp index 84fa854dd6d619978637f514dde943520e972d13..c38205d9ea6ab3d0b4cd1dbee2d46152e2bfdc66 100644 --- a/services/screentransport/test/unittest/screensourceprocessor/src/image_source_encoder_test.cpp +++ b/services/screentransport/test/unittest/screensourceprocessor/src/image_source_encoder_test.cpp @@ -15,6 +15,7 @@ #include "image_source_encoder_test.h" #include "buffer/avsharedmemorybase.h" +#include "iconsumer_surface.h" #include "screen_source_trans.h" using namespace testing::ext; @@ -302,7 +303,6 @@ HWTEST_F(ImageSourceEncoderTest, SetEncoderFormat_004, TestSize.Level1) EXPECT_EQ(DH_SUCCESS, actual); } - /** * @tc.name: SetEncoderFormat_007 * @tc.desc: Verify the SetEncoderFormat function. @@ -321,6 +321,23 @@ HWTEST_F(ImageSourceEncoderTest, SetEncoderFormat_007, TestSize.Level1) EXPECT_EQ(ERR_DH_SCREEN_TRANS_ILLEGAL_PARAM, actual); } +/** + * @tc.name: GetInputSurface_001 + * @tc.desc: Verify the GetInputSurface function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(ImageSourceEncoderTest, GetInputSurface_001, TestSize.Level1) +{ + encoder->configParam_.SetCodecType(VIDEO_CODEC_TYPE_VIDEO_H265); + encoder->configParam_.SetVideoWidth(DSCREEN_MAX_VIDEO_DATA_WIDTH); + encoder->configParam_.SetVideoHeight(DSCREEN_MAX_VIDEO_DATA_HEIGHT); + encoder->configParam_.SetCodecType(VIDEO_CODEC_TYPE_VIDEO_MPEG4); + encoder->configParam_.SetPartialRefreshFlag(true); + encoder->producerSurface_ = IConsumerSurface::Create(); + EXPECT_EQ(encoder->GetInputSurface(), encoder->producerSurface_); +} + /** * @tc.name: FeedEncoderData_001 * @tc.desc: Verify the FeedEncoderData function.