Make TC for 'vc_get_system_command_list()' 35/261535/1
authorSuyeon Hwang <stom.hwang@samsung.com>
Tue, 20 Jul 2021 02:33:41 +0000 (11:33 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Tue, 20 Jul 2021 09:09:39 +0000 (18:09 +0900)
Change-Id: I21e3163e12f8eee92eedb1bd5c254f45674ceaea
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
tests/org.tizen.vc-unittests.xml
tests/src/vc_unittests.cpp

index 663ba43..571a9e9 100644 (file)
@@ -5,9 +5,11 @@
         <description>Voice Control unittests</description>
         <service-application appid="org.tizen.vc-unittests" launch_mode="caller" exec="vc-unittests" hw-acceleration="use-GL" nodisplay="true" multiple="false" type="capp" taskmanage="false">
             <label>Voice Control unittests</label>
+            <background-category value="assistant"/>
             <background-category value="media"/>
         </service-application>
         <privileges>
             <privilege>http://tizen.org/privilege/recorder</privilege>
+            <privilege>http://tizen.org/privilege/voicecontrol.manager</privilege>
         </privileges>
 </manifest>
index 531f36f..0320972 100644 (file)
 #include <system_info.h>
 
 #include <voice_control.h>
+#include <voice_control_manager.h>
 #include "system_info_mock.h"
 #include "cynara_mock.h"
 
 static int g_vc_init = false;
 static vc_state_e g_vc_state = VC_STATE_NONE;
+static vc_state_e g_vc_mgr_state = VC_STATE_NONE;
+static vc_service_state_e g_vc_mgr_service_state = VC_SERVICE_STATE_NONE;
 static bool g_vc_supported = false;
 
+static bool __is_mgr_state_changed(vc_state_e state, int wait_delay)
+{
+       int max_count = wait_delay * 10;
+       int count = 0;
+       while (max_count > count && state != g_vc_mgr_state) {
+               ecore_main_loop_iterate();
+               usleep(100000);
+               count++;
+       }
+
+       if (state != g_vc_mgr_state) {
+               return false;
+       }
+
+       return true;
+}
+
+static bool __is_mgr_service_state_changed(vc_service_state_e state, int wait_delay)
+{
+       int max_count = wait_delay * 10;
+       int count = 0;
+       while (max_count > count && state != g_vc_mgr_service_state) {
+               ecore_main_loop_iterate();
+               usleep(100000);
+               count++;
+       }
+
+       if (state != g_vc_mgr_service_state) {
+               return false;
+       }
+
+       return true;
+}
+
 static void __vc_result_cb(vc_result_event_e event, vc_cmd_list_h vc_cmd_list, const char* result, void* user_data)
 {
 }
@@ -44,6 +81,16 @@ static void __vc_state_changed_cb(vc_state_e previous, vc_state_e current, void*
        g_vc_state = current;
 }
 
+static void __vc_mgr_state_changed_cb(vc_state_e previous, vc_state_e current, void* user_data)
+{
+       g_vc_mgr_state = current;
+}
+
+static void __vc_mgr_service_state_changed_cb(vc_service_state_e previous, vc_service_state_e current, void* user_data)
+{
+       g_vc_mgr_service_state = current;
+}
+
 static void __vc_service_state_changed_cb(vc_service_state_e previous, vc_service_state_e current, void* user_data)
 {
 }
@@ -57,6 +104,27 @@ static bool __vc_cmd_list_cb(vc_cmd_h vc_command, void* user_data)
        return true;
 }
 
+static void __vc_mgr_ready()
+{
+       vc_cmd_h system_command = nullptr;
+       EXPECT_EQ(vc_cmd_create(&system_command), VC_ERROR_NONE);
+       EXPECT_EQ(vc_cmd_set_command(system_command, "test"), VC_ERROR_NONE);
+       EXPECT_EQ(vc_cmd_set_type(system_command, VC_COMMAND_TYPE_SYSTEM), VC_ERROR_NONE);
+
+       vc_cmd_list_h commands = nullptr;
+       EXPECT_EQ(vc_cmd_list_create(&commands), VC_ERROR_NONE);
+       EXPECT_EQ(vc_cmd_list_add(commands, system_command), VC_ERROR_NONE);
+
+       EXPECT_EQ(vc_mgr_initialize(), VC_ERROR_NONE);
+       EXPECT_EQ(vc_mgr_set_state_changed_cb(__vc_mgr_state_changed_cb, nullptr), VC_ERROR_NONE);
+       EXPECT_EQ(vc_mgr_set_service_state_changed_cb(__vc_mgr_service_state_changed_cb, nullptr), VC_ERROR_NONE);
+       EXPECT_EQ(vc_mgr_prepare(), VC_ERROR_NONE);
+       ASSERT_EQ(true, __is_mgr_state_changed(VC_STATE_READY, 5));
+       ASSERT_EQ(true, __is_mgr_service_state_changed(VC_SERVICE_STATE_READY, 5));
+
+       EXPECT_EQ(vc_mgr_set_command_list(commands), VC_ERROR_NONE);
+}
+
 namespace {
 
 class VCTest : public testing::Test {
@@ -688,6 +756,47 @@ TEST_F(VCTest, vc_get_system_command_list_p)
 }
 
 /**
+ * @testcase           utc_vc_get_system_command_list_p2
+ * @since_tizen                3.0
+ * @description                Positive UTC for get the system command list when system command is registered
+ */
+TEST_F(VCTest, vc_get_system_command_list_p2)
+{
+       if (false == g_vc_supported) {
+               EXPECT_EQ(g_vc_init, false);
+
+               int ret = VC_ERROR_NONE;
+               vc_cmd_list_h list = NULL;
+               ret = vc_get_system_command_list(&list);
+               EXPECT_EQ(ret, VC_ERROR_NOT_SUPPORTED);
+       } else {
+               EXPECT_EQ(g_vc_init, true);
+
+               __vc_mgr_ready();
+
+               int ret = VC_ERROR_NONE;
+               ret = vc_prepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               while (VC_STATE_READY != g_vc_state) {
+                       ecore_main_loop_iterate();
+               }
+
+               vc_cmd_list_h list = NULL;
+               ret = vc_get_system_command_list(&list);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+
+               int count = 0;
+               ret = vc_cmd_list_get_count(list, &count);
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+               EXPECT_GT(count, 0);
+
+               ret = vc_unprepare();
+               EXPECT_EQ(ret, VC_ERROR_NONE);
+       }
+}
+
+/**
  * @testcase           utc_vc_get_system_command_list_n
  * @since_tizen                3.0
  * @description                Negative UTC for get the system command list (Invalid parameter)