CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(hal-api-ml)
+option(ENABLE_HALTESTS "Enable HAL tests" ON)
+
SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(EXEC_PREFIX "${CMAKE_INSTALL_PREFIX}/bin")
SET(INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include")
PATTERN "include/*.hh")
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIBDIR}/pkgconfig)
+
+IF(ENABLE_HALTESTS)
+SET(HALTESTS_SRCS
+ tests/ml-haltests.cc
+)
+
+pkg_check_modules(ml_hal_tests_dep_pkgs REQUIRED
+ gtest
+)
+
+ADD_EXECUTABLE(ml-haltests ${HALTESTS_SRCS})
+TARGET_LINK_LIBRARIES(ml-haltests
+ ${PROJECT_NAME}
+ ${pkgs_LDFLAGS}
+ ${ml_hal_tests_dep_pkgs_LDFLAGS}
+)
+
+INSTALL(TARGETS ml-haltests DESTINATION /usr/bin/hal)
+ENDIF()
Summary: hal-api-ml interface
Version: 0.0.1
Release: 0
-Group: Development/Libraries
+Group: Machine Learning/ML Framework
License: Apache-2.0
Source0: hal-api-ml-%{version}.tar.gz
Source1: hal-api-ml.manifest
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(hal-api-common)
+BuildRequires: pkgconfig(gtest)
%description
hal-api-ml interface
### devel package #########
%package devel
Summary: hal-api-ml interface
-Group: Development/Libraries
+Group: Machine Learning/ML Framework
Requires: hal-api-ml = %{version}-%{release}
%description devel
hal-api-ml interface development package
+### hal test package #########
+%package haltests
+Summary: hal-api-ml tests
+Requires: hal-api-ml = %{version}-%{release}
+
+%description haltests
+hal-api-ml tests package
+
### build and install #########
%prep
%setup -q
-%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DCMAKE_LIBDIR_PREFIX=%{_libdir}
+%cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DCMAKE_LIBDIR_PREFIX=%{_libdir} -DENABLE_HALTESTS=ON
%build
cp %{SOURCE1} .
make %{?jobs:-j%jobs}
%check
-# (cd tests/unittest && LD_LIBRARY_PATH=../../ ctest -V)
+LD_LIBRARY_PATH=./ ./ml-haltests
%install
rm -rf %{buildroot}
%defattr(-,root,root,-)
%{_includedir}/hal/*.*
%{_libdir}/pkgconfig/*.pc
+
+%files haltests
+%defattr(-,root,root,-)
+%manifest hal-api-ml.manifest
+%{_bindir}/hal/ml-haltests
--- /dev/null
+#include <gtest/gtest.h>
+#include <hal-ml.h>
+
+
+TEST(HAL_ML_PARAM, usecase)
+{
+ hal_ml_param_h param;
+
+ EXPECT_EQ (hal_ml_param_create (¶m), HAL_ML_ERROR_NONE);
+
+ EXPECT_EQ (hal_ml_param_set (param, "some key", (void *) "some value"), HAL_ML_ERROR_NONE);
+
+ EXPECT_EQ (hal_ml_param_destroy (param), HAL_ML_ERROR_NONE);
+}
+
+TEST (HAL_ML_PARAM, create_n)
+{
+ EXPECT_EQ (hal_ml_param_create (nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+}
+
+TEST (HAL_ML_PARAM, destroy_n)
+{
+ EXPECT_EQ (hal_ml_param_destroy (nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+}
+
+TEST (HAL_ML_PARAM, set_n)
+{
+ EXPECT_EQ (hal_ml_param_set (nullptr, "key", (void *) "value"), HAL_ML_ERROR_INVALID_PARAMETER);
+
+ hal_ml_param_h param;
+ EXPECT_EQ (hal_ml_param_create (¶m), HAL_ML_ERROR_NONE);
+
+ EXPECT_EQ (hal_ml_param_set (param, nullptr, (void *) "value"), HAL_ML_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ (hal_ml_param_set (param, "key", nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+
+ EXPECT_EQ (hal_ml_param_destroy (param), HAL_ML_ERROR_NONE);
+}
+
+TEST (HAL_ML, create_n)
+{
+ EXPECT_EQ (hal_ml_create (nullptr, nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ (hal_ml_create ("there_is_no_available_backend", nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+
+ hal_ml_h ml;
+ EXPECT_EQ (hal_ml_create (nullptr, &ml), HAL_ML_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ (hal_ml_create ("there_is_no_available_backend", &ml), HAL_ML_ERROR_INVALID_PARAMETER);
+}
+
+TEST (HAL_ML, destroy_n)
+{
+ EXPECT_EQ (hal_ml_destroy (nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+}
+
+TEST (HAL_ML, request_n)
+{
+ EXPECT_EQ (hal_ml_request (nullptr, "some_request", nullptr), HAL_ML_ERROR_INVALID_PARAMETER);
+
+ hal_ml_param_h param;
+ EXPECT_EQ (hal_ml_param_create (¶m), HAL_ML_ERROR_NONE);
+ EXPECT_EQ (hal_ml_request (nullptr, "some_request", param), HAL_ML_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ (hal_ml_param_destroy (param), HAL_ML_ERROR_NONE);
+}
+
+int main (int argc, char *argv[])
+{
+ int ret = -1;
+
+ try {
+ testing::InitGoogleTest (&argc, argv);
+ } catch(...) {
+ std::cout << "Exception occurred." << std::endl;
+ }
+
+ try {
+ ret = RUN_ALL_TESTS ();
+ } catch (const ::testing::internal::GoogleTestFailureException& e) {
+ ret = -1;
+ std::cout << "GoogleTestFailureException was thrown:" << e.what () << std::endl;
+ }
+
+ return ret;
+}