diff options
Diffstat (limited to 'tests/unit_tests/src/test_shortcut_manager.cc')
-rw-r--r-- | tests/unit_tests/src/test_shortcut_manager.cc | 165 |
1 files changed, 136 insertions, 29 deletions
diff --git a/tests/unit_tests/src/test_shortcut_manager.cc b/tests/unit_tests/src/test_shortcut_manager.cc index 95a32f1..94f3242 100644 --- a/tests/unit_tests/src/test_shortcut_manager.cc +++ b/tests/unit_tests/src/test_shortcut_manager.cc @@ -24,11 +24,13 @@ #include "system_info_mock.h" #include "gio_mock.h" #include "test_fixture.h" +#include <glib.h> using ::testing::_; using ::testing::DoAll; using ::testing::Return; using ::testing::SetArgPointee; +using ::testing::SaveArg; class Mocks : public ::testing::NiceMock<SystemInfoMock>, public ::testing::NiceMock<GioMock> {}; @@ -48,10 +50,14 @@ class ShortcutTest : public TestFixture { TEST_F(ShortcutTest, shortcut_add_to_home) { int ret; bool is_supported = true; - GDBusConnection* _conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusConnection* _conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg4 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GVariant* reply_body; + GAsyncReadyCallback async_cb; + gpointer async_cb_data; EXPECT_CALL(GetMock<SystemInfoMock>(), system_info_get_platform_bool(_, _)). @@ -59,10 +65,6 @@ TEST_F(ShortcutTest, shortcut_add_to_home) { Return(0))); EXPECT_CALL(GetMock<GioMock>(), - g_bus_get_sync(_, _, _)). - WillOnce(Return(_conn)); - - EXPECT_CALL(GetMock<GioMock>(), g_dbus_message_new_method_call(_, _, _, _)). WillOnce(Return(_msg)). WillOnce(Return(_msg2)); @@ -75,24 +77,47 @@ TEST_F(ShortcutTest, shortcut_add_to_home) { EXPECT_CALL(GetMock<GioMock>(), g_dbus_connection_send_message_with_reply( _, _, _, _, _, _, _, _)). - Times(1); + WillOnce(DoAll(SaveArg<6>(&async_cb), SaveArg<7>(&async_cb_data))); EXPECT_CALL(GetMock<GioMock>(), g_dbus_message_to_gerror(_, _)). WillOnce(Return(FALSE)); ret = shortcut_add_to_home("test_name", LAUNCH_BY_URI, "test_uri", "test_icon", - 0, NULL, NULL); + 0, nullptr, nullptr); EXPECT_EQ(ret, SHORTCUT_ERROR_NONE); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_connection_send_message_with_reply_finish(_, _, _)). + WillOnce(Return(_msg4)); + + reply_body = g_variant_new("(i)", 0); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_get_body(_)). + WillOnce(Return(g_variant_ref(reply_body))); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_to_gerror(_, _)). + WillOnce(Return(FALSE)); + + async_cb((GObject*)_conn, nullptr, async_cb_data); + + g_variant_unref(reply_body); } TEST_F(ShortcutTest, shortcut_remove_from_home) { int ret; bool is_supported = true; - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusConnection* _conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg4 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GVariant* reply_body; + GAsyncReadyCallback async_cb; + gpointer async_cb_data; EXPECT_CALL(GetMock<SystemInfoMock>(), system_info_get_platform_bool(_, _)). @@ -112,7 +137,7 @@ TEST_F(ShortcutTest, shortcut_remove_from_home) { EXPECT_CALL(GetMock<GioMock>(), g_dbus_connection_send_message_with_reply( _, _, _, _, _, _, _, _)). - Times(1); + WillOnce(DoAll(SaveArg<6>(&async_cb), SaveArg<7>(&async_cb_data))); EXPECT_CALL(GetMock<GioMock>(), g_dbus_message_to_gerror(_, _)). @@ -121,9 +146,27 @@ TEST_F(ShortcutTest, shortcut_remove_from_home) { ret = shortcut_remove_from_home("test_name", [](int ret, void* user_data) -> int { return 0; - } ,NULL); + } ,nullptr); EXPECT_EQ(ret, SHORTCUT_ERROR_NONE); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_connection_send_message_with_reply_finish(_, _, _)). + WillOnce(Return(_msg4)); + + reply_body = g_variant_new("(i)", 0); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_get_body(_)). + WillOnce(Return(g_variant_ref(reply_body))); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_to_gerror(_, _)). + WillOnce(Return(FALSE)); + + async_cb((GObject*)_conn, nullptr, async_cb_data); + + g_variant_unref(reply_body); } TEST_F(ShortcutTest, shortcut_get_list) { @@ -132,8 +175,8 @@ TEST_F(ShortcutTest, shortcut_get_list) { GVariantBuilder *builder; GVariant* body; GVariant* reply_body; - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); body = g_variant_new("(sssss)", "test_pkg", "test_icon", "test_name", "test_extra", ""); @@ -170,7 +213,7 @@ TEST_F(ShortcutTest, shortcut_get_list) { const char* name, const char* extra_key, const char* extra_data, void* user_data) -> int { return 0; - }, NULL); + }, nullptr); g_variant_builder_unref(builder); g_variant_unref(body); @@ -181,8 +224,8 @@ TEST_F(ShortcutTest, shortcut_get_list) { TEST_F(ShortcutTest, shortcut_set_request_cb) { int ret; bool is_supported = true; - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); EXPECT_CALL(GetMock<SystemInfoMock>(), system_info_get_platform_bool(_, _)). @@ -218,15 +261,15 @@ TEST_F(ShortcutTest, shortcut_set_request_cb) { int pid, double period, int allow_duplicate, void* user_data) -> int { return 0; - } ,NULL); + } ,nullptr); EXPECT_EQ(ret, SHORTCUT_ERROR_NONE); } TEST_F(ShortcutTest, shortcut_unset_request_cb) { bool is_supported = true; - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); EXPECT_CALL(GetMock<SystemInfoMock>(), system_info_get_platform_bool(_, _)). @@ -254,9 +297,9 @@ TEST_F(ShortcutTest, shortcut_unset_request_cb) { TEST_F(ShortcutTest, shortcut_set_remove_cb) { int ret; bool is_supported = true; - GDBusConnection* _conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusConnection* _conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); EXPECT_CALL(GetMock<SystemInfoMock>(), system_info_get_platform_bool(_, _)). @@ -294,15 +337,15 @@ TEST_F(ShortcutTest, shortcut_set_remove_cb) { [](const char* package_name, const char* name, int sender_pid, void* user_data) -> int { return 0; - } ,NULL); + } ,nullptr); EXPECT_EQ(ret, SHORTCUT_ERROR_NONE); } TEST_F(ShortcutTest, shortcut_unset_remove_cb) { bool is_supported = true; - GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); - GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); EXPECT_CALL(GetMock<SystemInfoMock>(), system_info_get_platform_bool(_, _)). @@ -326,3 +369,67 @@ TEST_F(ShortcutTest, shortcut_unset_remove_cb) { EXPECT_EQ(get_last_result(), SHORTCUT_ERROR_NONE); } + +TEST_F(ShortcutTest, shortcut_add_to_home_widget) { + int ret; + bool is_supported = true; + GDBusConnection* _conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GDBusMessage* _msg4 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, nullptr); + GVariant* reply_body; + GAsyncReadyCallback async_cb; + gpointer async_cb_data; + + EXPECT_CALL(GetMock<SystemInfoMock>(), + system_info_get_platform_bool(_, _)). + WillOnce(DoAll(SetArgPointee<1>(is_supported), + Return(0))); + + EXPECT_CALL(GetMock<GioMock>(), + g_bus_get_sync(_, _, _)). + WillOnce(Return(_conn)); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_new_method_call(_, _, _, _)). + WillOnce(Return(_msg)). + WillOnce(Return(_msg2)); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_connection_send_message_with_reply_sync( + _, _, _, _, _, _, _)). + WillOnce(Return(_msg3)); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_connection_send_message_with_reply( + _, _, _, _, _, _, _, _)). + WillOnce(DoAll(SaveArg<6>(&async_cb), SaveArg<7>(&async_cb_data))); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_to_gerror(_, _)). + WillOnce(Return(FALSE)); + + ret = shortcut_add_to_home_widget("test_name", WIDGET_SIZE_DEFAULT, "test_id", "test_icon", + 0, 0, nullptr, nullptr); + + EXPECT_EQ(ret, SHORTCUT_ERROR_NONE); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_connection_send_message_with_reply_finish(_, _, _)). + WillOnce(Return(_msg4)); + + reply_body = g_variant_new("(i)", 0); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_get_body(_)). + WillOnce(Return(g_variant_ref(reply_body))); + + EXPECT_CALL(GetMock<GioMock>(), + g_dbus_message_to_gerror(_, _)). + WillOnce(Return(FALSE)); + + async_cb((GObject*)_conn, nullptr, async_cb_data); + + g_variant_unref(reply_body); +} |