From a6c9959c2a7cbb17bed65efaf5b8b29d812efe6d Mon Sep 17 00:00:00 2001 From: Abhishek Sansanwal Date: Tue, 31 Jul 2018 10:35:03 +0530 Subject: [PATCH] Added HAL testcases for nfc-manager Signed-off-by: Abhishek Sansanwal Change-Id: Ib021a41886f6812d8dcaa8ea6334e533ca46f57d --- CMakeLists.txt | 1 + packaging/nfc-manager.spec | 14 ++++ unittest/CMakeLists.txt | 29 +++++++++ unittest/nfc_manager_hal_tc.cpp | 139 ++++++++++++++++++++++++++++++++++++++++ unittest/unittest.h | 32 +++++++++ 5 files changed, 215 insertions(+) create mode 100644 unittest/CMakeLists.txt create mode 100755 unittest/nfc_manager_hal_tc.cpp create mode 100755 unittest/unittest.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e5170b..e6bb6cd 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,3 +10,4 @@ ADD_DEFINITIONS("-D_GNU_SOURCE") ADD_SUBDIRECTORY(src/commonlib) ADD_SUBDIRECTORY(src/manager) +ADD_SUBDIRECTORY(unittest) diff --git a/packaging/nfc-manager.spec b/packaging/nfc-manager.spec index afb92b0..e98ff79 100755 --- a/packaging/nfc-manager.spec +++ b/packaging/nfc-manager.spec @@ -48,6 +48,15 @@ Requires(postun): /sbin/ldconfig A NFC Service Framework for support Tizen NFC. +%package haltests +Summary: nfc-manager extension for HAL test +BuildRequires: pkgconfig(gmock) +BuildRequires: pkgconfig(capi-network-nfc) +BuildRequires: pkgconfig(capi-system-info) +Requires: %{name} = %{version}-%{release} +%description haltests +TIZEN nfc-manager extension for HAL test. + %prep %setup -q @@ -167,3 +176,8 @@ systemctl daemon-reload %defattr(-,root,root,-) %{_libdir}/pkgconfig/nfc-common-lib.pc %{_includedir}/*.h + + +%files haltests +%manifest %{name}.manifest +%{_bindir}/*hal_tc diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt new file mode 100644 index 0000000..277314d --- /dev/null +++ b/unittest/CMakeLists.txt @@ -0,0 +1,29 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(gtest-nfc-manager C CXX) + +SET(GTEST_TEST "gtest-nfc-manager") +ADD_DEFINITIONS("-DUSE_DLOG") + +SET(dependents "glib-2.0 gio-2.0 gmock dlog capi-network-nfc capi-system-info") + +INCLUDE(FindPkgConfig) +PKG_CHECK_MODULES(GTEST_TEST_PKG REQUIRED ${dependents}) + +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") + +aux_source_directory(. sources) +FOREACH(src ${sources}) + GET_FILENAME_COMPONENT(src_name ${src} NAME_WE) + MESSAGE("${src_name}") + ADD_EXECUTABLE(${src_name} ${src}) + TARGET_LINK_LIBRARIES(${src_name} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKG_LDFLAGS} nfc-common-lib -ldl -lgcov) + INSTALL(TARGETS ${src_name} RUNTIME DESTINATION bin) +ENDFOREACH() + diff --git a/unittest/nfc_manager_hal_tc.cpp b/unittest/nfc_manager_hal_tc.cpp new file mode 100755 index 0000000..0e53402 --- /dev/null +++ b/unittest/nfc_manager_hal_tc.cpp @@ -0,0 +1,139 @@ +/* + * 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 +#include +#include +#include +#include "unittest.h" + +using ::testing::InitGoogleTest; +using ::testing::Test; +using ::testing::TestCase; + +void __activated(bool activated, void *user_data) { + std::cout<< (activated ? "activated" : "deactivated") << std::endl; +} + +static bool __check_feature_supported(char *key) +{ + bool value = false; + int ret = system_info_get_platform_bool(key, &value); + + EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed"; + EXPECT_EQ(true, value) << key << " feature is not supported"; + + return value; +} + +/* +@testcase Init_p +@since_tizen 5.0 +@author SRID(abhishek.s94) +@reviewer HQ(jh8801.jung) +@type auto +@description Positive, Initialize NFC manager +@apicovered nfc_manager_initialize +@passcase when nfc_manager_initialize returns NFC_ERROR_NONE +@failcase when nfc_manager_initialize does not return NFC_ERROR_NONE +@precondition __check_feature_supported must return true for nfc feature +@postcondition None +*/ +TEST(Hal_nfc, Init_p) +{ + g_bFeatureNfc = __check_feature_supported((char*)FEATURE_NFC); + ASSERT_EQ(true, g_bFeatureNfc) << FEATURE_NFC << " feature is not supported"; + + nfc_manager_set_activation_changed_cb(__activated, NULL); + int rv = nfc_manager_initialize(); + EXPECT_EQ(NFC_ERROR_NONE, rv) << "Initialization failure"; + +} + +/* +@testcase Set_Activation_true_p +@since_tizen 5.0 +@author SRID(abhishek.s94) +@reviewer HQ(jh8801.jung) +@type auto +@description Positive, Activate NFC manager +@apicovered nfc_manager_set_activation +@passcase when nfc_manager_set_activation returns NFC_ERROR_NONE or NFC_ERROR_ALREADY_ACTIVATED +@failcase when nfc_manager_set_activation does not return NFC_ERROR_NONE or NFC_ERROR_ALREADY_ACTIVATED +@precondition __check_feature_supported must return true for nfc feature +@postcondition None +*/ +TEST(Hal_nfc, Set_Activation_true_p) +{ + g_bFeatureNfc = __check_feature_supported((char*)FEATURE_NFC); + ASSERT_EQ(true, g_bFeatureNfc) << FEATURE_NFC << " feature is not supported"; + + int rv = nfc_manager_set_activation(true, NULL, NULL); + sleep(5); + EXPECT_EQ(rv == NFC_ERROR_NONE || rv == NFC_ERROR_ALREADY_ACTIVATED, true) + << "Activation failure"; +} + +/* +@testcase Set_Activation_false_p +@since_tizen 5.0 +@author SRID(abhishek.s94) +@reviewer HQ(jh8801.jung) +@type auto +@description Positive, Deactivate NFC manager +@apicovered nfc_manager_set_activation +@passcase when nfc_manager_set_activation returns NFC_ERROR_NONE +@failcase when nfc_manager_set_activation does not return NFC_ERROR_NONE +@precondition __check_feature_supported must return true for nfc feature +@postcondition None +*/ +TEST(Hal_nfc, Set_Activation_false_p) +{ + g_bFeatureNfc = __check_feature_supported((char*)FEATURE_NFC); + ASSERT_EQ(true, g_bFeatureNfc) << FEATURE_NFC << " feature is not supported"; + + int rv = nfc_manager_set_activation(false, NULL, NULL); + EXPECT_EQ(NFC_ERROR_NONE, rv) << "Deactivation failure"; +} + +/* +@testcase Deinit_p +@since_tizen 5.0 +@author SRID(abhishek.s94) +@reviewer HQ(jh8801.jung) +@type auto +@description Positive, Deinitialize NFC manager +@apicovered nfc_manager_deinitialize +@passcase when nfc_manager_deinitialize returns NFC_ERROR_NONE +@failcase when nfc_manager_deinitialize does not return NFC_ERROR_NONE +@precondition __check_feature_supported must return true for nfc feature +@postcondition None +*/ +TEST(Hal_nfc, Deinit_p) +{ + g_bFeatureNfc = __check_feature_supported((char*)FEATURE_NFC); + ASSERT_EQ(true, g_bFeatureNfc) << FEATURE_NFC << " feature is not supported"; + + int rv = nfc_manager_deinitialize(); + EXPECT_EQ(NFC_ERROR_NONE, rv) << "De-initialization failure"; +} + +int main(int argc, char **argv) +{ + InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/unittest/unittest.h b/unittest/unittest.h new file mode 100755 index 0000000..f93a99d --- /dev/null +++ b/unittest/unittest.h @@ -0,0 +1,32 @@ +/* + * 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 __NFC_MANAGER_H__ +#define __NFC_MANAGER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define FEATURE_NFC "http://tizen.org/feature/network.nfc" +#define FEATURE_NFC_TAG "http://tizen.org/feature/network.nfc.tag" + +bool g_bFeatureNfc; + +#ifdef __cplusplus +} +#endif + +#endif /* __NFC_MANAGER_H__ */ -- 2.7.4