Adding HAL test for Sensor FW 53/185053/7
authorsrinivasa-m <srinivasa.m@samsung.com>
Wed, 25 Jul 2018 13:44:56 +0000 (19:14 +0530)
committersrinivasa-m <srinivasa.m@samsung.com>
Mon, 30 Jul 2018 04:50:20 +0000 (10:20 +0530)
Change-Id: Iba72917e933fd75f36046c95d9f36f4f8602679d
Signed-off-by: srinivasa-m <srinivasa.m@samsung.com>
18 files changed:
CMakeLists.txt [changed mode: 0644->0755]
packaging/sensor-hal-tw2.spec [changed mode: 0644->0755]
src/accel/accel_device.cpp [changed mode: 0644->0755]
src/accel/accel_device.h [changed mode: 0644->0755]
src/gyro/gyro_device.cpp [changed mode: 0644->0755]
src/hrm/hrm_device.cpp [changed mode: 0644->0755]
src/hrm_raw/hrm_raw_device.cpp [changed mode: 0644->0755]
src/hrm_raw/hrm_raw_device.h [changed mode: 0644->0755]
src/light/light_device.cpp [changed mode: 0644->0755]
src/pressure/pressure_device.cpp [changed mode: 0644->0755]
src/sensor_common.h [changed mode: 0644->0755]
testcase/CMakeLists.txt [new file with mode: 0755]
testcase/accel_device_haltest.cpp [new file with mode: 0755]
testcase/gyro_device_haltest.cpp [new file with mode: 0755]
testcase/hrm_device_haltest.cpp [new file with mode: 0755]
testcase/hrm_raw_device_haltest.cpp [new file with mode: 0755]
testcase/light_device_haltest.cpp [new file with mode: 0755]
testcase/pressure_device_haltest.cpp [new file with mode: 0755]

old mode 100644 (file)
new mode 100755 (executable)
index 8eb2448..68d6ae1
@@ -1,7 +1,8 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 PROJECT(sensor-hal-tw2 CXX)
 INCLUDE(GNUInstallDirs)
-
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
 SET(DEPENDENTS "dlog")
 
 SET(ACCEL "ON")
@@ -32,7 +33,7 @@ MESSAGE("FLAGS: ${CMAKE_CXX_FLAGS}")
 MESSAGE("FLAGS: ${CMAKE_EXE_LINKER_FLAGS}")
 
 # Internal Debugging Options
-#ADD_DEFINITIONS(-Wall -g -D_DEBUG)
+ADD_DEFINITIONS(-Wall -g -D_DEBUG)
 
 INCLUDE(FindPkgConfig)
 PKG_CHECK_MODULES(HAL_PKGS REQUIRED ${DEPENDENTS})
@@ -136,3 +137,5 @@ ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${HAL_PKGS_LDFLAGS})
 
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensor)
+
+ADD_SUBDIRECTORY(testcase)
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index 9ca72b9..85e4fbe
@@ -12,11 +12,23 @@ ExcludeArch: aarch64 %ix86 x86_64
 
 BuildRequires:  cmake
 BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(gio-2.0)
+BuildRequires: pkgconfig(gmock)
 BuildRequires:  sensor-hal-devel
 
+
 %description
 TW2 Sensor HAL
 
+%package haltests
+Summary:       Device HAL(Hardware Abstraction Layer) Test Cases
+Requires:      %{name} = %{version}-%{release}
+
+
+%description haltests
+Sensor Device HAL(Hardware Abstraction Layer) Test Cases
+
 %prep
 %setup -q
 
@@ -44,3 +56,7 @@ install -m 0644 %SOURCE2 %{buildroot}%{_libdir}/udev/rules.d
 %{_libdir}/udev/rules.d/99-sensorhub.rules
 %{_libdir}/sensor/*.so
 %license LICENSE.APLv2
+
+%files haltests
+%manifest packaging/%{name}.manifest
+%{_bindir}/*haltest
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index 8ea935c..7058113
@@ -46,6 +46,8 @@
 #define MIN_RANGE(RES) (-((1 << (RES))/2))
 #define MAX_RANGE(RES) (((1 << (RES))/2)-1)
 
+#define MAX_ID 0x3
+
 static sensor_info_t sensor_info = {
        id: 0x1,
        name: SENSOR_NAME,
@@ -120,6 +122,7 @@ int accel_device::get_poll_fd(void)
 
 int accel_device::get_sensors(const sensor_info_t **sensors)
 {
+       retvm_if(sensors == NULL || sensors == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
        *sensors = &sensor_info;
 
        return 1;
@@ -127,6 +130,8 @@ int accel_device::get_sensors(const sensor_info_t **sensors)
 
 bool accel_device::enable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_ACCELEROMETER_ENABLE_BIT);
        set_interval(id, m_polling_interval);
 
@@ -137,6 +142,8 @@ bool accel_device::enable(uint32_t id)
 
 bool accel_device::disable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_ACCELEROMETER_ENABLE_BIT);
 
        _I("Disable accelerometer sensor");
@@ -146,6 +153,7 @@ bool accel_device::disable(uint32_t id)
 bool accel_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long long polling_interval_ns;
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
 
        polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu);
 
@@ -171,7 +179,7 @@ bool accel_device::update_value_input_event(void)
        x = y = z = false;
 
        struct input_event accel_input;
-       _D("accel event detection");
+       _D("accel sensor event detection");
 
        while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) {
                int len = read(m_node_handle, &accel_input, sizeof(accel_input));
@@ -234,13 +242,15 @@ bool accel_device::update_value_input_event(void)
 
        m_fired_time = fired_time / 1000;       /* ns to us */
 
-       _D("m_x = %d, m_y = %d, m_z = %d, time = %lluus", m_x, m_y, m_z, m_fired_time);
+       //_D("m_x = %d, m_y = %d, m_z = %d, time = %lluus", m_x, m_y, m_z, m_fired_time);
 
        return true;
 }
 
 int accel_device::read_fd(uint32_t **ids)
 {
+       retvm_if(ids == NULL || ids == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        if (!update_value_input_event()) {
                _D("Failed to update value");
                return false;
@@ -257,6 +267,10 @@ int accel_device::read_fd(uint32_t **ids)
 int accel_device::get_data(uint32_t id, sensor_data_t **data, int *length)
 {
        sensor_data_t *sensor_data;
+       retvm_if(data == NULL || data == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL data interface", SENSOR_NAME);
+       retvm_if(length == NULL || length == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL length interface", SENSOR_NAME);
+       retvm_if(id == 0 || id > MAX_ID, SENSOR_ERROR_INVALID_PARAMETER, "%s:Invalid ID Received", SENSOR_NAME);
+
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed");
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index c1d9de2..d5a9b87
@@ -43,6 +43,9 @@
 #define MIN_RANGE(RES) (-((1 << (RES))/2))
 #define MAX_RANGE(RES) (((1 << (RES))/2)-1)
 
+#define MAX_ID 0x3
+
+
 static sensor_info_t sensor_info = {
        id: 0x1,
        name: SENSOR_NAME,
@@ -117,6 +120,7 @@ int gyro_device::get_poll_fd(void)
 
 int gyro_device::get_sensors(const sensor_info_t **sensors)
 {
+       retvm_if(sensors == NULL || sensors == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
        *sensors = &sensor_info;
 
        return 1;
@@ -124,6 +128,8 @@ int gyro_device::get_sensors(const sensor_info_t **sensors)
 
 bool gyro_device::enable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_GYROSCOPE_ENABLE_BIT);
        set_interval(id, m_polling_interval);
 
@@ -134,6 +140,8 @@ bool gyro_device::enable(uint32_t id)
 
 bool gyro_device::disable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_GYROSCOPE_ENABLE_BIT);
 
        _I("Disable gyroscope sensor");
@@ -143,7 +151,7 @@ bool gyro_device::disable(uint32_t id)
 bool gyro_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long long polling_interval_ns;
-
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
        polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu);
 
        if (!util::set_node_value(m_interval_node, polling_interval_ns)) {
@@ -239,6 +247,8 @@ bool gyro_device::update_value_input_event(void)
 
 int gyro_device::read_fd(uint32_t **ids)
 {
+       retvm_if(ids == NULL || ids == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        if (!update_value_input_event()) {
                _D("Failed to update value");
                return false;
@@ -255,6 +265,10 @@ int gyro_device::read_fd(uint32_t **ids)
 int gyro_device::get_data(uint32_t id, sensor_data_t **data, int *length)
 {
        sensor_data_t *sensor_data;
+       retvm_if(data == NULL || data == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL data interface", SENSOR_NAME);
+       retvm_if(length == NULL || length == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL length interface", SENSOR_NAME);
+       retvm_if(id == 0 || id > MAX_ID, SENSOR_ERROR_INVALID_PARAMETER, "%s:Invalid ID Received", SENSOR_NAME);
+
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed");
 
old mode 100644 (file)
new mode 100755 (executable)
index d00c1ad..65e7429
@@ -40,6 +40,9 @@
 #define INPUT_NAME "hrm_lib_sensor"
 #define HRM_SENSORHUB_POLL_NODE_NAME "hrm_lib_poll_delay"
 
+#define MAX_ID 0x3
+
+
 static sensor_info_t sensor_info = {
        id: 0x1,
        name: SENSOR_NAME,
@@ -119,6 +122,8 @@ int hrm_device::get_poll_fd(void)
 
 int hrm_device::get_sensors(const sensor_info_t **sensors)
 {
+       retvm_if(sensors == NULL || sensors == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        *sensors = &sensor_info;
 
        return 1;
@@ -126,6 +131,8 @@ int hrm_device::get_sensors(const sensor_info_t **sensors)
 
 bool hrm_device::enable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_HRM_LIB_ENABLE_BIT);
        if (m_interval_supported)
                set_interval(id, m_polling_interval);
@@ -137,6 +144,8 @@ bool hrm_device::enable(uint32_t id)
 
 bool hrm_device::disable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_HRM_LIB_ENABLE_BIT);
 
        _I("Disable HRM sensor");
@@ -146,6 +155,7 @@ bool hrm_device::disable(uint32_t id)
 bool hrm_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long long polling_interval_ns;
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
 
        if (!m_interval_supported)
                return true;
@@ -225,6 +235,8 @@ bool hrm_device::update_value_input_event(void)
 
 int hrm_device::read_fd(uint32_t **ids)
 {
+       retvm_if(ids == NULL || ids == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        if (!update_value_input_event()) {
                _D("Failed to update value");
                return false;
@@ -241,6 +253,10 @@ int hrm_device::read_fd(uint32_t **ids)
 int hrm_device::get_data(uint32_t id, sensor_data_t **data, int *length)
 {
        sensor_data_t *sensor_data;
+       retvm_if(data == NULL || data == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL data interface", SENSOR_NAME);
+       retvm_if(length == NULL || length == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL length interface", SENSOR_NAME);
+       retvm_if(id == 0 || id > MAX_ID, SENSOR_ERROR_INVALID_PARAMETER, "%s:Invalid ID Received", SENSOR_NAME);
+
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed");
 
old mode 100644 (file)
new mode 100755 (executable)
index 25714a2..26ef61c
@@ -49,6 +49,8 @@
 #define INPUT_MAX_BEFORE_SYN 20
 #define INPUT_EVENT_BIAS 1
 #define INPUT_VALUE_COUNT 10
+#define MAX_ID 0x3
+
 
 static sensor_info_t sensor_info[] = {
        {
@@ -144,6 +146,7 @@ int hrm_raw_device::get_poll_fd(void)
 
 int hrm_raw_device::get_sensors(const sensor_info_t **sensors)
 {
+       retvm_if(sensors == NULL || sensors == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
        *sensors = sensor_info;
 
        return 2;
@@ -151,6 +154,8 @@ int hrm_raw_device::get_sensors(const sensor_info_t **sensors)
 
 bool hrm_raw_device::enable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        ++m_enable;
 
        if (m_enable > 1)
@@ -167,6 +172,8 @@ bool hrm_raw_device::enable(uint32_t id)
 
 bool hrm_raw_device::disable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        --m_enable;
 
        if (m_enable > 0)
@@ -183,6 +190,7 @@ bool hrm_raw_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long interval = 100;
        unsigned long long polling_interval_ns;
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
 
        if (!m_interval_supported)
                return true;
@@ -235,11 +243,13 @@ bool hrm_raw_device::update_value_input_event(void)
                                return false;
                        }
                        m_data.values[index] = (unsigned int)hrm_raw_input.value - INPUT_EVENT_BIAS;
-
+                       _I("SRINIEVENT: EV_REL input had come, val:%d, index[%d]", hrm_raw_input.value, index);
                } else if (hrm_raw_input.type == EV_SYN) {
                        syn = true;
                        m_data.timestamp = util::get_timestamp(&hrm_raw_input.time);
                        m_data.value_count = INPUT_VALUE_COUNT;
+
+                       _I("SRINIEVENT: EV_SYN input had come, val:%d, index[%d]", hrm_raw_input.value, index);
                } else {
                        _E("hrm_raw_input event[type = %d, code = %d] is unknown.", hrm_raw_input.type, hrm_raw_input.code);
                        return false;
@@ -255,6 +265,8 @@ bool hrm_raw_device::update_value_input_event(void)
 
 int hrm_raw_device::read_fd(uint32_t **ids)
 {
+       retvm_if(ids == NULL || ids == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        if (!update_value_input_event()) {
                _D("Failed to update value");
                return false;
@@ -276,6 +288,10 @@ int hrm_raw_device::get_data(uint32_t id, sensor_data_t **data, int *length)
 {
        int remains = 1;
        sensor_data_t *sensor_data;
+       retvm_if(data == NULL || data == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL data interface", SENSOR_NAME);
+       retvm_if(length == NULL || length == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL length interface", SENSOR_NAME);
+       retvm_if(id == 0 || id > MAX_ID, SENSOR_ERROR_INVALID_PARAMETER, "%s:Invalid ID Received", SENSOR_NAME);
+
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed");
 
@@ -289,7 +305,7 @@ int hrm_raw_device::get_data(uint32_t id, sensor_data_t **data, int *length)
                sensor_data->value_count = m_data.value_count;
                memcpy(sensor_data->values, m_data.values, m_data.value_count * sizeof(m_data.values[0]));
        }
-
+       _I("SRINIHAL: Sensor Data:%.2f, id: %d", sensor_data->values[0], id);
        *data = sensor_data;
        *length = sizeof(sensor_data_t);
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index e605e48..7bbc060
@@ -42,6 +42,7 @@
 #define LIGHT_SENSORHUB_POLL_NODE_NAME "light_poll_delay"
 
 #define BIAS 1
+#define MAX_ID 0x3
 
 static sensor_info_t sensor_info = {
        id: 0x1,
@@ -115,6 +116,7 @@ int light_device::get_poll_fd()
 
 int light_device::get_sensors(const sensor_info_t **sensors)
 {
+       retvm_if(sensors == NULL || sensors == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
        *sensors = &sensor_info;
 
        return 1;
@@ -122,6 +124,8 @@ int light_device::get_sensors(const sensor_info_t **sensors)
 
 bool light_device::enable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_LIGHT_ENABLE_BIT);
        set_interval(id, m_polling_interval);
 
@@ -132,6 +136,8 @@ bool light_device::enable(uint32_t id)
 
 bool light_device::disable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_LIGHT_ENABLE_BIT);
 
        _I("Disable light sensor");
@@ -141,6 +147,7 @@ bool light_device::disable(uint32_t id)
 bool light_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long long polling_interval_ns;
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
 
        polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu);
 
@@ -188,6 +195,8 @@ bool light_device::update_value_lux(void)
 
 int light_device::read_fd(uint32_t **ids)
 {
+       retvm_if(ids == NULL || ids == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        if (!update_value_lux()) {
                _D("Failed to update value");
                return false;
@@ -204,6 +213,10 @@ int light_device::read_fd(uint32_t **ids)
 int light_device::get_data(uint32_t id, sensor_data_t **data, int *length)
 {
        sensor_data_t *sensor_data;
+       retvm_if(data == NULL || data == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL data interface", SENSOR_NAME);
+       retvm_if(length == NULL || length == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL length interface", SENSOR_NAME);
+       retvm_if(id == 0 || id > MAX_ID, SENSOR_ERROR_INVALID_PARAMETER, "%s:Invalid ID Received", SENSOR_NAME);
+
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed");
 
old mode 100644 (file)
new mode 100755 (executable)
index c98c084..75c99f6
@@ -46,6 +46,8 @@
 
 #define INPUT_NAME "pressure_sensor"
 #define PRESSURE_SENSORHUB_POLL_NODE_NAME "pressure_poll_delay"
+#define MAX_ID 0x3
+
 
 static sensor_info_t sensor_info = {
        id: 0x1,
@@ -121,6 +123,7 @@ int pressure_device::get_poll_fd(void)
 
 int pressure_device::get_sensors(const sensor_info_t **sensors)
 {
+       retvm_if(sensors == NULL || sensors == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
        *sensors = &sensor_info;
 
        return 1;
@@ -128,6 +131,8 @@ int pressure_device::get_sensors(const sensor_info_t **sensors)
 
 bool pressure_device::enable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_PRESSURE_ENABLE_BIT);
        set_interval(id, m_polling_interval);
 
@@ -138,6 +143,8 @@ bool pressure_device::enable(uint32_t id)
 
 bool pressure_device::disable(uint32_t id)
 {
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
+
        util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_PRESSURE_ENABLE_BIT);
 
        _I("Disable pressure sensor");
@@ -147,6 +154,7 @@ bool pressure_device::disable(uint32_t id)
 bool pressure_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long long polling_interval_ns;
+       retvm_if(id == 0 || id > MAX_ID, false, "%s:Invalid ID Received", SENSOR_NAME);
 
        polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu);
 
@@ -243,6 +251,8 @@ bool pressure_device::update_value_input_event(void)
 
 int pressure_device::read_fd(uint32_t **ids)
 {
+       retvm_if(ids == NULL || ids == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL interface", SENSOR_NAME);
+
        if (!update_value_input_event()) {
                _D("Failed to update value");
                return false;
@@ -259,6 +269,10 @@ int pressure_device::read_fd(uint32_t **ids)
 int pressure_device::get_data(uint32_t id, sensor_data_t **data, int *length)
 {
        sensor_data_t *sensor_data;
+       retvm_if(data == NULL || data == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL data interface", SENSOR_NAME);
+       retvm_if(length == NULL || length == nullptr, SENSOR_ERROR_INVALID_PARAMETER, "%s:NULL length interface", SENSOR_NAME);
+       retvm_if(id == 0 || id > MAX_ID, SENSOR_ERROR_INVALID_PARAMETER, "%s:Invalid ID Received", SENSOR_NAME);
+
        sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t));
        retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed");
 
old mode 100644 (file)
new mode 100755 (executable)
index 1db6a8c..5072936
@@ -25,6 +25,8 @@
 #define NS_TO_US(x) ((x) / 1000)
 
 #define UNKNOWN_NAME "UNKNOWN"
+#include <tizen.h>
+
 
 enum sensorhub_enable_bit {
        SENSORHUB_ACCELEROMETER_ENABLE_BIT = 0,
@@ -56,4 +58,25 @@ enum sensorhub_enable_bit {
        SENSORHUB_ENABLE_BIT_MAX,
 };
 
+
+/**
+ * @brief   Enumeration for errors.
+ * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
+ */
+typedef enum {
+       SENSOR_ERROR_NONE                  = TIZEN_ERROR_NONE,                 /**< Successful */
+       SENSOR_ERROR_IO_ERROR              = TIZEN_ERROR_IO_ERROR,             /**< I/O error */
+       SENSOR_ERROR_INVALID_PARAMETER     = TIZEN_ERROR_INVALID_PARAMETER,    /**< Invalid parameter */
+       SENSOR_ERROR_NOT_SUPPORTED         = TIZEN_ERROR_NOT_SUPPORTED,        /**< Not supported */
+       SENSOR_ERROR_PERMISSION_DENIED     = TIZEN_ERROR_PERMISSION_DENIED,    /**< Permission denied */
+       SENSOR_ERROR_OUT_OF_MEMORY         = TIZEN_ERROR_OUT_OF_MEMORY,        /**< Out of memory */
+       SENSOR_ERROR_NO_DATA               = TIZEN_ERROR_NO_DATA,              /**< No data available
+                                                                                @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+       SENSOR_ERROR_NOT_NEED_CALIBRATION  = TIZEN_ERROR_SENSOR | 0x03,        /**< Sensor doesn't need calibration */
+       SENSOR_ERROR_OPERATION_FAILED      = TIZEN_ERROR_SENSOR | 0x06,        /**< Operation failed */
+       SENSOR_ERROR_NOT_AVAILABLE         = TIZEN_ERROR_SENSOR | 0x07,        /**< The sensor is supported, but currently not available
+                                                                                @if MOBILE (Since 3.0) @elseif WEARABLE (Since 2.3.2) @endif */
+} sensor_error_e;
+
+
 #endif /* __SENSOR_COMMON_H__ */
diff --git a/testcase/CMakeLists.txt b/testcase/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..4a100fc
--- /dev/null
@@ -0,0 +1,31 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(sensor-haltest C CXX)
+SET(GTEST_TEST "sensor-haltest")
+ADD_DEFINITIONS("-DUSE_DLOG")
+
+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 -fPIC")
+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} ${SRCS} ${src})
+    TARGET_LINK_LIBRARIES(${src_name} ${gtest_LDFLAGS} ${gtest_pkgs_LDFLAGS} -ldl)
+    INSTALL(TARGETS ${src_name} DESTINATION bin)
+ENDFOREACH()
\ No newline at end of file
diff --git a/testcase/accel_device_haltest.cpp b/testcase/accel_device_haltest.cpp
new file mode 100755 (executable)
index 0000000..149ffe3
--- /dev/null
@@ -0,0 +1,417 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * 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 <glib.h>
+#include <string.h>
+#include <gtest/gtest.h>
+#include <unistd.h>
+#include <iostream>
+
+
+#include <accel/accel_device.h>
+#include "sensor_common.h"
+
+using namespace std;
+
+#define SENSOR_NAME "SENSOR_ACCELEROMETER"
+#define SENSOR_TYPE_ACCEL "ACCEL"
+
+#define INPUT_NAME "accelerometer_sensor"
+
+
+int ret;
+bool sensor_supported;
+sensor_device *sensor_handle = NULL;
+
+#define SENSOR_SUPPORT_CHECK \
+       do {\
+               if (!sensor_supported) {\
+                       cout << "ACCEL SENSOR NOT SUPPORTED" << endl;\
+                       EXPECT_EQ(ret, SENSOR_ERROR_NOT_SUPPORTED);\
+                       return;\
+               }\
+       } while (0)
+
+
+
+/*
+ * main class
+ */
+class AccelSensorHalTest : public testing::Test
+{
+
+public:
+       virtual void SetUp()
+       {
+               sensor_supported = false;
+               sensor_handle = new accel_device;
+               if (sensor_handle == NULL) {
+                       cout << "accel sensor init failed " << endl;
+                       return;
+               }
+               sensor_supported = true;
+       }
+       virtual void TearDown()
+       {
+               if(sensor_handle) {
+                         delete sensor_handle;
+                         sensor_handle = NULL;
+               }
+               sensor_supported = false;
+       }
+       /*int GetSupportedFormat(int index)
+       {
+               return 0;
+       }*/
+};
+
+
+
+/**
+ * @testcase           get_poll_fdP
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, get fd of sensor device
+ * @apicovered         get_poll_fd
+ * @passcase           returns valid node handle value
+ * @failcase           returns invalid node handle value
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, get_poll_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       int node_handle = 0;
+       node_handle = sensor_handle->get_poll_fd();
+       EXPECT_NE(node_handle, 0);
+}
+
+
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           get valid sensor info
+ * @failcase           get invalid sensor info
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, get_sensorsP)
+{
+       SENSOR_SUPPORT_CHECK;
+       const sensor_info_t *sensor_info_tc = nullptr;
+       ret = sensor_handle->get_sensors(&sensor_info_tc);
+       EXPECT_NE(sensor_info_tc, nullptr);
+       EXPECT_EQ(ret, 1);
+}
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           when invalid parameter passed, returns invalid parameter error
+ * @failcase           when invalid parameter passed, doesn't return invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, get_sensorsN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->get_sensors(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+}
+
+
+
+/**
+ * @testcase           enableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when valid id passed, returns 1
+ * @failcase           when valid id passed, doesn't returns 1
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, enableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, true);
+
+
+}
+
+/**
+ * @testcase           enableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, enableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+
+}
+
+
+
+/**
+ * @testcase           disableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         disable
+ * @passcase           when valid id passed, returns true
+ * @failcase           when valid id passed, doesn't returns true
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, disableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           disableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         disabel
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, disableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+}
+
+/**
+ * @testcase           read_fdP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           get valid id and returns other than zero
+ * @failcase           get invalid id and returns other zero
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, read_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t *id = nullptr;
+       bool res = false;
+       res = sensor_handle->enable(1);
+       EXPECT_EQ(res, true);
+       ret = sensor_handle->read_fd(&id);
+       EXPECT_NE(id, nullptr);
+       EXPECT_NE(ret, 0);
+}
+
+/**
+ * @testcase           get_dataN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, read_fdN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->read_fd(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+
+}
+
+/**
+ * @testcase           get_dataP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_data
+ * @passcase           Gets valid data and length and returns 0
+ * @failcase           Doesn't get valid or length or doesn't return 0
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, get_dataP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = NULL;
+       int length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, 0);
+       EXPECT_NE(data, nullptr);
+       EXPECT_NE(length, 0);
+}
+
+/**
+ * @testcase           read_fdN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type....           auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           Returns invalid parameter error
+ * @failcase           Doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, get_dataN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = nullptr;
+       int length = 0;
+       ret = sensor_handle->get_data(id, nullptr, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       data = nullptr;
+       ret = sensor_handle->get_data(id, &data, nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       id = 0;
+       data = nullptr;
+       length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+}
+
+
+/**
+ * @testcase           set_intervalP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           when innterval is set, it returns true
+ * @failcase           Returns false
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, set_intervalP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       unsigned long val = 10;
+       bool res = false;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           set_intervalN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           Returns Invalid paramter error
+ * @failcase           Doesn't returns Invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(AccelSensorHalTest, set_intervalN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 0;
+       unsigned long val = 1;
+       bool res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+       id = 10;
+       res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+
+}
+
+
+int main(int argc, char **argv)
+{
+       testing::InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
+
diff --git a/testcase/gyro_device_haltest.cpp b/testcase/gyro_device_haltest.cpp
new file mode 100755 (executable)
index 0000000..f214628
--- /dev/null
@@ -0,0 +1,419 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * 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 <glib.h>
+#include <string.h>
+#include <gtest/gtest.h>
+#include <unistd.h>
+#include <iostream>
+
+
+#include "gyro/gyro_device.h"
+#include "sensor_common.h"
+
+using namespace std;
+
+
+#define SENSOR_NAME "SENSOR_GYROSCOPE"
+#define SENSOR_TYPE_GYRO "GYRO"
+
+#define INPUT_NAME "gyro_sensor"
+#define GYRO_SENSORHUB_POLL_NODE_NAME "gyro_poll_delay"
+
+
+int ret;
+bool sensor_supported;
+sensor_device *sensor_handle = NULL;
+
+#define SENSOR_SUPPORT_CHECK \
+       do {\
+               if (!sensor_supported) {\
+                       cout << "GYRO SENSOR NOT SUPPORTED" << endl;\
+                       EXPECT_EQ(ret, SENSOR_ERROR_NOT_SUPPORTED);\
+                       return;\
+               }\
+       } while (0)
+
+
+
+/*
+ * main class
+ */
+class GyroSensorHalTest : public testing::Test
+{
+
+public:
+       virtual void SetUp()
+       {
+               sensor_supported = false;
+               sensor_handle = new gyro_device;
+               if (sensor_handle == NULL) {
+                       cout << "accel sensor init failed " << endl;
+                       return;
+               }
+               sensor_supported = true;
+       }
+       virtual void TearDown()
+       {
+               if(sensor_handle) {
+                         delete sensor_handle;
+                         sensor_handle = NULL;
+               }
+               sensor_supported = false;
+       }
+       /*int GetSupportedFormat(int index)
+       {
+               return 0;
+       }*/
+};
+
+
+
+/**
+ * @testcase           get_poll_fdP
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, get fd of sensor device
+ * @apicovered         get_poll_fd
+ * @passcase           returns valid node handle value
+ * @failcase           returns invalid node handle value
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, get_poll_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       int node_handle = 0;
+       node_handle = sensor_handle->get_poll_fd();
+       EXPECT_NE(node_handle, 0);
+}
+
+
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           get valid sensor info
+ * @failcase           get invalid sensor info
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, get_sensorsP)
+{
+       SENSOR_SUPPORT_CHECK;
+       const sensor_info_t *sensor_info_tc = nullptr;
+       ret = sensor_handle->get_sensors(&sensor_info_tc);
+       EXPECT_NE(sensor_info_tc, nullptr);
+       EXPECT_EQ(ret, 1);
+}
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           when invalid parameter passed, returns invalid parameter error
+ * @failcase           when invalid parameter passed, doesn't return invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, get_sensorsN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->get_sensors(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+}
+
+
+
+/**
+ * @testcase           enableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when valid id passed, returns 1
+ * @failcase           when valid id passed, doesn't returns 1
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, enableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, true);
+
+
+}
+
+/**
+ * @testcase           enableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, enableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+
+}
+
+
+
+/**
+ * @testcase           disableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         disable
+ * @passcase           when valid id passed, returns true
+ * @failcase           when valid id passed, doesn't returns true
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, disableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           disableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         disabel
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, disableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+}
+
+/**
+ * @testcase           read_fdP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           get valid id and returns other than zero
+ * @failcase           get invalid id and returns other zero
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, read_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t *id = nullptr;
+       bool res = false;
+       res = sensor_handle->enable(1);
+       EXPECT_EQ(res, true);
+       ret = sensor_handle->read_fd(&id);
+       EXPECT_NE(id, nullptr);
+       EXPECT_NE(ret, 0);
+}
+
+/**
+ * @testcase           get_dataN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, read_fdN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->read_fd(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+
+}
+
+/**
+ * @testcase           get_dataP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_data
+ * @passcase           Gets valid data and length and returns 0
+ * @failcase           Doesn't get valid or length or doesn't return 0
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, get_dataP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = NULL;
+       int length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, 0);
+       EXPECT_NE(data, nullptr);
+       EXPECT_NE(length, 0);
+}
+
+/**
+ * @testcase           read_fdN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           Returns invalid parameter error
+ * @failcase           Doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, get_dataN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = nullptr;
+       int length = 0;
+       ret = sensor_handle->get_data(id, nullptr, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       data = nullptr;
+       ret = sensor_handle->get_data(id, &data, nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       id = 0;
+       data = nullptr;
+       length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+}
+
+
+/**
+ * @testcase           set_intervalP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           when innterval is set, it returns true
+ * @failcase           Returns false
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, set_intervalP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       unsigned long val = 10;
+       bool res = false;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           set_intervalN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           Returns Invalid paramter error
+ * @failcase           Doesn't returns Invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(GyroSensorHalTest, set_intervalN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 0;
+       unsigned long val = 1;
+       bool res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+       id = 10;
+       res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+
+}
+
+
+int main(int argc, char **argv)
+{
+       testing::InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
+
diff --git a/testcase/hrm_device_haltest.cpp b/testcase/hrm_device_haltest.cpp
new file mode 100755 (executable)
index 0000000..cb23429
--- /dev/null
@@ -0,0 +1,418 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * 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 <glib.h>
+#include <string.h>
+#include <gtest/gtest.h>
+#include <unistd.h>
+#include <iostream>
+
+
+#include "hrm/hrm_device.h"
+#include "sensor_common.h"
+
+using namespace std;
+
+#define SENSOR_NAME "SENSOR_HRM"
+#define SENSOR_TYPE_HRM "HRM"
+
+#define INPUT_NAME "hrm_lib_sensor"
+#define HRM_SENSORHUB_POLL_NODE_NAME "hrm_lib_poll_delay"
+
+
+int ret;
+bool sensor_supported;
+sensor_device *sensor_handle = NULL;
+
+#define SENSOR_SUPPORT_CHECK \
+       do {\
+               if (!sensor_supported) {\
+                       cout << "ACCEL SENSOR NOT SUPPORTED" << endl;\
+                       EXPECT_EQ(ret, SENSOR_ERROR_NOT_SUPPORTED);\
+                       return;\
+               }\
+       } while (0)
+
+
+
+/*
+ * main class
+ */
+class HRMSensorHalTest : public testing::Test
+{
+
+public:
+       virtual void SetUp()
+       {
+               sensor_supported = false;
+               sensor_handle = new hrm_device;
+               if (sensor_handle == NULL) {
+                       cout << "accel sensor init failed " << endl;
+                       return;
+               }
+               sensor_supported = true;
+       }
+       virtual void TearDown()
+       {
+               if(sensor_handle) {
+                         delete sensor_handle;
+                         sensor_handle = NULL;
+               }
+               sensor_supported = false;
+       }
+       /*int GetSupportedFormat(int index)
+       {
+               return 0;
+       }*/
+};
+
+
+
+/**
+ * @testcase           get_poll_fdP
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, get fd of sensor device
+ * @apicovered         get_poll_fd
+ * @passcase           returns valid node handle value
+ * @failcase           returns invalid node handle value
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, get_poll_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       int node_handle = 0;
+       node_handle = sensor_handle->get_poll_fd();
+       EXPECT_NE(node_handle, 0);
+}
+
+
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           get valid sensor info
+ * @failcase           get invalid sensor info
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, get_sensorsP)
+{
+       SENSOR_SUPPORT_CHECK;
+       const sensor_info_t *sensor_info_tc = nullptr;
+       ret = sensor_handle->get_sensors(&sensor_info_tc);
+       EXPECT_NE(sensor_info_tc, nullptr);
+       EXPECT_EQ(ret, 1);
+}
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           when invalid parameter passed, returns invalid parameter error
+ * @failcase           when invalid parameter passed, doesn't return invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, get_sensorsN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->get_sensors(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+}
+
+
+
+/**
+ * @testcase           enableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when valid id passed, returns 1
+ * @failcase           when valid id passed, doesn't returns 1
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, enableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, true);
+
+
+}
+
+/**
+ * @testcase           enableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, enableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+
+}
+
+
+
+/**
+ * @testcase           disableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         disable
+ * @passcase           when valid id passed, returns true
+ * @failcase           when valid id passed, doesn't returns true
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, disableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           disableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         disabel
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, disableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+}
+
+/**
+ * @testcase           read_fdP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           get valid id and returns other than zero
+ * @failcase           get invalid id and returns other zero
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, read_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t *id = nullptr;
+       bool res = false;
+       res = sensor_handle->enable(1);
+       EXPECT_EQ(res, true);
+       ret = sensor_handle->read_fd(&id);
+       EXPECT_NE(id, nullptr);
+       EXPECT_NE(ret, 0);
+}
+
+/**
+ * @testcase           get_dataN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, read_fdN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->read_fd(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+
+}
+
+/**
+ * @testcase           get_dataP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_data
+ * @passcase           Gets valid data and length and returns 0
+ * @failcase           Doesn't get valid or length or doesn't return 0
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, get_dataP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = NULL;
+       int length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, 0);
+       EXPECT_NE(data, nullptr);
+       EXPECT_NE(length, 0);
+}
+
+/**
+ * @testcase           read_fdN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           Returns invalid parameter error
+ * @failcase           Doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, get_dataN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = nullptr;
+       int length = 0;
+       ret = sensor_handle->get_data(id, nullptr, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       data = nullptr;
+       ret = sensor_handle->get_data(id, &data, nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       id = 0;
+       data = nullptr;
+       length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+}
+
+
+/**
+ * @testcase           set_intervalP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           when innterval is set, it returns true
+ * @failcase           Returns false
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, set_intervalP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       unsigned long val = 10;
+       bool res = false;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           set_intervalN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           Returns Invalid paramter error
+ * @failcase           Doesn't returns Invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMSensorHalTest, set_intervalN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 0;
+       unsigned long val = 1;
+       bool res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+       id = 10;
+       res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+
+}
+
+
+int main(int argc, char **argv)
+{
+       testing::InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
+
diff --git a/testcase/hrm_raw_device_haltest.cpp b/testcase/hrm_raw_device_haltest.cpp
new file mode 100755 (executable)
index 0000000..927dbad
--- /dev/null
@@ -0,0 +1,418 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * 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 <glib.h>
+#include <string.h>
+#include <gtest/gtest.h>
+#include <unistd.h>
+#include <iostream>
+
+
+#include "hrm_raw/hrm_raw_device.h"
+#include "sensor_common.h"
+
+using namespace std;
+
+#define SENSOR_NAME "SENSOR_HRM_RAW"
+#define SENSOR_TYPE_HRM_RAW "HRM_RAW"
+
+#define INPUT_NAME "hrm_raw_sensor"
+#define HRM_SENSORHUB_POLL_NODE_NAME "hrm_poll_delay"
+
+
+int ret;
+bool sensor_supported;
+sensor_device *sensor_handle = NULL;
+
+#define SENSOR_SUPPORT_CHECK \
+       do {\
+               if (!sensor_supported) {\
+                       cout << "ACCEL SENSOR NOT SUPPORTED" << endl;\
+                       EXPECT_EQ(ret, SENSOR_ERROR_NOT_SUPPORTED);\
+                       return;\
+               }\
+       } while (0)
+
+
+
+/*
+ * main class
+ */
+class HRMRawSensorHalTest : public testing::Test
+{
+
+public:
+       virtual void SetUp()
+       {
+               sensor_supported = false;
+               sensor_handle = new hrm_raw_device;
+               if (sensor_handle == NULL) {
+                       cout << "accel sensor init failed " << endl;
+                       return;
+               }
+               sensor_supported = true;
+       }
+       virtual void TearDown()
+       {
+               if(sensor_handle) {
+                         delete sensor_handle;
+                         sensor_handle = NULL;
+               }
+               sensor_supported = false;
+       }
+       /*int GetSupportedFormat(int index)
+       {
+               return 0;
+       }*/
+};
+
+
+
+/**
+ * @testcase           get_poll_fdP
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, get fd of sensor device
+ * @apicovered         get_poll_fd
+ * @passcase           returns valid node handle value
+ * @failcase           returns invalid node handle value
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, get_poll_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       int node_handle = 0;
+       node_handle = sensor_handle->get_poll_fd();
+       EXPECT_NE(node_handle, 0);
+}
+
+
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           get valid sensor info
+ * @failcase           get invalid sensor info
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, get_sensorsP)
+{
+       SENSOR_SUPPORT_CHECK;
+       const sensor_info_t *sensor_info_tc = nullptr;
+       ret = sensor_handle->get_sensors(&sensor_info_tc);
+       EXPECT_NE(sensor_info_tc, nullptr);
+       EXPECT_EQ(ret, 2);
+}
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           when invalid parameter passed, returns invalid parameter error
+ * @failcase           when invalid parameter passed, doesn't return invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, get_sensorsN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->get_sensors(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+}
+
+
+
+/**
+ * @testcase           enableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when valid id passed, returns 1
+ * @failcase           when valid id passed, doesn't returns 1
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, enableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, true);
+
+
+}
+
+/**
+ * @testcase           enableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, enableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+
+}
+
+
+
+/**
+ * @testcase           disableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         disable
+ * @passcase           when valid id passed, returns true
+ * @failcase           when valid id passed, doesn't returns true
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, disableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           disableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         disabel
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, disableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+}
+
+/**
+ * @testcase           read_fdP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           get valid id and returns other than zero
+ * @failcase           get invalid id and returns other zero
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, read_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t *id = nullptr;
+       bool res = false;
+       res = sensor_handle->enable(1);
+       EXPECT_EQ(res, true);
+       ret = sensor_handle->read_fd(&id);
+       EXPECT_NE(id, nullptr);
+       EXPECT_NE(ret, 0);
+}
+
+/**
+ * @testcase           get_dataN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, read_fdN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->read_fd(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+
+}
+
+/**
+ * @testcase           get_dataP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_data
+ * @passcase           Gets valid data and length and returns 0
+ * @failcase           Doesn't get valid or length or doesn't return 0
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, get_dataP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = NULL;
+       int length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, 0);
+       EXPECT_NE(data, nullptr);
+       EXPECT_NE(length, 0);
+}
+
+/**
+ * @testcase           read_fdN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           Returns invalid parameter error
+ * @failcase           Doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, get_dataN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = nullptr;
+       int length = 0;
+       ret = sensor_handle->get_data(id, nullptr, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       data = nullptr;
+       ret = sensor_handle->get_data(id, &data, nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       id = 0;
+       data = nullptr;
+       length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+}
+
+
+/**
+ * @testcase           set_intervalP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           when innterval is set, it returns true
+ * @failcase           Returns false
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, set_intervalP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       unsigned long val = 10;
+       bool res = false;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           set_intervalN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           Returns Invalid paramter error
+ * @failcase           Doesn't returns Invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(HRMRawSensorHalTest, set_intervalN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 0;
+       unsigned long val = 1;
+       bool res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+       id = 10;
+       res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+
+}
+
+
+int main(int argc, char **argv)
+{
+       testing::InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
+
diff --git a/testcase/light_device_haltest.cpp b/testcase/light_device_haltest.cpp
new file mode 100755 (executable)
index 0000000..e5ae5b5
--- /dev/null
@@ -0,0 +1,418 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * 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 <glib.h>
+#include <string.h>
+#include <gtest/gtest.h>
+#include <unistd.h>
+#include <iostream>
+
+
+#include "light/light_device.h"
+#include "sensor_common.h"
+
+using namespace std;
+
+#define SENSOR_NAME "SENSOR_LIGHT"
+#define SENSOR_TYPE_LIGHT "LIGHT"
+
+#define INPUT_NAME "light_sensor"
+#define LIGHT_SENSORHUB_POLL_NODE_NAME "light_poll_delay"
+
+
+int ret;
+bool sensor_supported;
+sensor_device *sensor_handle = NULL;
+
+#define SENSOR_SUPPORT_CHECK \
+       do {\
+               if (!sensor_supported) {\
+                       cout << "ACCEL SENSOR NOT SUPPORTED" << endl;\
+                       EXPECT_EQ(ret, SENSOR_ERROR_NOT_SUPPORTED);\
+                       return;\
+               }\
+       } while (0)
+
+
+
+/*
+ * main class
+ */
+class LightSensorHalTest : public testing::Test
+{
+
+public:
+       virtual void SetUp()
+       {
+               sensor_supported = false;
+               sensor_handle = new light_device;
+               if (sensor_handle == NULL) {
+                       cout << "accel sensor init failed " << endl;
+                       return;
+               }
+               sensor_supported = true;
+       }
+       virtual void TearDown()
+       {
+               if(sensor_handle) {
+                         delete sensor_handle;
+                         sensor_handle = NULL;
+               }
+               sensor_supported = false;
+       }
+       /*int GetSupportedFormat(int index)
+       {
+               return 0;
+       }*/
+};
+
+
+
+/**
+ * @testcase           get_poll_fdP
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, get fd of sensor device
+ * @apicovered         get_poll_fd
+ * @passcase           returns valid node handle value
+ * @failcase           returns invalid node handle value
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, get_poll_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       int node_handle = 0;
+       node_handle = sensor_handle->get_poll_fd();
+       EXPECT_NE(node_handle, 0);
+}
+
+
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           get valid sensor info
+ * @failcase           get invalid sensor info
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, get_sensorsP)
+{
+       SENSOR_SUPPORT_CHECK;
+       const sensor_info_t *sensor_info_tc = nullptr;
+       ret = sensor_handle->get_sensors(&sensor_info_tc);
+       EXPECT_NE(sensor_info_tc, nullptr);
+       EXPECT_EQ(ret, 1);
+}
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           when invalid parameter passed, returns invalid parameter error
+ * @failcase           when invalid parameter passed, doesn't return invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, get_sensorsN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->get_sensors(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+}
+
+
+
+/**
+ * @testcase           enableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when valid id passed, returns 1
+ * @failcase           when valid id passed, doesn't returns 1
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, enableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, true);
+
+
+}
+
+/**
+ * @testcase           enableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, enableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+
+}
+
+
+
+/**
+ * @testcase           disableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         disable
+ * @passcase           when valid id passed, returns true
+ * @failcase           when valid id passed, doesn't returns true
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, disableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           disableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         disabel
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, disableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+}
+
+/**
+ * @testcase           read_fdP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           get valid id and returns other than zero
+ * @failcase           get invalid id and returns other zero
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, read_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t *id = nullptr;
+       bool res = false;
+       res = sensor_handle->enable(1);
+       EXPECT_EQ(res, true);
+       ret = sensor_handle->read_fd(&id);
+       EXPECT_NE(id, nullptr);
+       EXPECT_NE(ret, 0);
+}
+
+/**
+ * @testcase           get_dataN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, read_fdN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->read_fd(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+
+}
+
+/**
+ * @testcase           get_dataP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_data
+ * @passcase           Gets valid data and length and returns 0
+ * @failcase           Doesn't get valid or length or doesn't return 0
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, get_dataP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = NULL;
+       int length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, 0);
+       EXPECT_NE(data, nullptr);
+       EXPECT_NE(length, 0);
+}
+
+/**
+ * @testcase           read_fdN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           Returns invalid parameter error
+ * @failcase           Doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, get_dataN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = nullptr;
+       int length = 0;
+       ret = sensor_handle->get_data(id, nullptr, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       data = nullptr;
+       ret = sensor_handle->get_data(id, &data, nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       id = 0;
+       data = nullptr;
+       length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+}
+
+
+/**
+ * @testcase           set_intervalP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           when innterval is set, it returns true
+ * @failcase           Returns false
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, set_intervalP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       unsigned long val = 10;
+       bool res = false;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           set_intervalN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           Returns Invalid paramter error
+ * @failcase           Doesn't returns Invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(LightSensorHalTest, set_intervalN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 0;
+       unsigned long val = 1;
+       bool res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+       id = 10;
+       res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+
+}
+
+
+int main(int argc, char **argv)
+{
+       testing::InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
+
diff --git a/testcase/pressure_device_haltest.cpp b/testcase/pressure_device_haltest.cpp
new file mode 100755 (executable)
index 0000000..35f6a9e
--- /dev/null
@@ -0,0 +1,415 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * 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 <glib.h>
+#include <string.h>
+#include <gtest/gtest.h>
+#include <unistd.h>
+#include <iostream>
+
+
+#include "pressure/pressure_device.h"
+#include "sensor_common.h"
+
+using namespace std;
+
+#define SENSOR_NAME "SENSOR_PRESSURE"
+#define SENSOR_TYPE_PRESSURE "PRESSURE"
+
+#define INPUT_NAME "pressure_sensor"
+#define PRESSURE_SENSORHUB_POLL_NODE_NAME "pressure_poll_delay"
+
+int ret;
+bool sensor_supported;
+sensor_device *sensor_handle = NULL;
+
+#define SENSOR_SUPPORT_CHECK \
+       do {\
+               if (!sensor_supported) {\
+                       cout << "ACCEL SENSOR NOT SUPPORTED" << endl;\
+                       EXPECT_EQ(ret, SENSOR_ERROR_NOT_SUPPORTED);\
+                       return;\
+               }\
+       } while (0)
+
+
+
+/*
+ * main class
+ */
+class PressureSensorHalTest : public testing::Test
+{
+
+public:
+       virtual void SetUp()
+       {
+               sensor_supported = false;
+               sensor_handle = new pressure_device;
+               if (sensor_handle == NULL) {
+                       cout << "accel sensor init failed " << endl;
+                       return;
+               }
+               sensor_supported = true;
+       }
+       virtual void TearDown()
+       {
+               if(sensor_handle) {
+                         delete sensor_handle;
+                         sensor_handle = NULL;
+               }
+               sensor_supported = false;
+       }
+       /*int GetSupportedFormat(int index)
+       {
+               return 0;
+       }*/
+};
+
+
+
+/**
+ * @testcase           get_poll_fdP
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, get fd of sensor device
+ * @apicovered         get_poll_fd
+ * @passcase           returns valid node handle value
+ * @failcase           returns invalid node handle value
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, get_poll_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       int node_handle = 0;
+       node_handle = sensor_handle->get_poll_fd();
+       EXPECT_NE(node_handle, 0);
+}
+
+
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           get valid sensor info
+ * @failcase           get invalid sensor info
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, get_sensorsP)
+{
+       SENSOR_SUPPORT_CHECK;
+       const sensor_info_t *sensor_info_tc = nullptr;
+       ret = sensor_handle->get_sensors(&sensor_info_tc);
+       EXPECT_NE(sensor_info_tc, nullptr);
+       EXPECT_EQ(ret, 1);
+}
+
+/**
+ * @testcase           get_hal_versionN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         get_sensors
+ * @passcase           when invalid parameter passed, returns invalid parameter error
+ * @failcase           when invalid parameter passed, doesn't return invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, get_sensorsN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->get_sensors(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+}
+
+
+
+/**
+ * @testcase           enableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when valid id passed, returns 1
+ * @failcase           when valid id passed, doesn't returns 1
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, enableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, true);
+}
+
+/**
+ * @testcase           enableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         enable
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, enableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->enable(id);
+       EXPECT_EQ(res, false);
+
+}
+
+
+
+/**
+ * @testcase           disableP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         disable
+ * @passcase           when valid id passed, returns true
+ * @failcase           when valid id passed, doesn't returns true
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, disableP)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = false;
+       uint32_t id = 1;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           disableN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         disabel
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, disableN)
+{
+       SENSOR_SUPPORT_CHECK;
+       bool res = true;
+       uint32_t id = 0;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+       res = true;
+       id = 10;
+       res = sensor_handle->disable(id);
+       EXPECT_EQ(res, false);
+}
+
+/**
+ * @testcase           read_fdP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           get valid id and returns other than zero
+ * @failcase           get invalid id and returns other zero
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, read_fdP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t *id = nullptr;
+       bool res = false;
+       res = sensor_handle->enable(1);
+       EXPECT_EQ(res, true);
+       ret = sensor_handle->read_fd(&id);
+       EXPECT_NE(id, nullptr);
+       EXPECT_NE(ret, 0);
+}
+
+/**
+ * @testcase           get_dataN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           when invalid id passed, returns invalid parameter error
+ * @failcase           when invalid id passed, doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, read_fdN)
+{
+       SENSOR_SUPPORT_CHECK;
+       ret = sensor_handle->read_fd(nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+
+
+}
+
+/**
+ * @testcase           get_dataP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         get_data
+ * @passcase           Gets valid data and length and returns 0
+ * @failcase           Doesn't get valid or length or doesn't return 0
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, get_dataP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = NULL;
+       int length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, 0);
+       EXPECT_NE(data, nullptr);
+       EXPECT_NE(length, 0);
+}
+
+/**
+ * @testcase           read_fdN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         read_fd
+ * @passcase           Returns invalid parameter error
+ * @failcase           Doesn't returns invalid parameter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, get_dataN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       sensor_data_t *data = nullptr;
+       int length = 0;
+       ret = sensor_handle->get_data(id, nullptr, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       data = nullptr;
+       ret = sensor_handle->get_data(id, &data, nullptr);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+       id = 0;
+       data = nullptr;
+       length = 0;
+       ret = sensor_handle->get_data(id, &data, &length);
+       EXPECT_EQ(ret, SENSOR_ERROR_INVALID_PARAMETER);
+}
+
+
+/**
+ * @testcase           set_intervalP
+ * @since_tizen        4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description        Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           when innterval is set, it returns true
+ * @failcase           Returns false
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, set_intervalP)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 1;
+       unsigned long val = 10;
+       bool res = false;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, true);
+
+}
+
+/**
+ * @testcase           set_intervalN
+ * @since_tizen                4.0
+ * @author             SRID(srinivasa.m)
+ * @reviewer           SRID(randeep.s)
+ * @type               auto
+ * @description                Positive, Release video buffer to get new frame in it
+ * @apicovered         set_interval
+ * @passcase           Returns Invalid paramter error
+ * @failcase           Doesn't returns Invalid paramter error
+ * @precondition       None
+ * @postcondition      None
+ */
+TEST_F(PressureSensorHalTest, set_intervalN)
+{
+       SENSOR_SUPPORT_CHECK;
+       uint32_t id = 0;
+       unsigned long val = 1;
+       bool res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+       id = 10;
+       res = true;
+       res = sensor_handle->set_interval(id, val);
+       EXPECT_EQ(res, false);
+
+}
+
+
+int main(int argc, char **argv)
+{
+       testing::InitGoogleTest(&argc, argv);
+
+       return RUN_ALL_TESTS();
+}
+