From e515d42c5e6a3c685eab494217dcc103bda6b7d9 Mon Sep 17 00:00:00 2001 From: "jiyong.min" Date: Thu, 22 Nov 2018 09:30:01 +0900 Subject: [PATCH] Adding initial structure for unittest - It has only one testcases for libmedia-thumbnail of unittest - It would be enabled by gtest build with '--define "gtests 1"' Change-Id: I93a9b411242640823e9c8802bea31405548e05f0 --- CMakeLists.txt | 3 ++ packaging/libmedia-thumbnail.spec | 8 +++- unittest/CMakeLists.txt | 39 +++++++++++++++++++ unittest/libmedia_thumbnail_unittest.cpp | 67 ++++++++++++++++++++++++++++++++ unittest/libmedia_thumbnail_unittest.h | 26 +++++++++++++ 5 files changed, 142 insertions(+), 1 deletion(-) mode change 100755 => 100644 CMakeLists.txt create mode 100644 unittest/CMakeLists.txt create mode 100755 unittest/libmedia_thumbnail_unittest.cpp create mode 100644 unittest/libmedia_thumbnail_unittest.h diff --git a/CMakeLists.txt b/CMakeLists.txt old mode 100755 new mode 100644 index 81ab873..c27e6ec --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,3 +77,6 @@ INSTALL(TARGETS ${MEDIAHASH-LIB} LIBRARY DESTINATION ${LIB_INSTALL_DIR}) ADD_SUBDIRECTORY(server) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/media-thumbnail.h DESTINATION include/${MEDIATHUMB-LIB}) +IF(BUILD_GTESTS) + ADD_SUBDIRECTORY(unittest) +ENDIF(BUILD_GTESTS) \ No newline at end of file diff --git a/packaging/libmedia-thumbnail.spec b/packaging/libmedia-thumbnail.spec index 542655a..44ee87d 100644 --- a/packaging/libmedia-thumbnail.spec +++ b/packaging/libmedia-thumbnail.spec @@ -19,6 +19,9 @@ BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(db-util) BuildRequires: pkgconfig(mmutil-magick) +%if 0%{?gtests:1} +BuildRequires: pkgconfig(gmock) +%endif %description Description: Media thumbnail service library for multimedia applications @@ -47,7 +50,7 @@ cp %{SOURCE1001} %{SOURCE1002} %{SOURCE1003} . %build -%cmake . +%cmake . -DBUILD_GTESTS=%{?gtests:1}%{!?gtests:0} make %{?_smp_mflags} %install @@ -60,6 +63,9 @@ make %{?_smp_mflags} %manifest %{name}.manifest %defattr(-,root,root,-) %{_libdir}/*.so.* +%if 0%{?gtests:1} +%{_bindir}/gtest* +%endif #License %license LICENSE.APLv2.0 diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt new file mode 100644 index 0000000..fa13bc6 --- /dev/null +++ b/unittest/CMakeLists.txt @@ -0,0 +1,39 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(gtest-libmedia-thumbnail C CXX) + +SET(GTEST_TEST "gtest-libmedia-thumbnail") +ADD_DEFINITIONS("-DUSE_DLOG") + +SET(REQUIRES_LIST ${REQUIRES_LIST} + glib-2.0 + gio-2.0 + gmock + dlog + libmedia-utils + libtzplatform-config +) + +SET(PKG_LIBRARIES ${PKG_LIBRARIES} + "media-thumbnail" + "media-hash" +) + +INCLUDE(FindPkgConfig) +PKG_CHECK_MODULES(GTEST_TEST_PKG REQUIRED ${REQUIRES_LIST}) + +FOREACH(flag ${GTEST_TEST_PKG_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wall -fPIE") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") + +FILE(GLOB GTEST_TEST_SRCS *.cpp) +SET(GTEST_TEST_SRCS ${GTEST_TEST_SRCS}) + +ADD_EXECUTABLE(${GTEST_TEST} ${GTEST_TEST_SRCS}) +TARGET_LINK_LIBRARIES(${GTEST_TEST} ${PKG_LIBRARIES} ${pkg_LIBRARIES} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKG_LDFLAGS} -ldl) + +INSTALL(TARGETS ${GTEST_TEST} RUNTIME DESTINATION bin) diff --git a/unittest/libmedia_thumbnail_unittest.cpp b/unittest/libmedia_thumbnail_unittest.cpp new file mode 100755 index 0000000..5e5077c --- /dev/null +++ b/unittest/libmedia_thumbnail_unittest.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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 "libmedia_thumbnail_unittest.h" +#include "media-util.h" +#include "media-thumbnail.h" + +#define GTEST_IMAGE_FILE_PATH tzplatform_mkpath(TZ_SYS_BIN, "libmedia-thumbnail-unittest.jpg") + +#define THUMBNAIL_WIDTH 512 +#define THUMBNAIL_HEIGHT 288 + +using ::testing::InitGoogleTest; +using ::testing::Test; +using ::testing::TestCase; + +class libmedia_thumbnail_Test : public ::testing::Test { + protected: + void SetUp() { + std::cout << "SetUp()" << std::endl; + } + + void TearDown() { + std::cout << "TearDown()" << std::endl; + } +}; + +TEST(libmedia_thumbnail_Test, thumbnail_request_from_db_async_n) +{ + int ret = MS_MEDIA_ERR_NONE; + + ret = thumbnail_request_from_db_async(0, NULL, NULL, NULL, 5001); + EXPECT_EQ(ret, MS_MEDIA_ERR_INVALID_PARAMETER); + + ret = thumbnail_request_from_db_async(0, GTEST_IMAGE_FILE_PATH, NULL, NULL, 5001); + EXPECT_EQ(ret, MS_MEDIA_ERR_INVALID_PARAMETER); +} + +TEST(libmedia_thumbnail_Test, thumbnail_request_cancel_media_n) +{ + int ret = MS_MEDIA_ERR_NONE; + + ret = thumbnail_request_cancel_media(0); + EXPECT_EQ(ret, MS_MEDIA_ERR_INTERNAL); +} + +int main(int argc, char **argv) +{ + InitGoogleTest(&argc, argv); + + return RUN_ALL_TESTS(); +} diff --git a/unittest/libmedia_thumbnail_unittest.h b/unittest/libmedia_thumbnail_unittest.h new file mode 100644 index 0000000..6edb74d --- /dev/null +++ b/unittest/libmedia_thumbnail_unittest.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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 __LIB_MEDIA_THUMBNAIL_UNITTEST_H__ +#define __LIB_MEDIA_THUMBNAIL_UNITTEST_H__ + +#include +#include + +#undef LOG_TAG +#define LOG_TAG "GTEST_LIBMEDIA_THUMBNAIL" + +#endif /*__LIB_MEDIA_THUMBNAIL_UNITTEST_H__*/ -- 2.7.4