return MOCK_HOOK_P1(GioMock, g_dbus_message_get_body, arg0);
}
-extern "C" gboolean g_dbus_connection_emit_signal(GDBusConnection* arg0,
- const gchar* arg1, const gchar* arg2, const gchar* arg3, const gchar* arg4,
- GVariant* arg5, GError** arg6) {
- return MOCK_HOOK_P7(GioMock, g_dbus_connection_emit_signal,
- arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-}
-
-extern "C" GDBusNodeInfo* g_dbus_node_info_new_for_xml(
- const gchar* arg0, GError** arg1) {
- return MOCK_HOOK_P2(GioMock, g_dbus_node_info_new_for_xml, arg0, arg1);
-}
-
-extern "C" guint g_dbus_connection_register_object(GDBusConnection* arg0,
- const gchar* arg1, GDBusInterfaceInfo* arg2,
- const GDBusInterfaceVTable* arg3, gpointer arg4,
- GDestroyNotify arg5, GError** arg6) {
- return MOCK_HOOK_P7(GioMock, g_dbus_connection_register_object,
- arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-}
-
-extern "C" guint g_bus_own_name_on_connection(GDBusConnection* arg0,
- const gchar* arg1, GBusNameOwnerFlags arg2,
- GBusNameAcquiredCallback arg3, GBusNameLostCallback arg4,
- gpointer arg5, GDestroyNotify arg6) {
- return MOCK_HOOK_P7(GioMock, g_bus_own_name_on_connection,
- arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-}
-
extern "C" guint g_dbus_connection_signal_subscribe(GDBusConnection* arg0,
const gchar* arg1, const gchar* arg2, const gchar* arg3, const gchar* arg4,
const gchar* arg5, GDBusSignalFlags arg6, GDBusSignalCallback arg7,
arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
}
-extern "C" GDBusMessage* g_dbus_connection_send_message_with_reply_finish(
- GDBusConnection* arg0, GAsyncResult* arg1, GError** arg2) {
- return MOCK_HOOK_P3(GioMock, g_dbus_connection_send_message_with_reply_finish,
- arg0, arg1, arg2);
+extern "C" gboolean g_dbus_message_to_gerror(
+ GDBusMessage* arg0, GError** arg1) {
+ return MOCK_HOOK_P2(GioMock, g_dbus_message_to_gerror,
+ arg0, arg1);
+}
+
+extern "C" guint g_bus_watch_name_on_connection(
+ GDBusConnection* arg0, const gchar* arg1, GBusNameWatcherFlags arg2,
+ GBusNameAppearedCallback arg3, GBusNameVanishedCallback arg4,
+ gpointer arg5, GDestroyNotify arg6) {
+ return MOCK_HOOK_P7(GioMock, g_bus_watch_name_on_connection,
+ arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+}
+
+extern "C" void g_bus_unwatch_name(guint arg0) {
+ return MOCK_HOOK_P1(GioMock, g_bus_unwatch_name, arg0);
+}
+
+extern "C" void g_dbus_connection_signal_unsubscribe(
+ GDBusConnection* arg0, guint arg1) {
+ return MOCK_HOOK_P2(GioMock, g_dbus_connection_signal_unsubscribe,
+ arg0, arg1);
}
MOCK_METHOD3(g_bus_get_sync,
GDBusConnection*(GBusType, GCancellable*, GError**));
- MOCK_METHOD7(g_bus_own_name_on_connection,
- guint(GDBusConnection*, const gchar*, GBusNameOwnerFlags,
- GBusNameAcquiredCallback, GBusNameLostCallback,
- gpointer, GDestroyNotify));
-
MOCK_METHOD4(g_dbus_message_new_method_call,
GDBusMessage*(const gchar*, const gchar*, const gchar*, const gchar*));
MOCK_METHOD2(g_dbus_message_set_body, void(GDBusMessage*, GVariant*));
MOCK_METHOD1(g_dbus_message_get_body, GVariant*(GDBusMessage*));
-
MOCK_METHOD7(g_dbus_connection_send_message_with_reply_sync,
GDBusMessage*(GDBusConnection*, GDBusMessage*, GDBusSendMessageFlags,
gint, volatile guint32*, GCancellable*, GError**));
- MOCK_METHOD7(g_dbus_connection_emit_signal,
- gboolean(GDBusConnection*, const gchar*, const gchar*, const gchar*,
- const gchar*, GVariant*, GError**));
- MOCK_METHOD7(g_dbus_connection_register_object,
- guint(GDBusConnection*, const gchar*, GDBusInterfaceInfo*,
- const GDBusInterfaceVTable*, gpointer, GDestroyNotify, GError**));
MOCK_METHOD10(g_dbus_connection_signal_subscribe,
guint(GDBusConnection*, const gchar*, const gchar*, const gchar*,
const gchar*, const gchar*, GDBusSignalFlags, GDBusSignalCallback,
MOCK_METHOD8(g_dbus_connection_send_message_with_reply,
void(GDBusConnection*, GDBusMessage*, GDBusSendMessageFlags, gint,
volatile guint32*, GCancellable*, GAsyncReadyCallback, gpointer));
- MOCK_METHOD3(g_dbus_connection_send_message_with_reply_finish,
- GDBusMessage*(GDBusConnection*, GAsyncResult*, GError**));
-
- MOCK_METHOD2(g_dbus_node_info_new_for_xml,
- GDBusNodeInfo*(const gchar*, GError**));
-
- MOCK_METHOD2(g_dbus_method_invocation_return_value,
- GDBusNodeInfo*(GDBusMethodInvocation*, GVariant*));
+ MOCK_METHOD2(g_dbus_message_to_gerror,
+ gboolean(GDBusMessage*, GError**));
+ MOCK_METHOD7(g_bus_watch_name_on_connection,
+ guint(GDBusConnection*, const gchar*, GBusNameWatcherFlags,
+ GBusNameAppearedCallback, GBusNameVanishedCallback, gpointer,
+ GDestroyNotify));
+ MOCK_METHOD1(g_bus_unwatch_name, void(guint));
+ MOCK_METHOD2(g_dbus_connection_signal_unsubscribe,
+ void(GDBusConnection*, guint));
};
#endif // MOCK_GIO_MOCK_H_
#include <stdlib.h>
#include <gtest/gtest.h>
-#include <badge.h>
+#include "badge.h"
#include <memory>
using ::testing::DoAll;
using ::testing::Return;
using ::testing::SetArgPointee;
-using ::testing::Invoke;
-using ::testing::SetArrayArgument;
class Mocks : public ::testing::NiceMock<SystemInfoMock>,
- ::testing::NiceMock<GioMock>,
- ::testing::NiceMock<AulMock>,
- ::testing::NiceMock<PackageManagerMock> {
-};
+ public ::testing::NiceMock<GioMock>,
+ public ::testing::NiceMock<AulMock>,
+ public ::testing::NiceMock<PackageManagerMock> {};
class BadgeTest : public TestFixture {
public:
virtual void TearDown() {
}
};
+
+TEST_F(BadgeTest, badge_new) {
+ int ret;
+ bool is_supported = true;
+ char *_pkgid = (char *)"mypkgid";
+ 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);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<AulMock>(),
+ aul_app_get_pkgname_bypid(_, _, _)).
+ WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
+ 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));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_new("testappid");
+
+ g_object_unref(_conn);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_add) {
+ int ret;
+ bool is_supported = true;
+ char *_pkgid = (char *)"mypkgid";
+ package_manager_compare_result_type_e comp_ret = PACKAGE_MANAGER_COMPARE_MATCH;
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<AulMock>(),
+ aul_app_get_pkgname_bypid(_, _, _)).
+ WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<PackageManagerMock>(),
+ package_manager_compare_app_cert_info(_, _, _)).
+ WillOnce(DoAll(SetArgPointee<2>(comp_ret),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_add("myappid");
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_remove) {
+ int ret;
+ bool is_supported = true;
+ char *_pkgid = (char *)"mypkgid";
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<AulMock>(),
+ aul_app_get_pkgname_bypid(_, _, _)).
+ WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_remove("myappid");
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_set_count) {
+ int ret;
+ bool is_supported = true;
+ char *_pkgid = (char *)"mypkgid";
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<AulMock>(),
+ aul_app_get_pkgname_bypid(_, _, _)).
+ WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_set_count("myappid", 9);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_get_count) {
+ int ret;
+ bool is_supported = true;
+ unsigned int count = 0;
+ GVariant *body = g_variant_new("(i)", 3);
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_get_body(_)).
+ WillOnce(Return(body));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_get_count("myappid", &count);
+
+ if (body)
+ g_variant_unref(body);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_set_display) {
+ int ret;
+ bool is_supported = true;
+ char *_pkgid = (char *)"mypkgid";
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<AulMock>(),
+ aul_app_get_pkgname_bypid(_, _, _)).
+ WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_set_display("myappid", 1);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_get_display) {
+ int ret;
+ bool is_supported = true;
+ unsigned int is_display = 0;
+ GVariant *body = g_variant_new("(i)", 1);
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_get_body(_)).
+ WillOnce(Return(body));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_get_display("myappid", &is_display);
+
+ if (body)
+ g_variant_unref(body);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+bool _badge_foreach_cb(const char *app_id, unsigned int count, void *user_data) {
+ return true;
+}
+
+TEST_F(BadgeTest, badge_foreach) {
+ int ret;
+ bool is_supported = true;
+ GVariant *body = g_variant_new("(a(v))", NULL);
+ GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_new_method_call(_, _, _, _)).
+ WillOnce(Return(_msg));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_send_message_with_reply_sync(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(_msg2));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_get_body(_)).
+ WillOnce(Return(body));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillOnce(Return(FALSE));
+
+ ret = badge_foreach(_badge_foreach_cb, NULL);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+void _badge_change_cb(unsigned int action, const char *app_id,
+ unsigned int count, void *user_data) {
+}
+
+TEST_F(BadgeTest, badge_register_changed_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 *_msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+ GDBusMessage *_msg4 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_signal_subscribe(
+ _, _, _, _, _, _, _, _, _, _)).
+ WillOnce(Return(99));
+
+ 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)).
+ WillOnce(Return(_msg4));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_message_to_gerror(_, _)).
+ WillRepeatedly(Return(FALSE));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_bus_watch_name_on_connection(
+ _, _, _, _, _, _, _)).
+ WillOnce(Return(88));
+
+ ret = badge_register_changed_cb(_badge_change_cb, NULL);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}
+
+TEST_F(BadgeTest, badge_unregister_changed_cb) {
+ int ret;
+ bool is_supported = true;
+
+ EXPECT_CALL(GetMock<SystemInfoMock>(),
+ system_info_get_platform_bool(_, _)).
+ WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
+ Return(0)));
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_bus_unwatch_name(_)).
+ Times(1);
+
+ EXPECT_CALL(GetMock<GioMock>(),
+ g_dbus_connection_signal_unsubscribe(_, _)).
+ Times(1);
+
+ ret = badge_unregister_changed_cb(_badge_change_cb);
+
+ EXPECT_EQ(ret, BADGE_ERROR_NONE);
+}