From bac9b71c15fb5fe8869bc45aa4f8dd55e28ba090 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 11 Aug 2022 10:20:22 +0900 Subject: [PATCH] Fix unit tests The aul_comp_context and aul_comp_info APIs were refactored using C++ language. When calling the aul_comp_context_destroy() and the aul_comp_info_destroy(), the free() is not called to release. This patch adds fake functions to avoid crash issues. Change-Id: Id4aed990f86c2e7f9f61e9e056c77390ccfda4d4 Signed-off-by: Hwankyu Jhun --- mock/aul_mock.cc | 89 ++++++++++------------- mock/aul_mock.h | 4 + test/unit_tests/test_component_context.cc | 16 ++++ test/unit_tests/test_component_info.cc | 16 ++++ 4 files changed, 74 insertions(+), 51 deletions(-) diff --git a/mock/aul_mock.cc b/mock/aul_mock.cc index b8c9c5b..cf43b32 100644 --- a/mock/aul_mock.cc +++ b/mock/aul_mock.cc @@ -23,139 +23,126 @@ #include "test_fixture.h" extern "C" int aul_comp_context_foreach_comp_context( - aul_comp_context_cb callback, void *user_data) -{ + aul_comp_context_cb callback, void* user_data) { return MOCK_HOOK_P2(AulMock, aul_comp_context_foreach_comp_context, callback, user_data); } -extern "C" int aul_comp_context_create(const char *comp_id, - aul_comp_context_h *handle) -{ +extern "C" int aul_comp_context_create(const char* comp_id, + aul_comp_context_h* handle) { return MOCK_HOOK_P2(AulMock, aul_comp_context_create, comp_id, handle); } extern "C" int aul_comp_context_is_running(aul_comp_context_h handle, - bool *running) -{ + bool* running) { return MOCK_HOOK_P2(AulMock, aul_comp_context_is_running, handle, running); } -extern "C" int aul_comp_info_create(const char *comp_id, - aul_comp_info_h *handle) -{ +extern "C" int aul_comp_info_create(const char* comp_id, + aul_comp_info_h* handle) { return MOCK_HOOK_P2(AulMock, aul_comp_info_create, comp_id, handle); } -extern "C" int aul_comp_context_resume(aul_comp_context_h handle) -{ +extern "C" int aul_comp_context_resume(aul_comp_context_h handle) { return MOCK_HOOK_P1(AulMock, aul_comp_context_resume, handle); } -extern "C" int aul_comp_context_terminate_bg_comp(aul_comp_context_h handle) -{ +extern "C" int aul_comp_context_terminate_bg_comp(aul_comp_context_h handle) { return MOCK_HOOK_P1(AulMock, aul_comp_context_terminate_bg_comp, handle); } extern "C" int aul_comp_context_get_app_id(aul_comp_context_h context, - const char **app_id) -{ + const char** app_id) { return MOCK_HOOK_P2(AulMock, aul_comp_context_get_app_id, context, app_id); } extern "C" int aul_comp_context_get_comp_id(aul_comp_context_h context, - const char **comp_id) -{ + const char** comp_id) { return MOCK_HOOK_P2(AulMock, aul_comp_context_get_comp_id, context, comp_id); } extern "C" int aul_comp_context_get_instance_id(aul_comp_context_h context, - const char **instance_id) -{ + const char** instance_id) { return MOCK_HOOK_P2(AulMock, aul_comp_context_get_instance_id, context, instance_id); } extern "C" int aul_comp_context_get_status(aul_comp_context_h context, - int *status) -{ + int* status) { return MOCK_HOOK_P2(AulMock, aul_comp_context_get_status, context, status); } extern "C" int aul_comp_context_is_sub_comp(aul_comp_context_h context, - bool *is_sub_comp) -{ + bool* is_sub_comp) { return MOCK_HOOK_P2(AulMock, aul_comp_context_is_sub_comp, context, is_sub_comp); } extern "C" int aul_comp_context_clone(aul_comp_context_h handle, - aul_comp_context_h *clone) -{ + aul_comp_context_h* clone) { return MOCK_HOOK_P2(AulMock, aul_comp_context_clone, handle, clone); } extern "C" int aul_comp_info_get_app_id(aul_comp_info_h handle, - const char **app_id) -{ + const char** app_id) { return MOCK_HOOK_P2(AulMock, aul_comp_info_get_app_id, handle, app_id); } -extern "C" int aul_comp_info_get_comp_id( - aul_comp_info_h handle, const char **comp_id) -{ +extern "C" int aul_comp_info_get_comp_id(aul_comp_info_h handle, + const char** comp_id) { return MOCK_HOOK_P2(AulMock, aul_comp_info_get_comp_id, handle, comp_id); } -extern "C" int aul_comp_info_get_type(aul_comp_info_h handle, const char **type) -{ +extern "C" int aul_comp_info_get_type(aul_comp_info_h handle, + const char** type) { return MOCK_HOOK_P2(AulMock, aul_comp_info_get_type, handle, type); } extern "C" int aul_comp_info_is_icon_display(aul_comp_info_h handle, - bool *icon_display) -{ - return MOCK_HOOK_P2(AulMock, - aul_comp_info_is_icon_display, handle, icon_display); + bool* icon_display) { + return MOCK_HOOK_P2(AulMock, aul_comp_info_is_icon_display, handle, + icon_display); } extern "C" int aul_comp_info_is_taskmanage(aul_comp_info_h handle, - bool *taskmanage) -{ + bool* taskmanage) { return MOCK_HOOK_P2(AulMock, aul_comp_info_is_taskmanage, handle, taskmanage); } -extern "C" int aul_comp_info_get_icon(aul_comp_info_h handle, const char **icon) -{ +extern "C" int aul_comp_info_get_icon(aul_comp_info_h handle, + const char** icon) { return MOCK_HOOK_P2(AulMock, aul_comp_info_get_icon, handle, icon); } extern "C" int aul_comp_info_get_label(aul_comp_info_h handle, - const char **label) -{ + const char** label) { return MOCK_HOOK_P2(AulMock, aul_comp_info_get_label, handle, label); } extern "C" int aul_comp_info_get_localed_label(aul_comp_info_h handle, - const char *locale, const char **label) -{ + const char* locale, const char** label) { return MOCK_HOOK_P3(AulMock, aul_comp_info_get_localed_label, handle, locale, label); } extern "C" int aul_comp_info_clone(aul_comp_info_h handle, - aul_comp_info_h *clone) -{ + aul_comp_info_h* clone) { return MOCK_HOOK_P2(AulMock, aul_comp_info_clone, handle, clone); } -extern "C" int aul_comp_context_pause(aul_comp_context_h handle) -{ +extern "C" int aul_comp_context_pause(aul_comp_context_h handle) { return MOCK_HOOK_P1(AulMock, aul_comp_context_pause, handle); } -extern "C" int aul_comp_context_terminate(aul_comp_context_h handle) -{ +extern "C" int aul_comp_context_terminate(aul_comp_context_h handle) { return MOCK_HOOK_P1(AulMock, aul_comp_context_terminate, handle); } + +extern "C" int aul_comp_context_destroy(aul_comp_context_h handle) { + return MOCK_HOOK_P1(AulMock, aul_comp_context_destroy, handle); +} + +extern "C" int aul_comp_info_destroy(aul_comp_info_h handle) { + return MOCK_HOOK_P1(AulMock, aul_comp_info_destroy, handle); +} diff --git a/mock/aul_mock.h b/mock/aul_mock.h index a47b1a4..9df1b45 100644 --- a/mock/aul_mock.h +++ b/mock/aul_mock.h @@ -72,6 +72,10 @@ class AulMock : public virtual ModuleMock { int (aul_comp_context_h)); MOCK_METHOD1(aul_comp_context_terminate, int (aul_comp_context_h)); + MOCK_METHOD1(aul_comp_context_destroy, + int (aul_comp_context_h)); + MOCK_METHOD1(aul_comp_info_destroy, + int (aul_comp_info_h)); }; #endif // UNIT_TESTS_MOCK_AUL_MOCK_H_ diff --git a/test/unit_tests/test_component_context.cc b/test/unit_tests/test_component_context.cc index 6685109..88019db 100644 --- a/test/unit_tests/test_component_context.cc +++ b/test/unit_tests/test_component_context.cc @@ -61,6 +61,14 @@ static int __fake_aul_comp_context_create(const char* comp_id, return AUL_R_OK; } +static int __fake_aul_comp_context_destroy(aul_comp_context_h handle) { + if (handle == nullptr) + return AUL_R_EINVAL; + + free(handle); + return AUL_R_OK; +} + static int __fake_aul_comp_context_get_app_id(aul_comp_context_h handle, const char** app_id) { *app_id = "org.tizen.helloworld"; @@ -121,6 +129,10 @@ class ComponentContextTest : public TestFixture { virtual void TearDown() { if (handle_ != nullptr) { + EXPECT_CALL(GetMock(), + aul_comp_context_destroy(_)). + WillOnce(Invoke(__fake_aul_comp_context_destroy)); + component_context_destroy(handle_); handle_ = nullptr; } @@ -139,6 +151,10 @@ class ComponentContextTest : public TestFixture { }; TEST_F(ComponentContextTest, component_context_destroy_Positive) { + EXPECT_CALL(GetMock(), + aul_comp_context_destroy(_)). + WillOnce(Invoke(__fake_aul_comp_context_destroy)); + component_context_h handle = GetHandle(); int ret = component_context_destroy(handle); EXPECT_EQ(ret, COMPONENT_MANAGER_ERROR_NONE); diff --git a/test/unit_tests/test_component_info.cc b/test/unit_tests/test_component_info.cc index 4afdc35..137a42b 100644 --- a/test/unit_tests/test_component_info.cc +++ b/test/unit_tests/test_component_info.cc @@ -65,6 +65,14 @@ static int __fake_aul_comp_info_create(const char* comp_id, return AUL_R_OK; } +static int __fake_aul_comp_info_destroy(aul_comp_info_h handle) { + if (handle == nullptr) + return AUL_R_EINVAL; + + free(handle); + return AUL_R_OK; +} + static int __fake_aul_comp_info_get_app_id(aul_comp_info_h handle, const char** appid) { *appid = "org.tizen.helloworld"; @@ -138,6 +146,10 @@ class ComponentInfoTest : public TestFixture { virtual void TearDown() { if (handle_ != nullptr) { + EXPECT_CALL(GetMock(), + aul_comp_info_destroy(_)). + WillOnce(Invoke(__fake_aul_comp_info_destroy)); + component_info_destroy(handle_); handle_ = nullptr; } @@ -176,6 +188,10 @@ TEST_F(ComponentInfoTest, component_info_create_Negative) { TEST_F(ComponentInfoTest, component_info_destroy_Positive) { component_info_h handle = GetHandle(); + EXPECT_CALL(GetMock(), + aul_comp_info_destroy(_)). + WillOnce(Invoke(__fake_aul_comp_info_destroy)); + int ret = component_info_destroy(handle); EXPECT_EQ(ret, COMPONENT_MANAGER_ERROR_NONE); SetHandle(nullptr); -- 2.34.1