SET(VERSION 0.1)
SET(INC_DIR include)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${INC_DIR})
+INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/${INC_DIR})
INCLUDE(FindPkgConfig)
pkg_check_modules(rpkgs REQUIRED dlog vconf glib-2.0)
CONFIGURE_FILE(hwcommon.pc.in hwcommon.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/hwcommon.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
+
+IF(BUILD_GTESTS STREQUAL on)
+ ADD_SUBDIRECTORY(unittest)
+ENDIF()
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(gio-2.0)
+
+BuildRequires: pkgconfig(gmock)
%description
development package of library to control OAL APIs
%setup -q
cp %{SOURCE1} .
%build
-%cmake .
+%cmake -DBUILD_GTESTS=on \
+ .
+ #eol
+
make %{?jobs:-j%jobs}
%install
%{_libdir}/*.so.*
%manifest %{name}.manifest
%license LICENSE.APLv2
+%{_bindir}/gtest*
%files devel
%{_includedir}/device-node/*.h
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(gtest-libdevice-node C CXX)
+
+ADD_DEFINITIONS("-DUSE_DLOG")
+#SET(SRCS
+# ../hw/common.c
+# )
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${INC_DIR})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/hw)
+
+SET(REQUIRES_LIST ${REQUIRES_LIST}
+ glib-2.0
+ gio-2.0
+ gmock
+ dlog
+)
+
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(gtest_pkgs REQUIRED ${REQUIRES_LIST})
+
+FOREACH(flag ${gtest_pkgs_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")
+
+aux_source_directory(. sources)
+FOREACH(src ${sources})
+ GET_FILENAME_COMPONENT(src_name ${src} NAME_WE)
+ MESSAGE("${src_name}")
+ ADD_EXECUTABLE(${src_name} ${CMAKE_SOURCE_DIR}/hw/common.c ${src})
+ TARGET_LINK_LIBRARIES(${src_name} ${gtest_LDFLAGS} ${gtest_pkgs_LDFLAGS} -ldl)
+ INSTALL(TARGETS ${src_name} DESTINATION bin)
+ENDFOREACH()
+
--- /dev/null
+
+#include <iostream>
+#include <gtest/gtest.h>
+#include "hw/common.h"
+#include "hw/ir.h"
+
+using namespace std;
+
+/*
+ * main class
+ */
+struct ir_device *ir_dev;
+
+class IRHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+ struct hw_info *info;
+ int ret;
+ ret = hw_get_info(IR_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+
+ if (ret < 0) {
+ cout << "Fail to load ir hal(" << ret << ")" << endl;
+ assert(true);
+ return;
+ }
+ if (!info->open) {
+ cout << "Failed to open ir device; open(NULL)" << endl;
+ assert(true);
+ return;
+ }
+
+ ret = info->open(info, NULL, (struct hw_common**)&ir_dev);
+ if (ret < 0 || !ir_dev) {
+ cout << "Failed to get ir device structure (" << ret << ")" << endl;
+ assert(true);
+ return;
+ }
+
+ return;
+ }
+
+ virtual void TearDown()
+ {
+ struct hw_info *info;
+
+ info = ir_dev->common.info;
+ if (!info)
+ free(ir_dev);
+ else
+ info->close((struct hw_common *)ir_dev);
+ ir_dev = NULL;
+
+ return;
+ }
+};
+
+/*
+ * testcase
+ */
+TEST_F(IRHalTest, InitP)
+{
+ EXPECT_NE(ir_dev, nullptr);
+}
+
+TEST_F(IRHalTest, DeinitP)
+{
+ struct ir_device *tmp;
+ struct hw_info *info;
+ int ret;
+
+ hw_get_info(IR_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+
+ EXPECT_NE(info, nullptr);
+ EXPECT_NE(info->open, nullptr);
+ info->open(info, NULL, (struct hw_common**)&tmp);
+
+ ret = info->close((struct hw_common *)tmp);
+ EXPECT_EQ(ret, 0);
+}
+
+TEST_F(IRHalTest, IsAvailableP)
+{
+ bool val;
+
+ EXPECT_NE(ir_dev, nullptr);
+ ir_dev->is_available(&val);
+}
+
+TEST_F(IRHalTest, TransmitP)
+{
+ int pattern[5] = {100, 200, 300, 400, 500};
+
+ EXPECT_NE(ir_dev, nullptr);
+ ir_dev->transmit(pattern, 5);
+}
+
+int main(int argc, char **argv)
+{
+ testing::InitGoogleTest(&argc, argv);
+
+ return RUN_ALL_TESTS();
+}