haltest: add test for bezel 87/255587/3
authorYoungjae Cho <y0.cho@samsung.com>
Mon, 15 Mar 2021 04:22:26 +0000 (13:22 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Mon, 22 Mar 2021 01:55:47 +0000 (10:55 +0900)
Change-Id: If8aff416fe0eb7d3f38e16364a7d13aa0b07c8fc
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
haltest/CMakeLists.txt
haltest/bezel.cpp [new file with mode: 0644]
haltest/haltest.h

index 8f4f5c04cc975c63ff7806e3a20297a324eb84cd..f4180a4ab97a4d19f5b202a9a7251e222c6d9c5a 100644 (file)
@@ -43,7 +43,8 @@ SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
 SET(src ${CMAKE_SOURCE_DIR}/haltest/main.cpp
        ${CMAKE_SOURCE_DIR}/haltest/display.cpp
        ${CMAKE_SOURCE_DIR}/haltest/battery.cpp
-       ${CMAKE_SOURCE_DIR}/haltest/board.cpp)
+       ${CMAKE_SOURCE_DIR}/haltest/board.cpp
+       ${CMAKE_SOURCE_DIR}/haltest/bezel.cpp)
 ADD_EXECUTABLE(${PROJECT_NAME} ${src})
 TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${gtest_LDFLAGS} ${gtest_pkgs_LDFLAGS} -ldl ${HALAPI_LIBRARY})
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin/hal)
diff --git a/haltest/bezel.cpp b/haltest/bezel.cpp
new file mode 100644 (file)
index 0000000..c6be72c
--- /dev/null
@@ -0,0 +1,247 @@
+#include <system_info.h>
+
+#include "haltest.h"
+#include "hal-bezel.h"
+
+class BEZEL : public testing::Test {
+       protected:
+               static void SetUpHalTestSuite() {
+                       int ret_val;
+                       enum bezel_state bstate;
+
+                       ret_val = system_info_get_platform_bool(FEATURE_BEZEL, &BEZEL::supported);
+                       ASSERT_EQ(ret_val, SYSTEM_INFO_ERROR_NONE) << "Failed to get bezel feature";
+
+                       // setup original states for recovery after each testcase
+                       ret_val = hal_device_bezel_get_state(&bstate);
+                       orig_state = (ret_val == 0 ? (int)bstate : -1);
+               }
+
+               void SetUp() override {}
+
+               void TearDown() override {}
+
+               static void TearDownHalTestSuite() {
+                       if (BEZEL::orig_state != -1)
+                               hal_device_bezel_set_state((enum bezel_state)BEZEL::orig_state);
+               }
+
+               static bool supported;
+               static int orig_state;
+               static int orig_sw_state;
+               static int orig_vib_state;
+};
+
+bool BEZEL::supported = false;
+int BEZEL::orig_state = -1;
+int BEZEL::orig_sw_state = -1;
+int BEZEL::orig_vib_state = -1;
+
+
+TEST_F(BEZEL, GetBackendP)
+{
+       int ret_val;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       ret_val = hal_device_bezel_get_backend();
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get bezel device", ret_val);
+}
+
+TEST_F(BEZEL, GetStateP)
+{
+       int ret_val;
+       enum bezel_state state;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       ret_val = hal_device_bezel_get_state(&state);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get bezel state", ret_val);
+}
+
+TEST_F(BEZEL, SetStateP)
+{
+       int ret_val;
+       enum bezel_state state;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       // test BEZEL_TURNOFF
+       ret_val = hal_device_bezel_set_state(BEZEL_TURNOFF);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to set bezel state", ret_val);
+
+       ret_val = hal_device_bezel_get_state(&state);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get bezel state", ret_val);
+       EXPECT_EQ(state, BEZEL_TURNOFF) << "Failed to set BEZEL_TURNOFF";
+
+       // test BEZEL_TURNON
+       ret_val = hal_device_bezel_set_state(BEZEL_TURNON);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to set bezel state", ret_val);
+
+       ret_val = hal_device_bezel_get_state(&state);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get bezel state", ret_val);
+       EXPECT_EQ(state, BEZEL_TURNON) << "Failed to set BEZEL_TURNON";
+
+       // restore
+       if (BEZEL::orig_state != -1)
+               hal_device_bezel_set_state((enum bezel_state)BEZEL::orig_state);
+}
+
+TEST_F(BEZEL, GetSwStateP)
+{
+       int ret_val;
+       enum bezel_state state;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       ret_val = hal_device_bezel_get_sw_state(&state);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get swbezel state", ret_val);
+}
+
+TEST_F(BEZEL, SetSwStateP)
+{
+       int ret_val;
+       enum bezel_state state;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       // test BEZEL_TURNOFF
+       ret_val = hal_device_bezel_set_sw_state(BEZEL_TURNOFF);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to set swbezel", ret_val);
+
+       ret_val = hal_device_bezel_get_sw_state(&state);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get swbezel", ret_val);
+       EXPECT_EQ(state, BEZEL_TURNOFF) << "Fail to set swbezel";
+
+       // test BEZEL_TURNON
+       ret_val = hal_device_bezel_set_sw_state(BEZEL_TURNON);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to set swbezel", ret_val);
+
+       ret_val = hal_device_bezel_get_sw_state(&state);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get swbezel", ret_val);
+       EXPECT_EQ(state, BEZEL_TURNON) << "Fail to set swbezel";
+
+       // restore
+       if (BEZEL::orig_state != -1)
+               hal_device_bezel_set_sw_state((enum bezel_state)BEZEL::orig_state);
+}
+
+TEST_F(BEZEL, GetVibStateP)
+{
+       int ret_val;
+       enum bezel_state vstate;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       ret_val = hal_device_bezel_get_vib_state(&vstate);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get vibration state", ret_val);
+}
+
+TEST_F(BEZEL, SetVibStateP)
+{
+       int ret_val;
+       enum bezel_state vstate;
+
+       if (!BEZEL::supported) {
+               SKIP_MESSAGE("Bezel not supported");
+               return;
+       }
+
+       // test BEZEL_TURNOFF
+       ret_val = hal_device_bezel_set_vib_state(BEZEL_TURNOFF);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to set vibration state", ret_val);
+
+       ret_val = hal_device_bezel_get_vib_state(&vstate);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get vibartion state", ret_val);
+       EXPECT_EQ(vstate, BEZEL_TURNOFF) << "Failed to set vibration state";
+
+       // test BEZEL_TURNON
+       ret_val = hal_device_bezel_set_vib_state(BEZEL_TURNON);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to set vibration state", ret_val);
+
+       ret_val = hal_device_bezel_get_vib_state(&vstate);
+       if (ret_val == -ENODEV) {
+               SKIP_MESSAGE("Not supported HAL");
+               return;
+       }
+       EXPECT_EQ(ret_val, 0) << strerr("Failed to get vibartion state", ret_val);
+       EXPECT_EQ(vstate, BEZEL_TURNON) << "Failed to set vibration state";
+
+       // restore
+       if (BEZEL::orig_vib_state != -1)
+               hal_device_bezel_set_vib_state((enum bezel_state)BEZEL::orig_vib_state);
+}
index 0df54ed3721d78aa12f1c093756458bda33340f0..287b196b11e4dd75f2a98c191033fe3c31e7951a 100644 (file)
@@ -17,6 +17,7 @@
 #define __HALTEST_H__
 
 #include <gtest/gtest.h>
+#include <string.h>
 
 // hack gtest internal for print message
 namespace testing
@@ -64,4 +65,23 @@ do { \
 #define TearDownHalTestSuite TearDownTestCase
 #endif
 
+#define BUFMAX 256
+static char errbuf1[BUFMAX];
+
+static inline const char* strerr(const char* message, int eno)
+{
+       if (eno == 0)
+               return message;
+
+       if (eno < 0)
+               eno = -eno;
+
+       if (message)
+               snprintf(errbuf1, BUFMAX, "%s (%s)", message, strerror(eno));
+       else
+               snprintf(errbuf1, BUFMAX, "%s", strerror(eno));
+
+       return errbuf1;
+}
+
 #endif /* __HALTEST_H__ */