From c03e35ffddb43c7c6720c09dbd8e1a2cccb22d0c Mon Sep 17 00:00:00 2001 From: gaoqiang_strong Date: Thu, 1 Dec 2022 16:27:21 +0800 Subject: [PATCH] add ut Signed-off-by: gaoqiang_strong --- .../screentransport/test/unittest/BUILD.gn | 1 + .../unittest/screentranstestutils/BUILD.gn | 82 +++++++++ .../include/screen_callback_test.h | 37 ++++ .../src/screen_callback_test.cpp | 172 ++++++++++++++++++ 4 files changed, 292 insertions(+) create mode 100644 services/screentransport/test/unittest/screentranstestutils/BUILD.gn create mode 100644 services/screentransport/test/unittest/screentranstestutils/include/screen_callback_test.h create mode 100644 services/screentransport/test/unittest/screentranstestutils/src/screen_callback_test.cpp diff --git a/services/screentransport/test/unittest/BUILD.gn b/services/screentransport/test/unittest/BUILD.gn index 121e52c9..906482e6 100644 --- a/services/screentransport/test/unittest/BUILD.gn +++ b/services/screentransport/test/unittest/BUILD.gn @@ -19,5 +19,6 @@ group("screen_transport_test") { "screensinktrans:sink_trans_test", "screensourceprocessor:source_processor_test", "screensourcetrans:source_trans_test", + "screentranstestutils:screen_callback_test", ] } diff --git a/services/screentransport/test/unittest/screentranstestutils/BUILD.gn b/services/screentransport/test/unittest/screentranstestutils/BUILD.gn new file mode 100644 index 00000000..a9e7fafe --- /dev/null +++ b/services/screentransport/test/unittest/screentranstestutils/BUILD.gn @@ -0,0 +1,82 @@ +# Copyright (c) 2022 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 +# +# 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. + +import("//build/test.gni") +import( + "//foundation/distributedhardware/distributed_screen/distributedscreen.gni") + +module_out_path = "distributed_screen/screen_callback_test" + +config("module_private_config") { + visibility = [ ":*" ] + include_dirs = [ + "//third_party/json/include", + "${fwk_common_path}/log/include", + "${fwk_common_path}/utils/include", + "${fwk_utils_path}/include/", + "${fwk_utils_path}/include/log", + ] + + include_dirs += [ + "./include", + "${services_path}/screentransport/test/unittest/screentranstestutils/include", + "${common_path}/include", + "${services_path}/common/databuffer/include", + "${services_path}/common/screen_channel/include", + "${services_path}/common/utils/include", + "${services_path}/screentransport/screensinktrans/include", + "${services_path}/screentransport/screensinkprocessor/include", + "${services_path}/screentransport/test/unittest/screensourcetrans/include", + "${services_path}/screentransport/screensourcetrans/include", + "${services_path}/screentransport/screendatachannel/include", + "${services_path}/screentransport/screensourceprocessor/include", + "${services_path}/screentransport/screensourceprocessor/encoder/include", + "${services_path}/screentransport/screensinkprocessor/include", + "${services_path}/screentransport/screensinkprocessor/decoder/include", + "${services_path}/softbusadapter/include", + "//drivers/peripheral/display/interfaces/include", + "//drivers/peripheral/base", + "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include", + "//foundation/graphic/graphic_2d/interfaces/inner_api/surface", + "//foundation/graphic/graphic_2d/interfaces/inner_api/common", + "//foundation/graphic/graphic_2d/utils/buffer_handle/export", + "//foundation/multimedia/player_framework/interfaces/inner_api/native", + "//foundation/communication/dsoftbus/interfaces/kits/transport", + ] +} + +## UnitTest screen_callback_test +ohos_unittest("ScreenCallbackTest") { + module_out_path = module_out_path + + sources = [ "${services_path}/screentransport/test/unittest/screentranstestutils/src/screen_callback_test.cpp" ] + + configs = [ ":module_private_config" ] + + deps = [ + "${services_path}/screentransport/screensinktrans:distributed_screen_sinktrans", + "${services_path}/screentransport/screensourcetrans:distributed_screen_sourcetrans", + "//third_party/googletest:gmock", + "//third_party/googletest:gtest_main", + ] + + external_deps = [ + "c_utils:utils", + "multimedia_player_framework:media_client", + ] +} + +group("screen_callback_test") { + testonly = true + deps = [ ":ScreenCallbackTest" ] +} diff --git a/services/screentransport/test/unittest/screentranstestutils/include/screen_callback_test.h b/services/screentransport/test/unittest/screentranstestutils/include/screen_callback_test.h new file mode 100644 index 00000000..75fe499a --- /dev/null +++ b/services/screentransport/test/unittest/screentranstestutils/include/screen_callback_test.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2022 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 + * + * 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. + */ + +#ifndef OHOS_SCREEN_CALLBACK_TEST_H +#define OHOS_SCREEN_CALLBACK_TEST_H + +#include +#include "screen_source_trans.h" +#include "screen_sink_trans.h" + +namespace OHOS { +namespace DistributedHardware { +class ScreenCallbackTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); + std::shared_ptr sourceTrans = nullptr; + std::shared_ptr sinkTrans = nullptr; +}; + +} // namespace DistributedHardware +} // namespace OHOS +#endif \ No newline at end of file diff --git a/services/screentransport/test/unittest/screentranstestutils/src/screen_callback_test.cpp b/services/screentransport/test/unittest/screentranstestutils/src/screen_callback_test.cpp new file mode 100644 index 00000000..a399a629 --- /dev/null +++ b/services/screentransport/test/unittest/screentranstestutils/src/screen_callback_test.cpp @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2022 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 + * + * 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 + +#include "media_errors.h" +#include "avcodec_common.h" +#include "format.h" + +#define private public +#include "dscreen_constants.h" +#include "dscreen_errcode.h" +#include "screen_callback_test.h" +#include "screentrans_test_utils.h" +#include "iimage_source_processor_listener.h" +#include "image_source_encoder.h" +#include "iscreen_channel_listener.h" +#include "screen_data_channel_impl.h" +#include "image_sink_decoder.h" +#include "image_decoder_callback.h" +#undef private +using namespace testing::ext; + +namespace OHOS { +namespace DistributedHardware { +void ScreenCallbackTest::SetUpTestCase(void) {} + +void ScreenCallbackTest::TearDownTestCase(void) {} + +void ScreenCallbackTest::SetUp(void) +{ + sourceTrans = std::make_shared(); + sinkTrans = std::make_shared(); +} + +void ScreenCallbackTest::TearDown(void) {} + +/** + * @tc.name: RegisterStateCallback_003 + * @tc.desc: Verify the RegisterStateCallback function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(ScreenCallbackTest, RegisterStateCallback_003, TestSize.Level1) +{ + std::shared_ptr callback = std::make_shared(); + int32_t actual = sourceTrans->RegisterStateCallback(callback); + + std::string peerDevId = "peerDevId"; + std::shared_ptr screenChannel = std::make_shared(peerDevId); + std::shared_ptr listener = std::make_shared(); + screenChannel->channelListener_ = listener; + int32_t sessionId = 0; + int32_t result = 0; + screenChannel->OnSessionOpened(sessionId, result); + screenChannel->OnSessionClosed(sessionId); + const void *data = nullptr; + uint32_t dataLen = 0; + screenChannel->OnBytesReceived(sessionId, data, dataLen); + const StreamData *streamData = nullptr; + const StreamData *ext = nullptr; + const StreamFrameInfo *param = nullptr; + screenChannel->OnStreamReceived(sessionId, streamData, ext, param); + + EXPECT_EQ(DH_SUCCESS, actual); +} + +/** + * @tc.name: RegisterStateCallback_004 + * @tc.desc: Verify the RegisterStateCallback function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(ScreenCallbackTest, RegisterStateCallback_004, TestSize.Level1) +{ + std::shared_ptr callback = std::make_shared(); + int32_t actual = sourceTrans->RegisterStateCallback(callback); + + std::shared_ptr listener = std::make_shared(); + std::shared_ptr encoder = std::make_shared(listener); + std::shared_ptr encoderCallback = std::make_shared(encoder); + Media::AVCodecErrorType errorType = Media::AVCODEC_ERROR_INTERNAL; + int32_t errorCode = 0; + encoderCallback->OnError(errorType, errorCode); + uint32_t index = 0; + Media::AVCodecBufferInfo info; + info.presentationTimeUs = 0; + info.size = 0; + info.offset = 0; + Media::AVCodecBufferFlag flag = Media::AVCODEC_BUFFER_FLAG_NONE; + encoderCallback->OnOutputBufferAvailable(index, info, flag); + encoderCallback->OnInputBufferAvailable(index); + Media::Format format; + encoderCallback->OnOutputFormatChanged(format); + + EXPECT_EQ(DH_SUCCESS, actual); +} + +/** + * @tc.name: RegisterStateCallback_005 + * @tc.desc: Verify the RegisterStateCallback function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(ScreenCallbackTest, RegisterStateCallback_005, TestSize.Level1) +{ + std::shared_ptr callback = std::make_shared(); + int32_t actual = sinkTrans->RegisterStateCallback(callback); + + std::shared_ptr listener = std::make_shared(); + std::shared_ptr decoder = std::make_shared(listener); + std::shared_ptr decoderCallback = std::make_shared(decoder); + + Media::AVCodecErrorType errorType = Media::AVCODEC_ERROR_INTERNAL; + int32_t errorCode = 0; + decoderCallback->OnError(errorType, errorCode); + uint32_t index = 0; + Media::AVCodecBufferInfo info; + info.presentationTimeUs = 0; + info.size = 0; + info.offset = 0; + Media::AVCodecBufferFlag flag = Media::AVCODEC_BUFFER_FLAG_NONE; + decoderCallback->OnOutputBufferAvailable(index, info, flag); + decoderCallback->OnInputBufferAvailable(index); + Media::Format format; + decoderCallback->OnOutputFormatChanged(format); + + EXPECT_EQ(DH_SUCCESS, actual); +} + +/** + * @tc.name: RegisterStateCallback_006 + * @tc.desc: Verify the RegisterStateCallback function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ +HWTEST_F(ScreenCallbackTest, RegisterStateCallback_006, TestSize.Level1) +{ + std::shared_ptr callback = std::make_shared(); + int32_t actual = sinkTrans->RegisterStateCallback(callback); + + std::string peerDevId = "peerDevId"; + std::shared_ptr screenChannel = std::make_shared(peerDevId); + std::shared_ptr listener = std::make_shared(); + screenChannel->channelListener_ = listener; + int32_t sessionId = 0; + int32_t result = 0; + screenChannel->OnSessionOpened(sessionId, result); + screenChannel->OnSessionClosed(sessionId); + const void *data = nullptr; + uint32_t dataLen = 0; + screenChannel->OnBytesReceived(sessionId, data, dataLen); + const StreamData *streamData = nullptr; + const StreamData *ext = nullptr; + const StreamFrameInfo *param = nullptr; + screenChannel->OnStreamReceived(sessionId, streamData, ext, param); + + EXPECT_EQ(DH_SUCCESS, actual); +} +} // namespace DistributedHardware +} // namespace OHOS \ No newline at end of file -- Gitee