mmi-client-tests: create mmi-client-testcases.cpp and add it in meson.build of tests... 87/264287/1
authorDuna Oh <duna.oh@samsung.com>
Tue, 14 Sep 2021 16:40:16 +0000 (01:40 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Wed, 15 Sep 2021 12:05:54 +0000 (21:05 +0900)
Change-Id: I931b6041223376edbeb3fa1b3294abbf92de7f68

src/mmimgr/mmi-client.c
tests/meson.build
tests/mmi-client-tests.cpp [new file with mode: 0644]

index 56b448a..db2acc9 100644 (file)
@@ -143,14 +143,14 @@ client_manager_remove_client(const char *sender)
        if (mc->sender)
                free(mc->sender);
 
-       rpc_port_mmifw_focus_event_cb_destroy(mc->focus_cb_h);
-       rpc_port_mmifw_state_change_event_cb_destroy(mc->state_change_cb_h);
-       rpc_port_mmifw_wakeup_event_cb_destroy(mc->wakeup_cb_h);
-       rpc_port_mmifw_key_event_cb_destroy(mc->key_cb_h);
-       rpc_port_mmifw_gesture_event_cb_destroy(mc->gesture_cb_h);
-       rpc_port_mmifw_voice_event_cb_destroy(mc->voice_cb_h);
-       rpc_port_mmifw_action_event_cb_destroy(mc->action_cb_h);
-       rpc_port_mmifw_feedback_event_cb_destroy(mc->feedback_cb_h);
+       if (mc->focus_cb_h)     rpc_port_mmifw_focus_event_cb_destroy(mc->focus_cb_h);
+       if (mc->state_change_cb_h) rpc_port_mmifw_state_change_event_cb_destroy(mc->state_change_cb_h);
+       if (mc->wakeup_cb_h) rpc_port_mmifw_wakeup_event_cb_destroy(mc->wakeup_cb_h);
+       if (mc->key_cb_h) rpc_port_mmifw_key_event_cb_destroy(mc->key_cb_h);
+       if (mc->gesture_cb_h) rpc_port_mmifw_gesture_event_cb_destroy(mc->gesture_cb_h);
+       if (mc->voice_cb_h) rpc_port_mmifw_voice_event_cb_destroy(mc->voice_cb_h);
+       if (mc->action_cb_h) rpc_port_mmifw_action_event_cb_destroy(mc->action_cb_h);
+       if (mc->feedback_cb_h) rpc_port_mmifw_feedback_event_cb_destroy(mc->feedback_cb_h);
 
        mc->focus_cb_h = NULL;
        mc->state_change_cb_h = NULL;
index d907bc3..a96d6dc 100644 (file)
@@ -1,6 +1,7 @@
 mmi_manager_tests_srcs = [
        'mmi-manager-tests.cpp',
        'mmi-provider-tests.cpp',
+       'mmi-client-tests.cpp'
        ]
 
 gmock_dep = dependency('gmock', method : 'pkg-config')
diff --git a/tests/mmi-client-tests.cpp b/tests/mmi-client-tests.cpp
new file mode 100644 (file)
index 0000000..9d5fd44
--- /dev/null
@@ -0,0 +1,253 @@
+/*
+* Copyright © 2021 Samsung Electronics co., Ltd. All Rights Reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice (including the next
+* paragraph) shall be included in all copies or substantial portions of the
+* Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+* DEALINGS IN THE SOFTWARE.
+*/
+
+#include "mmi-client.h"
+#include "mmi-manager-tests.h"
+#include "interface/mmifw_stub.h"
+
+#include <Ecore.h>
+
+class MMIClientTest : public ::testing::Test
+{
+public:
+       void SetUp(void) override
+       {
+       }
+
+       void TearDown(void) override
+       {
+       }
+};
+
+
+TEST_F(MMIClientTest, MMIClientInitShutdown)
+{
+       int res = 0;
+
+       client_manager_init();
+       res = 1;
+
+       EXPECT_EQ(res, 1);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientAddGetClient)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       mmi_client *mc = nullptr, *mc_tmp = nullptr;
+
+       client_manager_init();
+
+       mc = client_manager_add_client(app_id);
+       EXPECT_NE(mc, nullptr);
+       mc_tmp = client_manager_get_client(app_id);
+
+       EXPECT_EQ(mc_tmp, mc);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientAddRemoveClient)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       mmi_client *mc = nullptr;
+       int res = 0;
+
+       client_manager_init();
+
+       mc = client_manager_add_client(app_id);
+       EXPECT_NE(mc, nullptr);
+       res = client_manager_remove_client(app_id);
+
+       EXPECT_EQ(res, 0);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientSetGetClientUID)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       mmi_client *mc = nullptr;
+       int res = -1;
+       uid_t uid = 1;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       res = client_manager_set_client_uid(mc, uid);
+       EXPECT_NE(res, -1);
+       res = client_manager_get_client_uid(mc);
+       EXPECT_NE(res, -1);
+
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientSetGetClientPID)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       mmi_client *mc = nullptr;
+       int res = -1;
+       uid_t pid = 1;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       res = client_manager_set_client_pid(mc, pid);
+       EXPECT_NE(res, -1);
+       res = client_manager_get_client_pid(mc);
+       EXPECT_NE(res, -1);
+
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientSetGetClientState)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       mmi_client *mc = nullptr;
+       mmi_state state = MMI_STATE_NONE;
+       int res = 0;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       state = client_manager_get_client_state(mc);
+       EXPECT_EQ(state, MMI_STATE_NONE);
+       state = client_manager_set_client_state(mc, MMI_STATE_INITIATION);
+       EXPECT_EQ(state, MMI_STATE_INITIATION);
+       state = client_manager_get_client_state(mc);
+       EXPECT_EQ(state, MMI_STATE_INITIATION);
+
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientSetGetClientHasFocus)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       mmi_client *mc = nullptr;
+       bool has_focus = false;
+       int res = 0;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       has_focus = client_manager_get_client_has_focus(mc);
+       EXPECT_EQ(has_focus, false);
+       has_focus = client_manager_set_client_has_focus(mc, true);
+       EXPECT_EQ(has_focus, true);
+       has_focus = client_manager_get_client_has_focus(mc);
+       EXPECT_EQ(has_focus, true);
+
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientGetClientSender)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       const char *sender = nullptr;
+       mmi_client *mc = nullptr;
+       int res = 0;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       sender = client_manager_get_client_sender(mc);
+       EXPECT_NE(sender, nullptr);
+
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientSetGetClientEventCB)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       void *handle = nullptr, *temp_h = nullptr;
+       mmi_client *mc = nullptr;
+       int res = 0;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       /* TODO: create and register event cb handles such as. rpc_port_mmifw_focus_event_cb_h
+       Do we need to change static funcions to APIs? like rpc_port_mmifw_key_event_cb_create()
+       */
+       //handle = client_manager_set_client_key_cb_handle(mc, (void *)temp_h);
+       //EXPECT_NE(handle, nullptr);
+
+       //handle = client_manager_get_client_key_cb_handle(mc);
+       //EXPECT_NE(handle, nullptr);
+
+       handle = client_manager_set_client_key_cb_handle(mc, nullptr);
+       EXPECT_EQ(handle, nullptr);
+
+       handle = client_manager_get_client_key_cb_handle(mc);
+       EXPECT_EQ(handle, nullptr);
+
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}
+
+TEST_F(MMIClientTest, MMIClientSendClientEvent)
+{
+       const char *app_id = "org.tizen.mmi-system-ux-test";
+       void *handle = nullptr;
+       mmi_client *mc = nullptr;
+       int res = 0;
+       focus_event_arg arg;
+
+       client_manager_init();
+       mc = client_manager_add_client(app_id);
+
+       /* TODO: set focus_cb handle using client_manager_set_client_key_cb_handle()
+       error says 'Given client doesn't have focus_cb handle !'
+
+       arg.type = MMI_EVENT_FOCUS_TYPE_OUT;
+       arg.timestamp = ecore_time_get();
+       arg.focus_in = false;
+
+       res = client_manager_send_focus_event(mc, &arg);
+       client_manager_set_client_has_focus(mc, false);
+       EXPECT_EQ(res, 0);
+
+       arg.type = MMI_EVENT_FOCUS_TYPE_OUT;
+       arg.timestamp = ecore_time_get();
+       arg.focus_in = true;
+
+       res = client_manager_send_focus_event(mc, &arg);
+       client_manager_set_client_has_focus(mc, true);
+       EXPECT_EQ(res, 0);
+       */
+       res = client_manager_remove_client(app_id);
+
+       client_manager_shutdown();
+}