[0.2.91] add initial unittest structure 34/193634/6 accepted/tizen/unified/20181126.062126 submit/tizen/20181123.080458
authorEunhae Choi <eunhae1.choi@samsung.com>
Thu, 22 Nov 2018 11:38:53 +0000 (20:38 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Fri, 23 Nov 2018 03:42:37 +0000 (12:42 +0900)
- this unit test will check legacy player function
  and muse player internal function.

Change-Id: I7f373f3cccde6ce1bfccbd36fe2e3ac93b46f2fe

CMakeLists.txt
legacy/CMakeLists.txt
legacy/include/legacy_player_private.h
muse/CMakeLists.txt
muse/include/muse_player.h
muse/test/CMakeLists.txt
packaging/mmsvc-player.spec
unittest/CMakeLists.txt [new file with mode: 0644]
unittest/gtest_legacy_player.cpp [new file with mode: 0644]
unittest/gtest_legacy_player.h [new file with mode: 0644]
unittest/unittest.cpp [new file with mode: 0644]

index 1c27d20..87e25ff 100644 (file)
@@ -24,6 +24,10 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTAL
 ADD_SUBDIRECTORY(legacy)
 ADD_SUBDIRECTORY(muse)
 
+IF(BUILD_TESTS)
+ADD_SUBDIRECTORY(unittest)
+ENDIF(BUILD_TESTS)
+
 IF(UNIX)
 
 ADD_CUSTOM_TARGET (distclean @echo cleaning for source distribution)
index 7841f53..3bcba47 100644 (file)
@@ -6,9 +6,9 @@ SET(submodule "player")
 # for package file
 SET(dependents "dlog mm-player capi-base-common capi-media-tool libtbm")
 
-SET(fw_name "${service}-${submodule}")
+SET(LEGACY_PLAYER "${service}-${submodule}")
 
-PROJECT(${fw_name})
+PROJECT(${LEGACY_PLAYER})
 
 SET(CMAKE_INSTALL_PREFIX /usr)
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
@@ -17,8 +17,8 @@ SET(INC_DIR include)
 INCLUDE_DIRECTORIES(${INC_DIR})
 
 INCLUDE(FindPkgConfig)
-pkg_check_modules(${fw_name} REQUIRED ${dependents})
-FOREACH(flag ${${fw_name}_CFLAGS})
+pkg_check_modules(${LEGACY_PLAYER} REQUIRED ${dependents})
+FOREACH(flag ${${LEGACY_PLAYER}_CFLAGS})
     SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
 
@@ -39,16 +39,16 @@ ADD_DEFINITIONS("-DTIZEN_DEBUG")
 SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIB_INSTALL_DIR}")
 
 aux_source_directory(src LEGACY_SOURCES)
-ADD_LIBRARY(${fw_name} SHARED ${LEGACY_SOURCES})
+ADD_LIBRARY(${LEGACY_PLAYER} SHARED ${LEGACY_SOURCES})
 
-TARGET_LINK_LIBRARIES(${fw_name} ${${fw_name}_LDFLAGS})
+TARGET_LINK_LIBRARIES(${LEGACY_PLAYER} ${${LEGACY_PLAYER}_LDFLAGS})
 
-SET_TARGET_PROPERTIES(${fw_name}
+SET_TARGET_PROPERTIES(${LEGACY_PLAYER}
      PROPERTIES
      CLEAN_DIRECT_OUTPUT 1
 )
 
-INSTALL(TARGETS ${fw_name} DESTINATION ${LIB_INSTALL_DIR})
+INSTALL(TARGETS ${LEGACY_PLAYER} DESTINATION ${LIB_INSTALL_DIR})
 INSTALL(
         DIRECTORY ${INC_DIR}/ DESTINATION include/media
         FILES_MATCHING
index 340ebcc..f63dc39 100644 (file)
 #ifndef __TIZEN_MEDIA_LEGACY_PLAYER_PRIVATE_H__
 #define        __TIZEN_MEDIA_LEGACY_PLAYER_PRIVATE_H__
 #include <mm_types.h>
-#include "muse_player.h"
 #include "legacy_player.h"
 
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-#define LOG_TAG "TIZEN_N_PLAYER"
-//#define USE_ECORE_FUNCTIONS
-
 #define PLAYER_CHECK_CONDITION(condition, error, msg)     \
 do {   \
        if (condition) {} else \
index 6c2ee8e..81781e4 100644 (file)
@@ -3,9 +3,9 @@ SET(service "muse")
 SET(submodule "player")
 
 SET(dependents "dlog muse-server mm-common libtbm capi-system-info libtzplatform-config")
-SET(fw_name "${service}-${submodule}")
+SET(MUSE_PLAYER "${service}-${submodule}")
 
-PROJECT(${fw_name})
+PROJECT(${MUSE_PLAYER})
 
 SET(CMAKE_INSTALL_PREFIX /usr)
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
@@ -14,8 +14,8 @@ SET(INC_DIR include)
 INCLUDE_DIRECTORIES(${INC_DIR})
 
 INCLUDE(FindPkgConfig)
-pkg_check_modules(${fw_name} REQUIRED ${dependents})
-FOREACH(flag ${${fw_name}_CFLAGS})
+pkg_check_modules(${MUSE_PLAYER} REQUIRED ${dependents})
+FOREACH(flag ${${MUSE_PLAYER}_CFLAGS})
     SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
 
@@ -38,16 +38,16 @@ SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIB_INSTALL_DIR}")
 execute_process(COMMAND python make_api.py -l api.list WORKING_DIRECTORY ${service})
 
 aux_source_directory(src MUSED_SOURCES)
-ADD_LIBRARY(${fw_name} SHARED ${MUSED_SOURCES})
+ADD_LIBRARY(${MUSE_PLAYER} SHARED ${MUSED_SOURCES})
 
-TARGET_LINK_LIBRARIES(${fw_name} legacy-player ${${fw_name}_LDFLAGS})
+TARGET_LINK_LIBRARIES(${MUSE_PLAYER} legacy-player ${${MUSE_PLAYER}_LDFLAGS})
 
-SET_TARGET_PROPERTIES(${fw_name}
+SET_TARGET_PROPERTIES(${MUSE_PLAYER}
      PROPERTIES
      CLEAN_DIRECT_OUTPUT 1
 )
 
-INSTALL(TARGETS ${fw_name} DESTINATION ${LIB_INSTALL_DIR})
+INSTALL(TARGETS ${MUSE_PLAYER} DESTINATION ${LIB_INSTALL_DIR})
 INSTALL(
         DIRECTORY ${INC_DIR}/ DESTINATION include/media
         FILES_MATCHING
index f95f651..4e559a6 100644 (file)
@@ -26,7 +26,7 @@ extern "C" {
 #ifdef LOG_TAG
 #undef LOG_TAG
 #endif
-#define LOG_TAG "TIZEN_N_PLAYER"
+#define LOG_TAG "MMSVC_PLAYER"
 
 #define MUSE_PLAYER_HEAD_GAP(api) ((api)/(1000)+(1))*(1000)
 
index 3530924..d89ea2b 100644 (file)
@@ -1,5 +1,5 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-SET(fw_test "${fw_name}-test")
+SET(fw_test "${MUSE_PLAYER}-test")
 
 INCLUDE_DIRECTORIES(../include, ../../legacy/include)
 link_directories(${CMAKE_SOURCE_DIR}/../)
index 67754a6..b33034f 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-player
 Summary:    A Media Player module for muse server
-Version:    0.2.90
+Version:    0.2.91
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
@@ -18,6 +18,9 @@ BuildRequires:  pkgconfig(libtbm)
 BuildRequires:  pkgconfig(ttrace)
 BuildRequires:  pkgconfig(capi-system-info)
 BuildRequires:  pkgconfig(libtzplatform-config)
+%if 0%{?gtests:1}
+BuildRequires:  pkgconfig(gmock)
+%endif
 
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
@@ -46,7 +49,12 @@ export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
 %endif
 export CFLAGS+=" -DTIZEN_FEATURE_ASM"
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
-%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER} \
+
+%cmake . \
+       -DCMAKE_INSTALL_PREFIX=%{_prefix} \
+       -DFULLVER=%{version} \
+       -DMAJORVER=${MAJORVER} \
+       -DBUILD_TESTS=%{?gtests:1}%{!?gtests:0} \
 %if "%{TIZEN_PRODUCT_TV}" == "1"
     -DTIZEN_FEATURE_EVAS_RENDERER=Off
 %else
@@ -69,6 +77,9 @@ rm -rf %{buildroot}
 %license LICENSE.Apache-2.0
 %{_libdir}/liblegacy-player.so
 %{_libdir}/libmuse-player.so
+%if 0%{?gtests:1}
+%{_bindir}/gtest-mmsvc-player
+%endif
 
 %files devel
 %{_includedir}/media/*.h
diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0933b79
--- /dev/null
@@ -0,0 +1,37 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(gtest-mmsvc-player C CXX)
+
+SET(GTEST_TEST "gtest-mmsvc-player")
+SET(BINDIR "/usr/bin")
+
+INCLUDE(FindPkgConfig)
+SET(REQUIRES_LIST ${REQUIRES_LIST}
+       glib-2.0
+       gio-2.0
+       gmock
+       dlog
+       mm-common
+       mm-player
+       capi-media-sound-manager
+)
+PKG_CHECK_MODULES(GTEST_TEST_PKGS REQUIRED ${REQUIRES_LIST})
+
+FOREACH(flag ${GTEST_TEST_PKG_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/legacy/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/muse/include)
+INCLUDE_DIRECTORIES(${GTEST_TEST_PKGS_INCLUDE_DIRS})
+LINK_DIRECTORIES(${GTEST_TEST_PKGS_LIBRARY_DIRS})
+
+FILE(GLOB GTEST_TEST_SRCS *.cpp ${CMAKE_SOURCE_DIR}/legacy/src/legacy_player.c)
+SET(GTEST_TEST_SRCS ${GTEST_TEST_SRCS})
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  ${EXTRA_CFLAGS} -fpie")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  ${EXTRA_CFLAGS} -fpie")
+
+ADD_EXECUTABLE(${GTEST_TEST} ${GTEST_TEST_SRCS})
+TARGET_LINK_LIBRARIES(${GTEST_TEST} ${LEGACY_PLAYER} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKGS_LDFLAGS} -lgcov)
+
+INSTALL(TARGETS ${GTEST_TEST} DESTINATION ${BINDIR})
diff --git a/unittest/gtest_legacy_player.cpp b/unittest/gtest_legacy_player.cpp
new file mode 100644 (file)
index 0000000..f36b751
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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 "legacy_player.h"
+#include "gtest_legacy_player.h"
+
+LegacyPlayer::LegacyPlayer()
+{
+       legacy_player = NULL;
+}
+
+LegacyPlayer::~LegacyPlayer()
+{
+       if (legacy_player) {
+               LOGD("[Cleanup] %p", legacy_player);
+               legacy_player_destroy(legacy_player);
+               legacy_player = NULL;
+       }
+}
+
+int LegacyPlayer::Create(void)
+{
+       int ret = legacy_player_create(&legacy_player);
+       LOGD("[Create] %p", legacy_player);
+       return ret;
+}
+
+int LegacyPlayer::Destroy(void)
+{
+       int ret = PLAYER_ERROR_NONE;
+
+       LOGD("[Destroy] %p", legacy_player);
+
+       ret = legacy_player_destroy(legacy_player);
+       legacy_player = NULL;
+
+       return ret;
+}
diff --git a/unittest/gtest_legacy_player.h b/unittest/gtest_legacy_player.h
new file mode 100644 (file)
index 0000000..bb41038
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * 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 __GTEST_LEGACY_PLAYER_H__
+#define __GTEST_LEGACY_PLAYER_H__
+
+#include <dlog.h>
+#include "legacy_player.h"
+
+#undef LOG_TAG
+#define LOG_TAG                "GTEST_MMSVC_PLAYER"
+
+class LegacyPlayer {
+private:
+       player_h legacy_player;
+
+public:
+       LegacyPlayer();
+       virtual ~LegacyPlayer();
+
+       int Create(void);
+       int Destroy(void);
+};
+
+#endif /*__GTEST_LEGACY_PLAYER_H__*/
diff --git a/unittest/unittest.cpp b/unittest/unittest.cpp
new file mode 100644 (file)
index 0000000..8c8537a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * 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 <gmock/gmock.h>
+#include <gtest/gtest.h>
+#include "gtest_legacy_player.h"
+
+using ::testing::InitGoogleTest;
+using ::testing::Test;
+using ::testing::TestCase;
+
+class LegacyPlayerPreTest : public ::testing::Test {
+       protected:
+               void SetUp() {
+                       std::cout << "SetUp()" << std::endl;
+               }
+
+               void TearDown() {
+                       std::cout << "TearDown()" << std::endl;
+               }
+};
+
+TEST(LegacyPlayerPreTest, Create_p)
+{
+       int ret = PLAYER_ERROR_NONE;
+       LegacyPlayer player;
+
+       ret = player.Create();
+       EXPECT_EQ(ret, PLAYER_ERROR_NONE);
+}
+
+TEST(LegacyPlayerPreTest, Destroy_p)
+{
+       int ret = PLAYER_ERROR_NONE;
+       LegacyPlayer player;
+
+       ret = player.Create();
+       ASSERT_EQ(ret, PLAYER_ERROR_NONE);
+
+       ret = player.Destroy();
+       EXPECT_EQ(ret, PLAYER_ERROR_NONE);
+}
+
+int main(int argc, char **argv)
+{
+       InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}