Adding initial structure for unittest 79/193379/11
authorjiyong.min <jiyong.min@samsung.com>
Tue, 20 Nov 2018 03:30:13 +0000 (12:30 +0900)
committerhj kim <backto.kim@samsung.com>
Wed, 28 Nov 2018 09:03:45 +0000 (09:03 +0000)
- It has testcase for libmedia_service of unittest
- It would be enabled by gtest build with '--define "gtests 1"'
- It would be executed by user mode

Change-Id: If9b002fa6505279295b94d5bf4876e876fe00575

CMakeLists.txt [changed mode: 0755->0644]
packaging/libmedia-service.spec
unittest/CMakeLists.txt [new file with mode: 0644]
unittest/libmedia_service_unittest.cpp [new file with mode: 0644]
unittest/libmedia_service_unittest.h [new file with mode: 0644]

old mode 100755 (executable)
new mode 100644 (file)
index 11c81ea..35d3a2a
@@ -78,13 +78,16 @@ CONFIGURE_FILE(libmedia-service.pc.in libmedia-service.pc @ONLY)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libmedia-service.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
 
 #ADD_SUBDIRECTORY(test)
+IF(BUILD_GTESTS)
+       ADD_SUBDIRECTORY(unittest)
+ENDIF(BUILD_GTESTS)
 
 LINK_DIRECTORIES(${LIB_INSTALL_DIR})
 
 ADD_LIBRARY(${MEDIASERVICE-HASH-LIB} SHARED ${HASH_SRCS})
 SET_TARGET_PROPERTIES(${MEDIASERVICE-HASH-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
 SET_TARGET_PROPERTIES(${MEDIASERVICE-HASH-LIB} PROPERTIES VERSION ${VERSION})
-ADD_LIBRARY(${MEDIASERVICE-LIB} SHARED ${SRCS}) 
+ADD_LIBRARY(${MEDIASERVICE-LIB} SHARED ${SRCS})
 TARGET_LINK_LIBRARIES(${MEDIASERVICE-LIB} ${pkgs_LDFLAGS} ${MEDIASERVICE-HASH-LIB})
 SET_TARGET_PROPERTIES(${MEDIASERVICE-LIB} PROPERTIES SOVERSION ${VERSION_MAJOR})
 SET_TARGET_PROPERTIES(${MEDIASERVICE-LIB} PROPERTIES VERSION ${VERSION})
index c48002b..ad0e8cf 100644 (file)
@@ -23,6 +23,9 @@ BuildRequires:  pkgconfig(uuid)
 BuildRequires:  pkgconfig(libtzplatform-config)
 BuildRequires:  pkgconfig(capi-system-info)
 BuildRequires: pkgconfig(mmutil-magick)
+%if 0%{?gtests:1}
+BuildRequires:  pkgconfig(gmock)
+%endif
 
 %description
 This package is a library that provides the media information service for the multimedia applications.
@@ -41,7 +44,7 @@ cp %{SOURCE1001} .
 
 %build
 export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE -DSYSCONFDIR=\\\"%{_sysconfdir}\\\""
-%cmake .
+%cmake . -DBUILD_GTESTS=%{?gtests:1}%{!?gtests:0}
 make %{?jobs:-j%jobs}
 
 %install
@@ -58,7 +61,9 @@ rm -rf %{buildroot}
 %{_libdir}/libmedia-svc-hash.so.*
 %{_libdir}/libmedia-content-plugin.so
 %{_libdir}/libmedia-content-plugin.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 (file)
index 0000000..8e217cb
--- /dev/null
@@ -0,0 +1,37 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(gtest-libmedia-service C CXX)
+
+SET(GTEST_TEST "gtest-libmedia-service")
+ADD_DEFINITIONS("-DUSE_DLOG")
+
+SET(REQUIRES_LIST ${REQUIRES_LIST}
+       glib-2.0
+       gio-2.0
+       gmock
+       dlog
+       libmedia-utils
+)
+
+SET(PKG_LIBRARIES ${PKG_LIBRARIES}
+       "media-service"
+)
+
+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} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKG_LDFLAGS} -ldl)
+
+INSTALL(TARGETS ${GTEST_TEST} RUNTIME DESTINATION bin)
diff --git a/unittest/libmedia_service_unittest.cpp b/unittest/libmedia_service_unittest.cpp
new file mode 100644 (file)
index 0000000..7a11bd0
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * 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 "libmedia_service_unittest.h"
+#include "media-util.h"
+#include "media-svc.h"
+
+using ::testing::InitGoogleTest;
+using ::testing::Test;
+using ::testing::TestCase;
+
+class libmedia_service_Test : public ::testing::Test {
+       protected:
+               void SetUp() {
+                       std::cout << "SetUp()" << std::endl;
+               }
+
+               void TearDown() {
+                       std::cout << "TearDown()" << std::endl;
+               }
+};
+
+TEST(libmedia_service_Test, media_svc_connect_disconnect_p)
+{
+       MediaSvcHandle *handle = NULL;
+       int ret = MS_MEDIA_ERR_NONE;
+
+       ret = media_svc_connect(&handle, getuid(), false);
+       EXPECT_EQ(ret, MS_MEDIA_ERR_NONE);
+
+       ret = media_svc_disconnect(handle);
+       EXPECT_EQ(ret, MS_MEDIA_ERR_NONE);
+}
+
+int main(int argc, char **argv)
+{
+       InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
diff --git a/unittest/libmedia_service_unittest.h b/unittest/libmedia_service_unittest.h
new file mode 100644 (file)
index 0000000..3d29651
--- /dev/null
@@ -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_SERVICE_UNITTEST_H__
+#define __LIB_MEDIA_SERVICE_UNITTEST_H__
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#undef LOG_TAG
+#define LOG_TAG                "GTEST_LIBMEDIA_SERVICE"
+
+#endif /*__LIB_MM_UTILITY_UNITTEST_H__*/