This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git

commit 23278f4558f94abd76c85c9e80a104ba1b794f05
Author: liuhongchao <[email protected]>
AuthorDate: Tue May 21 11:12:37 2024 +0800

    apps/dirvertest: Fix cmocka --list serial port hang
    
    Signed-off-by: liuhongchao <[email protected]>
---
 testing/drivertest/drivertest_touchpanel.c | 60 +++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 17 deletions(-)

diff --git a/testing/drivertest/drivertest_touchpanel.c 
b/testing/drivertest/drivertest_touchpanel.c
index 950080cee..9a68b283b 100644
--- a/testing/drivertest/drivertest_touchpanel.c
+++ b/testing/drivertest/drivertest_touchpanel.c
@@ -541,7 +541,7 @@ void touchpad_read(lv_indev_t *indev, lv_indev_data_t *data)
 
 bool touchpad_init(touchpad_s **touchpad,
                    const char * input_path,
-                   int screen_shape)
+                   uint32_t screen_shape)
 {
   touchpad_s *tmp_touchpad;
 
@@ -687,20 +687,13 @@ static void lv_nuttx_uv_loop(uv_loop_t *loop, 
lv_nuttx_result_t *result)
 #endif
 
 /****************************************************************************
- * Name: touchpanel_main
+ * Name: parse_commandline
  ****************************************************************************/
 
-int main(int argc, FAR char *argv[])
+static void parse_commandline(uint32_t *screen_shape,
+                              int argc, FAR char **argv)
 {
-  lv_nuttx_dsc_t info;
-  lv_nuttx_result_t result;
-  touchpad_s *touchpad = NULL;
   int ch;
-  int screen_shape = 0;
-
-#ifdef CONFIG_LV_USE_NUTTX_LIBUV
-  uv_loop_t ui_loop;
-#endif
 
   while ((ch = getopt(argc, argv, "hs::")) != -1)
     {
@@ -710,16 +703,31 @@ int main(int argc, FAR char *argv[])
           show_usage();
           break;
         case 's':
-          screen_shape = atoi(optarg);
+          *screen_shape = atoi(optarg);
           break;
         }
     }
 
-  if (screen_shape != 0 && screen_shape != 1)
+  if (*screen_shape > 1)
     {
       show_usage();
-      return 1;
     }
+}
+
+/****************************************************************************
+ * Name: test_case_touchpanel
+ ****************************************************************************/
+
+static void test_case_touchpanel(FAR void **state)
+{
+  lv_nuttx_dsc_t info;
+  lv_nuttx_result_t result;
+  touchpad_s *touchpad = NULL;
+  FAR uint32_t *screen_shape = (FAR uint32_t *)*state;
+
+#ifdef CONFIG_LV_USE_NUTTX_LIBUV
+  uv_loop_t ui_loop;
+#endif
 
   /* LVGL initialization */
 
@@ -730,10 +738,10 @@ int main(int argc, FAR char *argv[])
   if (result.disp == NULL)
     {
       LV_LOG_ERROR("touchpad_init initialization failure!");
-      return 1;
+      return;
     }
 
-  if (!touchpad_init(&touchpad, info.input_path, screen_shape))
+  if (!touchpad_init(&touchpad, info.input_path, *screen_shape))
     {
       LV_LOG_ERROR("touchpad_init init failed");
       goto errout;
@@ -757,5 +765,23 @@ errout:
   lv_deinit();
 
   LV_LOG_USER("Terminating!\n");
-  return 0;
+  return;
+}
+
+/****************************************************************************
+ * Name: touchpanel_main
+ ****************************************************************************/
+
+int main(int argc, FAR char *argv[])
+{
+  uint32_t screen_shape = 0;
+
+  const struct CMUnitTest tests[] =
+  {
+    cmocka_unit_test_prestate(test_case_touchpanel, &screen_shape)
+  };
+
+  parse_commandline(&screen_shape, argc, argv);
+
+  return cmocka_run_group_tests(tests, NULL, NULL);
 }

Reply via email to