diff --git a/Makefile.am b/Makefile.am index 107956b9..61c824b5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -62,15 +62,16 @@ test_sources = \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ src/otr.c src/otr.h \ - tests/ui/mock_ui.c \ - tests/xmpp/mock_xmpp.c \ + tests/xmpp/mock_xmpp.h tests/xmpp/mock_xmpp.c \ + tests/ui/mock_ui.h tests/ui/mock_ui.c \ + tests/config/mock_accounts.h tests/config/mock_accounts.c \ tests/log/mock_log.c \ - tests/config/mock_accounts.c \ tests/test_autocomplete.c \ tests/test_common.c \ tests/test_cmd_connect.c \ tests/test_cmd_account.c \ tests/test_cmd_rooms.c \ + tests/test_cmd_sub.c \ tests/test_history.c \ tests/test_jid.c \ tests/test_parser.c \ diff --git a/configure.ac b/configure.ac index e847f5b3..69e304c5 100644 --- a/configure.ac +++ b/configure.ac @@ -81,8 +81,10 @@ AC_CHECK_LIB([ssl], [main], [], [AC_MSG_ERROR([openssl is required for profanity])]) AC_CHECK_LIB([strophe], [main], [], [AC_MSG_ERROR([libstrophe is required for profanity])]) -AC_CHECK_LIB([ncursesw], [main], [], - [AC_MSG_ERROR([ncursesw is required for profanity])]) +AC_CHECK_LIB([ncursesw], [wget_wch], [], + [AC_CHECK_LIB([ncurses],[wget_wch], + [AC_MSG_NOTICE([ncursesw not found but trying with ncurses instead])], + [AC_MSG_ERROR([ncurses wide character support is required for profanity])])]) AC_CHECK_LIB([glib-2.0], [main], [], [AC_MSG_ERROR([glib-2.0 is required for profanity])]) AC_CHECK_LIB([curl], [main], [], diff --git a/src/command/command.c b/src/command/command.c index 45381b99..1788e25e 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -75,7 +75,7 @@ static struct cmd_t command_defs[] = { { "/help", cmd_help, parse_args, 0, 1, NULL, - { "/help [area|command]", "Get help on using Profanity", + { "/help [area|command]", "Get help on using Profanity.", { "/help [area|command]", "-------------------------", "Use with no arguments to get a help summary.", @@ -91,7 +91,7 @@ static struct cmd_t command_defs[] = { "/about", cmd_about, parse_args, 0, 0, NULL, - { "/about", "About Profanity", + { "/about", "About Profanity.", { "/about", "------", "Show versioning and license information.", @@ -436,7 +436,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/beep", - cmd_beep, parse_args, 1, 1, cons_beep_setting, + cmd_beep, parse_args, 1, 1, &cons_beep_setting, { "/beep on|off", "Terminal beep on new messages.", { "/beep on|off", "------------", @@ -446,7 +446,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/notify", - cmd_notify, parse_args, 2, 2, cons_notify_setting, + cmd_notify, parse_args, 2, 2, &cons_notify_setting, { "/notify type value", "Control various desktop noficiations.", { "/notify type value", "------------------", @@ -471,7 +471,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/flash", - cmd_flash, parse_args, 1, 1, cons_flash_setting, + cmd_flash, parse_args, 1, 1, &cons_flash_setting, { "/flash on|off", "Terminal flash on new messages.", { "/flash on|off", "-------------", @@ -481,7 +481,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/intype", - cmd_intype, parse_args, 1, 1, cons_intype_setting, + cmd_intype, parse_args, 1, 1, &cons_intype_setting, { "/intype on|off", "Show when contact is typing.", { "/intype on|off", "--------------", @@ -489,7 +489,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/splash", - cmd_splash, parse_args, 1, 1, cons_splash_setting, + cmd_splash, parse_args, 1, 1, &cons_splash_setting, { "/splash on|off", "Splash logo on startup and /about command.", { "/splash on|off", "--------------", @@ -497,7 +497,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/autoconnect", - cmd_autoconnect, parse_args, 1, 2, cons_autoconnect_setting, + cmd_autoconnect, parse_args, 1, 2, &cons_autoconnect_setting, { "/autoconnect set|off [account]", "Set account to autoconnect with.", { "/autoconnect set|off [account]", "------------------------------", @@ -518,7 +518,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/titlebar", - cmd_titlebar, parse_args, 2, 2, cons_titlebar_setting, + cmd_titlebar, parse_args, 2, 2, &cons_titlebar_setting, { "/titlebar property on|off", "Show various properties in the window title bar.", { "/titlebar property on|off", "-------------------------", @@ -527,7 +527,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/mouse", - cmd_mouse, parse_args, 1, 1, cons_mouse_setting, + cmd_mouse, parse_args, 1, 1, &cons_mouse_setting, { "/mouse on|off", "Use profanity mouse handling.", { "/mouse on|off", "-------------", @@ -540,8 +540,8 @@ static struct cmd_t command_defs[] = NULL } } }, { "/chlog", - cmd_chlog, parse_args, 1, 1, cons_chlog_setting, - { "/chlog on|off", "Chat logging to file", + cmd_chlog, parse_args, 1, 1, &cons_chlog_setting, + { "/chlog on|off", "Chat logging to file.", { "/chlog on|off", "-------------", "Switch chat logging on or off.", @@ -551,8 +551,8 @@ static struct cmd_t command_defs[] = NULL } } }, { "/grlog", - cmd_grlog, parse_args, 1, 1, cons_grlog_setting, - { "/grlog on|off", "Chat logging of chat rooms to file", + cmd_grlog, parse_args, 1, 1, &cons_grlog_setting, + { "/grlog on|off", "Chat logging of chat rooms to file.", { "/grlog on|off", "-------------", "Switch chat room logging on or off.", @@ -560,7 +560,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/states", - cmd_states, parse_args, 1, 1, cons_states_setting, + cmd_states, parse_args, 1, 1, &cons_states_setting, { "/states on|off", "Send chat states during a chat session.", { "/states on|off", "--------------", @@ -577,7 +577,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/outtype", - cmd_outtype, parse_args, 1, 1, cons_outtype_setting, + cmd_outtype, parse_args, 1, 1, &cons_outtype_setting, { "/outtype on|off", "Send typing notification to recipient.", { "/outtype on|off", "---------------", @@ -586,7 +586,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/gone", - cmd_gone, parse_args, 1, 1, cons_gone_setting, + cmd_gone, parse_args, 1, 1, &cons_gone_setting, { "/gone minutes", "Send 'gone' state to recipient after a period.", { "/gone minutes", "-------------", @@ -597,7 +597,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/history", - cmd_history, parse_args, 1, 1, cons_history_setting, + cmd_history, parse_args, 1, 1, &cons_history_setting, { "/history on|off", "Chat history in message windows.", { "/history on|off", "---------------", @@ -606,7 +606,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/log", - cmd_log, parse_args, 2, 2, cons_log_setting, + cmd_log, parse_args, 2, 2, &cons_log_setting, { "/log maxsize value", "Manage system logging settings.", { "/log maxsize value", "------------------", @@ -615,7 +615,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/reconnect", - cmd_reconnect, parse_args, 1, 1, cons_reconnect_setting, + cmd_reconnect, parse_args, 1, 1, &cons_reconnect_setting, { "/reconnect seconds", "Set reconnect interval.", { "/reconnect seconds", "------------------", @@ -624,7 +624,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/autoping", - cmd_autoping, parse_args, 1, 1, cons_autoping_setting, + cmd_autoping, parse_args, 1, 1, &cons_autoping_setting, { "/autoping seconds", "Server ping interval.", { "/autoping seconds", "-----------------", @@ -633,7 +633,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/autoaway", - cmd_autoaway, parse_args_with_freetext, 2, 2, cons_autoaway_setting, + cmd_autoaway, parse_args_with_freetext, 2, 2, &cons_autoaway_setting, { "/autoaway setting value", "Set auto idle/away properties.", { "/autoaway setting value", "-----------------------", @@ -654,7 +654,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/priority", - cmd_priority, parse_args, 1, 1, cons_priority_setting, + cmd_priority, parse_args, 1, 1, &cons_priority_setting, { "/priority value", "Set priority for the current account.", { "/priority value", "---------------", @@ -723,7 +723,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/theme", - cmd_theme, parse_args, 1, 2, cons_theme_setting, + cmd_theme, parse_args, 1, 2, &cons_theme_setting, { "/theme command [theme-name]", "Change colour theme.", { "/theme command [theme-name]", "---------------------------", @@ -739,7 +739,7 @@ static struct cmd_t command_defs[] = { "/statuses", - cmd_statuses, parse_args, 1, 1, cons_statuses_setting, + cmd_statuses, parse_args, 1, 1, &cons_statuses_setting, { "/statuses on|off", "Set notifications for status messages.", { "/statuses on|off", "----------------", @@ -1095,7 +1095,7 @@ cmd_execute(const char * const command, const char * const inp) gchar **args = cmd->parser(inp, cmd->min_args, cmd->max_args); if ((args == NULL) && (cmd->setting_func != NULL)) { cons_show(""); - cmd->setting_func(); + (*cmd->setting_func)(); cons_show("Usage: %s", cmd->help.usage); return TRUE; } else if (args == NULL) { diff --git a/src/command/commands.c b/src/command/commands.c index d962ce6d..87cf7996 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -267,7 +267,8 @@ cmd_account(gchar **args, struct cmd_help_t help) resource_presence_t last_presence = accounts_get_last_presence(connected_account); if (presence_type == last_presence) { - presence_update(last_presence, jabber_get_presence_message(), 0); + char *message = jabber_get_presence_message(); + presence_update(last_presence, message, 0); } } cons_show("Updated %s priority for account %s: %s", property, account_name, value); @@ -311,7 +312,6 @@ gboolean cmd_sub(gchar **args, struct cmd_help_t help) { jabber_conn_status_t conn_status = jabber_get_connection_status(); - win_type_t win_type = ui_current_win_type(); if (conn_status != JABBER_CONNECTED) { cons_show("You are currently not connected."); @@ -337,6 +337,7 @@ cmd_sub(gchar **args, struct cmd_help_t help) return TRUE; } + win_type_t win_type = ui_current_win_type(); if ((win_type != WIN_CHAT) && (jid == NULL)) { cons_show("You must specify a contact."); return TRUE; @@ -2334,11 +2335,11 @@ _strtoi(char *str, int *saveptr, int min, int max) errno = 0; val = (int)strtol(str, &ptr, 0); - if (*str == '\0' || *ptr != '\0') { - cons_show("Illegal character. Must be a number."); + if (errno != 0 || *str == '\0' || *ptr != '\0') { + cons_show("Could not convert \"%s\" to a number.", str); return -1; - } else if (errno == ERANGE || val < min || val > max) { - cons_show("Value out of range. Must be in %d..%d.", min, max); + } else if (val < min || val > max) { + cons_show("Value %s out of range. Must be in %d..%d.", str, min, max); return -1; } diff --git a/src/command/commands.h b/src/command/commands.h index 3caa3085..741ab638 100644 --- a/src/command/commands.h +++ b/src/command/commands.h @@ -46,7 +46,7 @@ typedef struct cmd_t { gchar** (*parser)(const char * const inp, int min, int max); int min_args; int max_args; - void (*setting_func)(void); + void (**setting_func)(void); CommandHelp help; } Command; diff --git a/src/config/accounts.c b/src/config/accounts.c index 6431cd9e..2270e874 100644 --- a/src/config/accounts.c +++ b/src/config/accounts.c @@ -55,8 +55,8 @@ static void _fix_legacy_accounts(const char * const account_name); static void _save_accounts(void); static gchar * _get_accounts_file(void); -void -accounts_load(void) +static void +_accounts_load(void) { log_info("Loading accounts"); all_ac = autocomplete_new(); @@ -85,40 +85,40 @@ accounts_load(void) g_strfreev(account_names); } -void -accounts_close(void) +static void +_accounts_close(void) { autocomplete_free(all_ac); autocomplete_free(enabled_ac); g_key_file_free(accounts); } -char * -accounts_find_enabled(char *prefix) +static char * +_accounts_find_enabled(char *prefix) { return autocomplete_complete(enabled_ac, prefix); } -char * -accounts_find_all(char *prefix) +static char * +_accounts_find_all(char *prefix) { return autocomplete_complete(all_ac, prefix); } -void -accounts_reset_all_search(void) +static void +_accounts_reset_all_search(void) { autocomplete_reset(all_ac); } -void -accounts_reset_enabled_search(void) +static void +_accounts_reset_enabled_search(void) { autocomplete_reset(enabled_ac); } -void -accounts_add(const char *account_name, const char *altdomain) +static void +_accounts_add(const char *account_name, const char *altdomain) { // set account name and resource const char *barejid = account_name; @@ -168,14 +168,14 @@ accounts_add(const char *account_name, const char *altdomain) jid_destroy(jid); } -gchar** -accounts_get_list(void) +static gchar** +_accounts_get_list(void) { return g_key_file_get_groups(accounts, NULL); } -ProfAccount* -accounts_get_account(const char * const name) +static ProfAccount* +_accounts_get_account(const char * const name) { if (!g_key_file_has_group(accounts, name)) { return NULL; @@ -292,8 +292,8 @@ accounts_get_account(const char * const name) } } -char * -accounts_create_full_jid(ProfAccount *account) +static char * +_accounts_create_full_jid(ProfAccount *account) { if (account->resource != NULL) { return create_fulljid(account->jid, account->resource); @@ -302,8 +302,8 @@ accounts_create_full_jid(ProfAccount *account) } } -void -accounts_free_account(ProfAccount *account) +static void +_accounts_free_account(ProfAccount *account) { if (account != NULL) { free(account->name); @@ -319,8 +319,8 @@ accounts_free_account(ProfAccount *account) } } -gboolean -accounts_enable(const char * const name) +static gboolean +_accounts_enable(const char * const name) { if (g_key_file_has_group(accounts, name)) { g_key_file_set_boolean(accounts, name, "enabled", TRUE); @@ -332,8 +332,8 @@ accounts_enable(const char * const name) } } -gboolean -accounts_disable(const char * const name) +static gboolean +_accounts_disable(const char * const name) { if (g_key_file_has_group(accounts, name)) { g_key_file_set_boolean(accounts, name, "enabled", FALSE); @@ -345,8 +345,8 @@ accounts_disable(const char * const name) } } -gboolean -accounts_rename(const char * const account_name, const char * const new_name) +static gboolean +_accounts_rename(const char * const account_name, const char * const new_name) { if (g_key_file_has_group(accounts, new_name)) { return FALSE; @@ -393,15 +393,15 @@ accounts_rename(const char * const account_name, const char * const new_name) return TRUE; } -gboolean -accounts_account_exists(const char * const account_name) +static gboolean +_accounts_account_exists(const char * const account_name) { return g_key_file_has_group(accounts, account_name); } -void -accounts_set_jid(const char * const account_name, const char * const value) +static void +_accounts_set_jid(const char * const account_name, const char * const value) { Jid *jid = jid_create(value); if (jid != NULL) { @@ -426,8 +426,8 @@ accounts_set_jid(const char * const account_name, const char * const value) } } -void -accounts_set_server(const char * const account_name, const char * const value) +static void +_accounts_set_server(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "server", value); @@ -435,8 +435,8 @@ accounts_set_server(const char * const account_name, const char * const value) } } -void -accounts_set_resource(const char * const account_name, const char * const value) +static void +_accounts_set_resource(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "resource", value); @@ -444,8 +444,8 @@ accounts_set_resource(const char * const account_name, const char * const value) } } -void -accounts_set_password(const char * const account_name, const char * const value) +static void +_accounts_set_password(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "password", value); @@ -453,8 +453,8 @@ accounts_set_password(const char * const account_name, const char * const value) } } -void -accounts_clear_password(const char * const account_name) +static void +_accounts_clear_password(const char * const account_name) { if (accounts_account_exists(account_name)) { g_key_file_remove_key(accounts, account_name, "password", NULL); @@ -462,8 +462,8 @@ accounts_clear_password(const char * const account_name) } } -void -accounts_set_muc_service(const char * const account_name, const char * const value) +static void +_accounts_set_muc_service(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "muc.service", value); @@ -471,8 +471,8 @@ accounts_set_muc_service(const char * const account_name, const char * const val } } -void -accounts_set_muc_nick(const char * const account_name, const char * const value) +static void +_accounts_set_muc_nick(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "muc.nick", value); @@ -480,8 +480,8 @@ accounts_set_muc_nick(const char * const account_name, const char * const value) } } -void -accounts_set_priority_online(const char * const account_name, const gint value) +static void +_accounts_set_priority_online(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { g_key_file_set_integer(accounts, account_name, "priority.online", value); @@ -489,8 +489,8 @@ accounts_set_priority_online(const char * const account_name, const gint value) } } -void -accounts_set_priority_chat(const char * const account_name, const gint value) +static void +_accounts_set_priority_chat(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { g_key_file_set_integer(accounts, account_name, "priority.chat", value); @@ -498,8 +498,8 @@ accounts_set_priority_chat(const char * const account_name, const gint value) } } -void -accounts_set_priority_away(const char * const account_name, const gint value) +static void +_accounts_set_priority_away(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { g_key_file_set_integer(accounts, account_name, "priority.away", value); @@ -507,8 +507,8 @@ accounts_set_priority_away(const char * const account_name, const gint value) } } -void -accounts_set_priority_xa(const char * const account_name, const gint value) +static void +_accounts_set_priority_xa(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { g_key_file_set_integer(accounts, account_name, "priority.xa", value); @@ -516,8 +516,8 @@ accounts_set_priority_xa(const char * const account_name, const gint value) } } -void -accounts_set_priority_dnd(const char * const account_name, const gint value) +static void +_accounts_set_priority_dnd(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { g_key_file_set_integer(accounts, account_name, "priority.dnd", value); @@ -525,8 +525,8 @@ accounts_set_priority_dnd(const char * const account_name, const gint value) } } -void -accounts_set_priority_all(const char * const account_name, const gint value) +static void +_accounts_set_priority_all(const char * const account_name, const gint value) { if (accounts_account_exists(account_name)) { accounts_set_priority_online(account_name, value); @@ -538,8 +538,8 @@ accounts_set_priority_all(const char * const account_name, const gint value) } } -gint -accounts_get_priority_for_presence_type(const char * const account_name, +static gint +_accounts_get_priority_for_presence_type(const char * const account_name, resource_presence_t presence_type) { gint result; @@ -569,8 +569,8 @@ accounts_get_priority_for_presence_type(const char * const account_name, return result; } -void -accounts_set_last_presence(const char * const account_name, const char * const value) +static void +_accounts_set_last_presence(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "presence.last", value); @@ -578,8 +578,8 @@ accounts_set_last_presence(const char * const account_name, const char * const v } } -void -accounts_set_login_presence(const char * const account_name, const char * const value) +static void +_accounts_set_login_presence(const char * const account_name, const char * const value) { if (accounts_account_exists(account_name)) { g_key_file_set_string(accounts, account_name, "presence.login", value); @@ -587,8 +587,8 @@ accounts_set_login_presence(const char * const account_name, const char * const } } -resource_presence_t -accounts_get_last_presence(const char * const account_name) +static resource_presence_t +_accounts_get_last_presence(const char * const account_name) { resource_presence_t result; gchar *setting = g_key_file_get_string(accounts, account_name, "presence.last", NULL); @@ -615,8 +615,8 @@ accounts_get_last_presence(const char * const account_name) return result; } -resource_presence_t -accounts_get_login_presence(const char * const account_name) +static resource_presence_t +_accounts_get_login_presence(const char * const account_name) { resource_presence_t result; gchar *setting = g_key_file_get_string(accounts, account_name, "presence.login", NULL); @@ -717,3 +717,41 @@ _get_accounts_file(void) return result; } +void +accounts_init_module(void) +{ + accounts_load = _accounts_load; + accounts_close = _accounts_close; + accounts_find_all = _accounts_find_all; + accounts_find_enabled = _accounts_find_enabled; + accounts_reset_all_search = _accounts_reset_all_search; + accounts_reset_enabled_search = _accounts_reset_enabled_search; + accounts_add = _accounts_add; + accounts_get_list = _accounts_get_list; + accounts_get_account = _accounts_get_account; + accounts_free_account = _accounts_free_account; + accounts_enable = _accounts_enable; + accounts_disable = _accounts_disable; + accounts_rename = _accounts_rename; + accounts_account_exists = _accounts_account_exists; + accounts_set_jid = _accounts_set_jid; + accounts_set_server = _accounts_set_server; + accounts_set_resource = _accounts_set_resource; + accounts_set_password = _accounts_set_password; + accounts_set_muc_service = _accounts_set_muc_service; + accounts_set_muc_nick = _accounts_set_muc_nick; + accounts_set_last_presence = _accounts_set_last_presence; + accounts_set_login_presence = _accounts_set_login_presence; + accounts_get_last_presence = _accounts_get_last_presence; + accounts_get_login_presence = _accounts_get_login_presence; + accounts_set_priority_online = _accounts_set_priority_online; + accounts_set_priority_chat = _accounts_set_priority_chat; + accounts_set_priority_away = _accounts_set_priority_away; + accounts_set_priority_xa = _accounts_set_priority_xa; + accounts_set_priority_dnd = _accounts_set_priority_dnd; + accounts_set_priority_all = _accounts_set_priority_all; + accounts_get_priority_for_presence_type = _accounts_get_priority_for_presence_type; + accounts_clear_password = _accounts_clear_password; + accounts_create_full_jid = _accounts_create_full_jid; +} + diff --git a/src/config/accounts.h b/src/config/accounts.h index caa8e84c..ccccefdf 100644 --- a/src/config/accounts.h +++ b/src/config/accounts.h @@ -46,41 +46,43 @@ typedef struct prof_account_t { GSList *room_history; } ProfAccount; -void accounts_load(void); -void accounts_close(void); +void accounts_init_module(void); -char * accounts_find_all(char *prefix); -char * accounts_find_enabled(char *prefix); -void accounts_reset_all_search(void); -void accounts_reset_enabled_search(void); -void accounts_add(const char *jid, const char *altdomain); -gchar** accounts_get_list(void); -ProfAccount* accounts_get_account(const char * const name); -void accounts_free_account(ProfAccount *account); -gboolean accounts_enable(const char * const name); -gboolean accounts_disable(const char * const name); -gboolean accounts_rename(const char * const account_name, +void (*accounts_load)(void); +void (*accounts_close)(void); + +char * (*accounts_find_all)(char *prefix); +char * (*accounts_find_enabled)(char *prefix); +void (*accounts_reset_all_search)(void); +void (*accounts_reset_enabled_search)(void); +void (*accounts_add)(const char *jid, const char *altdomain); +gchar** (*accounts_get_list)(void); +ProfAccount* (*accounts_get_account)(const char * const name); +void (*accounts_free_account)(ProfAccount *account); +gboolean (*accounts_enable)(const char * const name); +gboolean (*accounts_disable)(const char * const name); +gboolean (*accounts_rename)(const char * const account_name, const char * const new_name); -gboolean accounts_account_exists(const char * const account_name); -void accounts_set_jid(const char * const account_name, const char * const value); -void accounts_set_server(const char * const account_name, const char * const value); -void accounts_set_resource(const char * const account_name, const char * const value); -void accounts_set_password(const char * const account_name, const char * const value); -void accounts_set_muc_service(const char * const account_name, const char * const value); -void accounts_set_muc_nick(const char * const account_name, const char * const value); -void accounts_set_last_presence(const char * const account_name, const char * const value); -void accounts_set_login_presence(const char * const account_name, const char * const value); -resource_presence_t accounts_get_login_presence(const char * const account_name); -resource_presence_t accounts_get_last_presence(const char * const account_name); -void accounts_set_priority_online(const char * const account_name, const gint value); -void accounts_set_priority_chat(const char * const account_name, const gint value); -void accounts_set_priority_away(const char * const account_name, const gint value); -void accounts_set_priority_xa(const char * const account_name, const gint value); -void accounts_set_priority_dnd(const char * const account_name, const gint value); -void accounts_set_priority_all(const char * const account_name, const gint value); -gint accounts_get_priority_for_presence_type(const char * const account_name, +gboolean (*accounts_account_exists)(const char * const account_name); +void (*accounts_set_jid)(const char * const account_name, const char * const value); +void (*accounts_set_server)(const char * const account_name, const char * const value); +void (*accounts_set_resource)(const char * const account_name, const char * const value); +void (*accounts_set_password)(const char * const account_name, const char * const value); +void (*accounts_set_muc_service)(const char * const account_name, const char * const value); +void (*accounts_set_muc_nick)(const char * const account_name, const char * const value); +void (*accounts_set_last_presence)(const char * const account_name, const char * const value); +void (*accounts_set_login_presence)(const char * const account_name, const char * const value); +resource_presence_t (*accounts_get_login_presence)(const char * const account_name); +resource_presence_t (*accounts_get_last_presence)(const char * const account_name); +void (*accounts_set_priority_online)(const char * const account_name, const gint value); +void (*accounts_set_priority_chat)(const char * const account_name, const gint value); +void (*accounts_set_priority_away)(const char * const account_name, const gint value); +void (*accounts_set_priority_xa)(const char * const account_name, const gint value); +void (*accounts_set_priority_dnd)(const char * const account_name, const gint value); +void (*accounts_set_priority_all)(const char * const account_name, const gint value); +gint (*accounts_get_priority_for_presence_type)(const char * const account_name, resource_presence_t presence_type); -void accounts_clear_password(const char * const account_name); -char * accounts_create_full_jid(ProfAccount *account); +void (*accounts_clear_password)(const char * const account_name); +char * (*accounts_create_full_jid)(ProfAccount *account); #endif diff --git a/src/main.c b/src/main.c index c3065bd3..a87b9280 100644 --- a/src/main.c +++ b/src/main.c @@ -29,11 +29,35 @@ #include "profanity.h" +#include "xmpp/xmpp.h" +#include "ui/ui.h" + static gboolean disable_tls = FALSE; static gboolean version = FALSE; static char *log = "INFO"; static char *account_name = NULL; +static void +_init_modules(void) +{ + jabber_init_module(); + bookmark_init_module(); + capabilities_init_module(); + iq_init_module(); + message_init_module(); + presence_init_module(); + roster_init_module(); + + ui_init_module(); + console_init_module(); + inputwin_init_module(); + notifier_init_module(); + statusbar_init_module(); + titlebar_init_module(); + + accounts_init_module(); +} + int main(int argc, char **argv) { @@ -79,6 +103,7 @@ main(int argc, char **argv) return 0; } + _init_modules(); prof_run(disable_tls, log, account_name); return 0; diff --git a/src/ui/console.c b/src/ui/console.c index 00e891db..83a2b82e 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -47,24 +47,24 @@ static void _cons_splash_logo(void); void _show_roster_contacts(GSList *list, gboolean show_groups); -void -cons_show_time(void) +static void +_cons_show_time(void) { ProfWin *console = wins_get_console(); win_print_time(console, '-'); wins_refresh_console(); } -void -cons_show_word(const char * const word) +static void +_cons_show_word(const char * const word) { ProfWin *console = wins_get_console(); wprintw(console->win, "%s", word); wins_refresh_console(); } -void -cons_debug(const char * const msg, ...) +static void +_cons_debug(const char * const msg, ...) { ProfWin *console = wins_get_console(); if (strcmp(PACKAGE_STATUS, "development") == 0) { @@ -85,8 +85,8 @@ cons_debug(const char * const msg, ...) } } -void -cons_show(const char * const msg, ...) +static void +_cons_show(const char * const msg, ...) { ProfWin *console = wins_get_console(); va_list arg; @@ -100,8 +100,8 @@ cons_show(const char * const msg, ...) wins_refresh_console(); } -void -cons_show_error(const char * const msg, ...) +static void +_cons_show_error(const char * const msg, ...) { ProfWin *console = wins_get_console(); va_list arg; @@ -119,8 +119,8 @@ cons_show_error(const char * const msg, ...) cons_alert(); } -void -cons_show_typing(const char * const barejid) +static void +_cons_show_typing(const char * const barejid) { ProfWin *console = wins_get_console(); PContact contact = roster_get_contact(barejid); @@ -137,8 +137,8 @@ cons_show_typing(const char * const barejid) cons_alert(); } -void -cons_show_incoming_message(const char * const short_from, const int win_index) +static void +_cons_show_incoming_message(const char * const short_from, const int win_index) { ProfWin *console = wins_get_console(); @@ -155,8 +155,8 @@ cons_show_incoming_message(const char * const short_from, const int win_index) cons_alert(); } -void -cons_about(void) +static void +_cons_about(void) { ProfWin *console = wins_get_console(); int rows, cols; @@ -207,8 +207,8 @@ cons_about(void) cons_alert(); } -void -cons_check_version(gboolean not_available_msg) +static void +_cons_check_version(gboolean not_available_msg) { ProfWin *console = wins_get_console(); char *latest_release = release_get_latest(); @@ -238,8 +238,8 @@ cons_check_version(gboolean not_available_msg) } } -void -cons_show_login_success(ProfAccount *account) +static void +_cons_show_login_success(ProfAccount *account) { ProfWin *console = wins_get_console(); win_print_time(console, '-'); @@ -258,8 +258,8 @@ cons_show_login_success(ProfAccount *account) cons_alert(); } -void -cons_show_wins(void) +static void +_cons_show_wins(void) { ProfWin *console = wins_get_console(); cons_show(""); @@ -279,8 +279,8 @@ cons_show_wins(void) cons_alert(); } -void -cons_show_room_invites(GSList *invites) +static void +_cons_show_room_invites(GSList *invites) { cons_show(""); if (invites == NULL) { @@ -297,8 +297,8 @@ cons_show_room_invites(GSList *invites) cons_alert(); } -void -cons_show_info(PContact pcontact) +static void +_cons_show_info(PContact pcontact) { ProfWin *console = wins_get_console(); const char *barejid = p_contact_barejid(pcontact); @@ -430,8 +430,8 @@ cons_show_info(PContact pcontact) cons_alert(); } -void -cons_show_caps(const char * const contact, Resource *resource) +static void +_cons_show_caps(const char * const contact, Resource *resource) { ProfWin *console = wins_get_console(); WINDOW *win = console->win; @@ -505,8 +505,8 @@ cons_show_caps(const char * const contact, Resource *resource) cons_alert(); } -void -cons_show_software_version(const char * const jid, const char * const presence, +static void +_cons_show_software_version(const char * const jid, const char * const presence, const char * const name, const char * const version, const char * const os) { ProfWin *console = wins_get_console(); @@ -532,8 +532,8 @@ cons_show_software_version(const char * const jid, const char * const presence, cons_alert(); } -void -cons_show_received_subs(void) +static void +_cons_show_received_subs(void) { GSList *received = presence_get_subscription_requests(); if (received == NULL) { @@ -548,12 +548,11 @@ cons_show_received_subs(void) g_slist_free_full(received, g_free); } - wins_refresh_console(); cons_alert(); } -void -cons_show_sent_subs(void) +static void +_cons_show_sent_subs(void) { if (roster_has_pending_subscriptions()) { GSList *contacts = roster_get_contacts(); @@ -570,12 +569,11 @@ cons_show_sent_subs(void) cons_show("No pending requests sent."); } - wins_refresh_console(); cons_alert(); } -void -cons_show_room_list(GSList *rooms, const char * const conference_node) +static void +_cons_show_room_list(GSList *rooms, const char * const conference_node) { ProfWin *console = wins_get_console(); if ((rooms != NULL) && (g_slist_length(rooms) > 0)) { @@ -598,8 +596,8 @@ cons_show_room_list(GSList *rooms, const char * const conference_node) cons_alert(); } -void -cons_show_bookmarks(const GList *list) +static void +_cons_show_bookmarks(const GList *list) { Bookmark *item; @@ -628,8 +626,8 @@ cons_show_bookmarks(const GList *list) cons_alert(); } -void -cons_show_disco_info(const char *jid, GSList *identities, GSList *features) +static void +_cons_show_disco_info(const char *jid, GSList *identities, GSList *features) { if (((identities != NULL) && (g_slist_length(identities) > 0)) || ((features != NULL) && (g_slist_length(features) > 0))) { @@ -671,8 +669,8 @@ cons_show_disco_info(const char *jid, GSList *identities, GSList *features) } } -void -cons_show_disco_items(GSList *items, const char * const jid) +static void +_cons_show_disco_items(GSList *items, const char * const jid) { ProfWin *console = wins_get_console(); if ((items != NULL) && (g_slist_length(items) > 0)) { @@ -696,8 +694,8 @@ cons_show_disco_items(GSList *items, const char * const jid) cons_alert(); } -void -cons_show_status(const char * const barejid) +static void +_cons_show_status(const char * const barejid) { ProfWin *console = wins_get_console(); PContact pcontact = roster_get_contact(barejid); @@ -711,8 +709,8 @@ cons_show_status(const char * const barejid) cons_alert(); } -void -cons_show_room_invite(const char * const invitor, const char * const room, +static void +_cons_show_room_invite(const char * const invitor, const char * const room, const char * const reason) { char *display_from = NULL; @@ -748,8 +746,8 @@ cons_show_room_invite(const char * const invitor, const char * const room, cons_alert(); } -void -cons_show_account_list(gchar **accounts) +static void +_cons_show_account_list(gchar **accounts) { ProfWin *console = wins_get_console(); int size = g_strv_length(accounts); @@ -778,8 +776,8 @@ cons_show_account_list(gchar **accounts) cons_alert(); } -void -cons_show_account(ProfAccount *account) +static void +_cons_show_account(ProfAccount *account) { ProfWin *console = wins_get_console(); cons_show(""); @@ -901,8 +899,8 @@ cons_show_account(ProfAccount *account) cons_alert(); } -void -cons_theme_setting(void) +static void +_cons_theme_setting(void) { gchar *theme = prefs_get_string(PREF_THEME); if (theme == NULL) { @@ -912,8 +910,8 @@ cons_theme_setting(void) } } -void -cons_beep_setting(void) +static void +_cons_beep_setting(void) { if (prefs_get_boolean(PREF_BEEP)) cons_show("Terminal beep (/beep) : ON"); @@ -921,8 +919,8 @@ cons_beep_setting(void) cons_show("Terminal beep (/beep) : OFF"); } -void -cons_flash_setting(void) +static void +_cons_flash_setting(void) { if (prefs_get_boolean(PREF_FLASH)) cons_show("Terminal flash (/flash) : ON"); @@ -930,8 +928,8 @@ cons_flash_setting(void) cons_show("Terminal flash (/flash) : OFF"); } -void -cons_splash_setting(void) +static void +_cons_splash_setting(void) { if (prefs_get_boolean(PREF_SPLASH)) cons_show("Splash screen (/splash) : ON"); @@ -939,8 +937,8 @@ cons_splash_setting(void) cons_show("Splash screen (/splash) : OFF"); } -void -cons_autoconnect_setting(void) +static void +_cons_autoconnect_setting(void) { if (prefs_get_string(PREF_CONNECT_ACCOUNT) != NULL) cons_show("Autoconnect (/autoconnect) : %s", prefs_get_string(PREF_CONNECT_ACCOUNT)); @@ -948,8 +946,8 @@ cons_autoconnect_setting(void) cons_show("Autoconnect (/autoconnect) : OFF"); } -void -cons_vercheck_setting(void) +static void +_cons_vercheck_setting(void) { if (prefs_get_boolean(PREF_VERCHECK)) cons_show("Version checking (/vercheck) : ON"); @@ -957,8 +955,8 @@ cons_vercheck_setting(void) cons_show("Version checking (/vercheck) : OFF"); } -void -cons_mouse_setting(void) +static void +_cons_mouse_setting(void) { if (prefs_get_boolean(PREF_MOUSE)) cons_show("Mouse handling (/mouse) : ON"); @@ -966,8 +964,8 @@ cons_mouse_setting(void) cons_show("Mouse handling (/mouse) : OFF"); } -void -cons_statuses_setting(void) +static void +_cons_statuses_setting(void) { if (prefs_get_boolean(PREF_STATUSES)) cons_show("Status (/statuses) : ON"); @@ -975,8 +973,8 @@ cons_statuses_setting(void) cons_show("Status (/statuses) : OFF"); } -void -cons_titlebar_setting(void) +static void +_cons_titlebar_setting(void) { if (prefs_get_boolean(PREF_TITLEBARVERSION)) { cons_show("Titlebar display (/titlebar) : version"); @@ -985,8 +983,8 @@ cons_titlebar_setting(void) } } -void -cons_show_ui_prefs(void) +static void +_cons_show_ui_prefs(void) { cons_show("UI preferences:"); cons_show(""); @@ -1003,8 +1001,8 @@ cons_show_ui_prefs(void) cons_alert(); } -void -cons_notify_setting(void) +static void +_cons_notify_setting(void) { if (prefs_get_boolean(PREF_NOTIFY_MESSAGE)) cons_show("Messages (/notify message) : ON"); @@ -1036,8 +1034,8 @@ cons_notify_setting(void) } } -void -cons_show_desktop_prefs(void) +static void +_cons_show_desktop_prefs(void) { cons_show("Desktop notification preferences:"); cons_show(""); @@ -1047,8 +1045,8 @@ cons_show_desktop_prefs(void) cons_alert(); } -void -cons_states_setting(void) +static void +_cons_states_setting(void) { if (prefs_get_boolean(PREF_STATES)) cons_show("Send chat states (/states) : ON"); @@ -1056,8 +1054,8 @@ cons_states_setting(void) cons_show("Send chat states (/states) : OFF"); } -void -cons_outtype_setting(void) +static void +_cons_outtype_setting(void) { if (prefs_get_boolean(PREF_OUTTYPE)) cons_show("Send composing (/outtype) : ON"); @@ -1065,8 +1063,8 @@ cons_outtype_setting(void) cons_show("Send composing (/outtype) : OFF"); } -void -cons_intype_setting(void) +static void +_cons_intype_setting(void) { if (prefs_get_boolean(PREF_INTYPE)) cons_show("Show typing (/intype) : ON"); @@ -1074,8 +1072,8 @@ cons_intype_setting(void) cons_show("Show typing (/intype) : OFF"); } -void -cons_gone_setting(void) +static void +_cons_gone_setting(void) { gint gone_time = prefs_get_gone(); if (gone_time == 0) { @@ -1087,8 +1085,8 @@ cons_gone_setting(void) } } -void -cons_history_setting(void) +static void +_cons_history_setting(void) { if (prefs_get_boolean(PREF_HISTORY)) cons_show("Chat history (/history) : ON"); @@ -1096,8 +1094,8 @@ cons_history_setting(void) cons_show("Chat history (/history) : OFF"); } -void -cons_show_chat_prefs(void) +static void +_cons_show_chat_prefs(void) { cons_show("Chat preferences:"); cons_show(""); @@ -1111,14 +1109,14 @@ cons_show_chat_prefs(void) cons_alert(); } -void -cons_log_setting(void) +static void +_cons_log_setting(void) { cons_show("Max log size (/log maxsize) : %d bytes", prefs_get_max_log_size()); } -void -cons_chlog_setting(void) +static void +_cons_chlog_setting(void) { if (prefs_get_boolean(PREF_CHLOG)) cons_show("Chat logging (/chlog) : ON"); @@ -1126,8 +1124,8 @@ cons_chlog_setting(void) cons_show("Chat logging (/chlog) : OFF"); } -void -cons_grlog_setting(void) +static void +_cons_grlog_setting(void) { if (prefs_get_boolean(PREF_GRLOG)) cons_show("Groupchat logging (/grlog) : ON"); @@ -1135,8 +1133,8 @@ cons_grlog_setting(void) cons_show("Groupchat logging (/grlog) : OFF"); } -void -cons_show_log_prefs(void) +static void +_cons_show_log_prefs(void) { cons_show("Logging preferences:"); cons_show(""); @@ -1148,8 +1146,8 @@ cons_show_log_prefs(void) cons_alert(); } -void -cons_autoaway_setting(void) +static void +_cons_autoaway_setting(void) { if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "off") == 0) { cons_show("Autoaway (/autoaway mode) : OFF"); @@ -1173,8 +1171,8 @@ cons_autoaway_setting(void) } } -void -cons_show_presence_prefs(void) +static void +_cons_show_presence_prefs(void) { cons_show("Presence preferences:"); cons_show(""); @@ -1184,8 +1182,8 @@ cons_show_presence_prefs(void) cons_alert(); } -void -cons_reconnect_setting(void) +static void +_cons_reconnect_setting(void) { gint reconnect_interval = prefs_get_reconnect(); if (reconnect_interval == 0) { @@ -1197,8 +1195,8 @@ cons_reconnect_setting(void) } } -void -cons_autoping_setting(void) +static void +_cons_autoping_setting(void) { gint autoping_interval = prefs_get_autoping(); if (autoping_interval == 0) { @@ -1210,15 +1208,15 @@ cons_autoping_setting(void) } } -void -cons_priority_setting(void) +static void +_cons_priority_setting(void) { gint priority = prefs_get_priority(); cons_show("Priority (/priority) : %d", priority); } -void -cons_show_connection_prefs(void) +static void +_cons_show_connection_prefs(void) { cons_show("Connection preferences:"); cons_show(""); @@ -1230,8 +1228,8 @@ cons_show_connection_prefs(void) cons_alert(); } -void -cons_show_themes(GSList *themes) +static void +_cons_show_themes(GSList *themes) { cons_show(""); @@ -1249,8 +1247,8 @@ cons_show_themes(GSList *themes) cons_alert(); } -void -cons_prefs(void) +static void +_cons_prefs(void) { cons_show(""); cons_show_ui_prefs(); @@ -1270,8 +1268,8 @@ cons_prefs(void) cons_alert(); } -void -cons_help(void) +static void +_cons_help(void) { cons_show(""); cons_show("Choose a help option:"); @@ -1282,7 +1280,7 @@ cons_help(void) cons_show("/help groupchat - List groupchat commands."); cons_show("/help presence - List commands to change presence."); cons_show("/help roster - List commands for manipulating your roster."); - cons_show("/help service - List service discovery commands"); + cons_show("/help service - List service discovery commands."); cons_show("/help settings - List commands for changing settings."); cons_show("/help other - Other commands."); cons_show("/help navigation - How to navigate around Profanity."); @@ -1293,8 +1291,8 @@ cons_help(void) cons_alert(); } -void -cons_navigation_help(void) +static void +_cons_navigation_help(void) { cons_show(""); cons_show("Navigation:"); @@ -1317,8 +1315,8 @@ cons_navigation_help(void) cons_alert(); } -void -cons_show_roster_group(const char * const group, GSList *list) +static void +_cons_show_roster_group(const char * const group, GSList *list) { cons_show(""); @@ -1333,8 +1331,8 @@ cons_show_roster_group(const char * const group, GSList *list) cons_alert(); } -void -cons_show_roster(GSList *list) +static void +_cons_show_roster(GSList *list) { cons_show(""); cons_show("Roster:"); @@ -1344,8 +1342,8 @@ cons_show_roster(GSList *list) cons_alert(); } -void -cons_show_contacts(GSList *list) +static void +_cons_show_contacts(GSList *list) { ProfWin *console = wins_get_console(); GSList *curr = list; @@ -1363,8 +1361,8 @@ cons_show_contacts(GSList *list) cons_alert(); } -void -cons_alert(void) +static void +_cons_alert(void) { if (ui_current_win_type() != WIN_CONSOLE) { status_bar_new(1); @@ -1502,3 +1500,69 @@ _show_roster_contacts(GSList *list, gboolean show_groups) } } + +void +console_init_module(void) +{ + cons_show_time = _cons_show_time; + cons_show_word = _cons_show_word; + cons_debug = _cons_debug; + cons_show = _cons_show; + cons_show_error = _cons_show_error; + cons_show_typing = _cons_show_typing; + cons_show_incoming_message = _cons_show_incoming_message; + cons_about = _cons_about; + cons_check_version = _cons_check_version; + cons_show_login_success = _cons_show_login_success; + cons_show_wins = _cons_show_wins; + cons_show_room_invites = _cons_show_room_invites; + cons_show_info = _cons_show_info; + cons_show_caps = _cons_show_caps; + cons_show_software_version = _cons_show_software_version; + cons_show_received_subs = _cons_show_received_subs; + cons_show_sent_subs = _cons_show_sent_subs; + cons_show_room_list = _cons_show_room_list; + cons_show_bookmarks = _cons_show_bookmarks; + cons_show_disco_info = _cons_show_disco_info; + cons_show_disco_items = _cons_show_disco_items; + cons_show_status = _cons_show_status; + cons_show_room_invite = _cons_show_room_invite; + cons_show_account_list = _cons_show_account_list; + cons_show_account = _cons_show_account; + cons_theme_setting = _cons_theme_setting; + cons_beep_setting = _cons_beep_setting; + cons_flash_setting = _cons_flash_setting; + cons_splash_setting = _cons_splash_setting; + cons_autoconnect_setting = _cons_autoconnect_setting; + cons_vercheck_setting = _cons_vercheck_setting; + cons_mouse_setting = _cons_mouse_setting; + cons_statuses_setting = _cons_statuses_setting; + cons_titlebar_setting = _cons_titlebar_setting; + cons_show_ui_prefs = _cons_show_ui_prefs; + cons_notify_setting = _cons_notify_setting; + cons_show_desktop_prefs = _cons_show_desktop_prefs; + cons_states_setting = _cons_states_setting; + cons_outtype_setting = _cons_outtype_setting; + cons_intype_setting = _cons_intype_setting; + cons_gone_setting = _cons_gone_setting; + cons_history_setting = _cons_history_setting; + cons_show_chat_prefs = _cons_show_chat_prefs; + cons_log_setting = _cons_log_setting; + cons_chlog_setting = _cons_chlog_setting; + cons_grlog_setting = _cons_grlog_setting; + cons_show_log_prefs = _cons_show_log_prefs; + cons_autoaway_setting = _cons_autoaway_setting; + cons_show_presence_prefs = _cons_show_presence_prefs; + cons_reconnect_setting = _cons_reconnect_setting; + cons_autoping_setting = _cons_autoping_setting; + cons_priority_setting = _cons_priority_setting; + cons_show_connection_prefs = _cons_show_connection_prefs; + cons_show_themes = _cons_show_themes; + cons_prefs = _cons_prefs; + cons_help = _cons_help; + cons_navigation_help = _cons_navigation_help; + cons_show_roster_group = _cons_show_roster_group; + cons_show_roster = _cons_show_roster; + cons_show_contacts = _cons_show_contacts; + cons_alert = _cons_alert; +} diff --git a/src/ui/core.c b/src/ui/core.c index 1ff41b7d..c06f025e 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -69,8 +69,8 @@ static void _win_show_history(WINDOW *win, int win_index, const char * const contact); static void _ui_draw_win_title(void); -void -ui_init(void) +static void +_ui_init(void) { log_info("Initialising UI"); initscr(); @@ -96,8 +96,8 @@ ui_init(void) wins_refresh_current(); } -void -ui_refresh(void) +static void +_ui_refresh(void) { _ui_draw_win_title(); title_bar_refresh(); @@ -105,8 +105,8 @@ ui_refresh(void) inp_put_back(); } -unsigned long -ui_get_idle_time(void) +static unsigned long +_ui_get_idle_time(void) { // if compiled with libxss, get the x sessions idle time #ifdef HAVE_LIBXSS @@ -124,22 +124,22 @@ ui_get_idle_time(void) return ms_elapsed; } -void -ui_reset_idle_time(void) +static void +_ui_reset_idle_time(void) { g_timer_start(ui_idle_time); } -void -ui_close(void) +static void +_ui_close(void) { notifier_uninit(); wins_destroy(); endwin(); } -void -ui_resize(const int ch, const char * const input, const int size) +static void +_ui_resize(const int ch, const char * const input, const int size) { log_info("Resizing UI"); title_bar_resize(); @@ -149,8 +149,8 @@ ui_resize(const int ch, const char * const input, const int size) wins_refresh_current(); } -void -ui_load_colours(void) +static void +_ui_load_colours(void) { if (has_colors()) { use_default_colors(); @@ -159,21 +159,21 @@ ui_load_colours(void) } } -gboolean -ui_win_exists(int index) +static gboolean +_ui_win_exists(int index) { ProfWin *window = wins_get_by_num(index); return (window != NULL); } -gboolean -ui_duck_exists(void) +static gboolean +_ui_duck_exists(void) { return wins_duck_exists(); } -void -ui_contact_typing(const char * const barejid) +static void +_ui_contact_typing(const char * const barejid) { ProfWin *window = wins_get_by_recipient(barejid); @@ -210,15 +210,15 @@ ui_contact_typing(const char * const barejid) } } -GSList * -ui_get_recipients(void) +static GSList * +_ui_get_recipients(void) { GSList *recipients = wins_get_chat_recipients(); return recipients; } -void -ui_incoming_msg(const char * const from, const char * const message, +static void +_ui_incoming_msg(const char * const from, const char * const message, GTimeVal *tv_stamp, gboolean priv) { gboolean win_created = FALSE; @@ -294,8 +294,8 @@ ui_incoming_msg(const char * const from, const char * const message, free(display_from); } -void -ui_roster_add(const char * const barejid, const char * const name) +static void +_ui_roster_add(const char * const barejid, const char * const name) { if (name != NULL) { cons_show("Roster item added: %s (%s)", barejid, name); @@ -304,38 +304,38 @@ ui_roster_add(const char * const barejid, const char * const name) } } -void -ui_roster_remove(const char * const barejid) +static void +_ui_roster_remove(const char * const barejid) { cons_show("Roster item removed: %s", barejid); } -void -ui_contact_already_in_group(const char * const contact, const char * const group) +static void +_ui_contact_already_in_group(const char * const contact, const char * const group) { cons_show("%s already in group %s", contact, group); } -void -ui_contact_not_in_group(const char * const contact, const char * const group) +static void +_ui_contact_not_in_group(const char * const contact, const char * const group) { cons_show("%s is not currently in group %s", contact, group); } -void -ui_group_added(const char * const contact, const char * const group) +static void +_ui_group_added(const char * const contact, const char * const group) { cons_show("%s added to group %s", contact, group); } -void -ui_group_removed(const char * const contact, const char * const group) +static void +_ui_group_removed(const char * const contact, const char * const group) { cons_show("%s removed from group %s", contact, group); } -void -ui_handle_error_message(const char * const from, const char * const err_msg) +static void +_ui_handle_error_message(const char * const from, const char * const err_msg) { if (err_msg == NULL) { cons_show_error("Unknown error received from service."); @@ -350,8 +350,8 @@ ui_handle_error_message(const char * const from, const char * const err_msg) ui_print_error_from_recipient(from, err_msg); } -void -ui_contact_online(const char * const barejid, const char * const resource, +static void +_ui_contact_online(const char * const barejid, const char * const resource, const char * const show, const char * const status, GDateTime *last_activity) { PContact contact = roster_get_contact(barejid); @@ -376,8 +376,8 @@ ui_contact_online(const char * const barejid, const char * const resource, } } -void -ui_contact_offline(const char * const from, const char * const show, +static void +_ui_contact_offline(const char * const from, const char * const show, const char * const status) { Jid *jidp = jid_create(from); @@ -404,8 +404,8 @@ ui_contact_offline(const char * const from, const char * const show, } } -void -ui_disconnected(void) +static void +_ui_disconnected(void) { wins_lost_connection(); title_bar_set_status(CONTACT_OFFLINE); @@ -413,8 +413,8 @@ ui_disconnected(void) status_bar_refresh(); } -void -ui_handle_special_keys(const wint_t * const ch, const char * const inp, +static void +_ui_handle_special_keys(const wint_t * const ch, const char * const inp, const int size) { _win_handle_switch(ch); @@ -425,8 +425,8 @@ ui_handle_special_keys(const wint_t * const ch, const char * const inp, } -void -ui_close_connected_win(int index) +static void +_ui_close_connected_win(int index) { win_type_t win_type = ui_win_type(index); if (win_type == WIN_MUC) { @@ -447,8 +447,8 @@ ui_close_connected_win(int index) } } -int -ui_close_all_wins(void) +static int +_ui_close_all_wins(void) { int count = 0; jabber_conn_status_t conn_status = jabber_get_connection_status(); @@ -474,8 +474,8 @@ ui_close_all_wins(void) return count; } -int -ui_close_read_wins(void) +static int +_ui_close_read_wins(void) { int count = 0; jabber_conn_status_t conn_status = jabber_get_connection_status(); @@ -501,8 +501,8 @@ ui_close_read_wins(void) return count; } -void -ui_switch_win(const int i) +static void +_ui_switch_win(const int i) { ui_current_page_off(); ProfWin *new_current = wins_get_by_num(i); @@ -535,8 +535,8 @@ ui_switch_win(const int i) } } -void -ui_next_win(void) +static void +_ui_next_win(void) { ui_current_page_off(); ProfWin *new_current = wins_get_next(); @@ -568,8 +568,8 @@ ui_next_win(void) wins_refresh_current(); } -void -ui_previous_win(void) +static void +_ui_previous_win(void) { ui_current_page_off(); ProfWin *new_current = wins_get_previous(); @@ -601,14 +601,14 @@ ui_previous_win(void) wins_refresh_current(); } -void -ui_clear_current(void) +static void +_ui_clear_current(void) { wins_clear_current(); } -void -ui_close_current(void) +static void +_ui_close_current(void) { int current_index = wins_get_current_num(); status_bar_inactive(current_index); @@ -618,8 +618,8 @@ ui_close_current(void) title_bar_title(); } -void -ui_close_win(int index) +static void +_ui_close_win(int index) { wins_close_by_num(index); status_bar_current(1); @@ -629,8 +629,8 @@ ui_close_win(int index) wins_refresh_current(); } -void -ui_tidy_wins(void) +static void +_ui_tidy_wins(void) { gboolean tidied = wins_tidy(); @@ -641,8 +641,8 @@ ui_tidy_wins(void) } } -void -ui_prune_wins(void) +static void +_ui_prune_wins(void) { jabber_conn_status_t conn_status = jabber_get_connection_status(); gboolean pruned = FALSE; @@ -686,42 +686,42 @@ ui_prune_wins(void) } } -win_type_t -ui_current_win_type(void) +static win_type_t +_ui_current_win_type(void) { ProfWin *current = wins_get_current(); return current->type; } -int -ui_current_win_index(void) +static int +_ui_current_win_index(void) { return wins_get_current_num(); } -win_type_t -ui_win_type(int index) +static win_type_t +_ui_win_type(int index) { ProfWin *window = wins_get_by_num(index); return window->type; } -char * -ui_recipient(int index) +static char * +_ui_recipient(int index) { ProfWin *window = wins_get_by_num(index); return window->from; } -char * -ui_current_recipient(void) +static char * +_ui_current_recipient(void) { ProfWin *current = wins_get_current(); return current->from; } -void -ui_current_print_line(const char * const msg, ...) +static void +_ui_current_print_line(const char * const msg, ...) { ProfWin *current = wins_get_current(); va_list arg; @@ -731,24 +731,24 @@ ui_current_print_line(const char * const msg, ...) win_refresh(current); } -void -ui_current_error_line(const char * const msg) +static void +_ui_current_error_line(const char * const msg) { ProfWin *current = wins_get_current(); win_print_line(current, '-', COLOUR_ERROR, msg); win_refresh(current); } -void -ui_current_page_off(void) +static void +_ui_current_page_off(void) { ProfWin *current = wins_get_current(); win_page_off(current); win_refresh(current); } -void -ui_print_error_from_recipient(const char * const from, const char *err_msg) +static void +_ui_print_error_from_recipient(const char * const from, const char *err_msg) { if (from == NULL || err_msg == NULL) return; @@ -762,8 +762,8 @@ ui_print_error_from_recipient(const char * const from, const char *err_msg) } } -void -ui_print_system_msg_from_recipient(const char * const from, const char *message) +static void +_ui_print_system_msg_from_recipient(const char * const from, const char *message) { int num = 0; char from_cpy[strlen(from) + 1]; @@ -797,8 +797,8 @@ ui_print_system_msg_from_recipient(const char * const from, const char *message) } } -void -ui_recipient_gone(const char * const barejid) +static void +_ui_recipient_gone(const char * const barejid) { if (barejid == NULL) return; @@ -820,8 +820,8 @@ ui_recipient_gone(const char * const barejid) } } -void -ui_new_chat_win(const char * const to) +static void +_ui_new_chat_win(const char * const to) { // if the contact is offline, show a message PContact contact = roster_get_contact(to); @@ -859,8 +859,8 @@ ui_new_chat_win(const char * const to) ui_switch_win(num); } -void -ui_create_duck_win(void) +static void +_ui_create_duck_win(void) { ProfWin *window = wins_new("DuckDuckGo search", WIN_DUCK); int num = wins_get_num(window); @@ -868,8 +868,8 @@ ui_create_duck_win(void) win_print_line(window, '-', 0, "Type ':help' to find out more."); } -void -ui_open_duck_win(void) +static void +_ui_open_duck_win(void) { ProfWin *window = wins_get_by_recipient("DuckDuckGo search"); if (window != NULL) { @@ -878,8 +878,8 @@ ui_open_duck_win(void) } } -void -ui_duck(const char * const query) +static void +_ui_duck(const char * const query) { ProfWin *window = wins_get_by_recipient("DuckDuckGo search"); if (window != NULL) { @@ -894,8 +894,8 @@ ui_duck(const char * const query) } } -void -ui_duck_result(const char * const result) +static void +_ui_duck_result(const char * const result) { ProfWin *window = wins_get_by_recipient("DuckDuckGo search"); @@ -927,8 +927,8 @@ ui_duck_result(const char * const result) } } -void -ui_outgoing_msg(const char * const from, const char * const to, +static void +_ui_outgoing_msg(const char * const from, const char * const to, const char * const message) { PContact contact = roster_get_contact(to); @@ -954,8 +954,8 @@ ui_outgoing_msg(const char * const from, const char * const to, if (contact != NULL) { if (strcmp(p_contact_presence(contact), "offline") == 0) { - const char const *show = p_contact_presence(contact); - const char const *status = p_contact_status(contact); + const char *show = p_contact_presence(contact); + const char *status = p_contact_status(contact); win_show_status_string(window, to, show, status, NULL, "--", "offline"); } } @@ -979,8 +979,8 @@ ui_outgoing_msg(const char * const from, const char * const to, ui_switch_win(num); } -void -ui_room_join(Jid *jid) +static void +_ui_room_join(Jid *jid) { ProfWin *window = wins_get_by_recipient(jid->barejid); int num = 0; @@ -994,8 +994,8 @@ ui_room_join(Jid *jid) ui_switch_win(num); } -void -ui_room_roster(const char * const room, GList *roster, const char * const presence) +static void +_ui_room_roster(const char * const room, GList *roster, const char * const presence) { ProfWin *window = wins_get_by_recipient(room); @@ -1026,8 +1026,8 @@ ui_room_roster(const char * const room, GList *roster, const char * const presen while (roster != NULL) { PContact member = roster->data; - const char const *nick = p_contact_barejid(member); - const char const *show = p_contact_presence(member); + const char *nick = p_contact_barejid(member); + const char *show = p_contact_presence(member); win_presence_colour_on(window, show); wprintw(window->win, "%s", nick); @@ -1049,8 +1049,8 @@ ui_room_roster(const char * const room, GList *roster, const char * const presen } } -void -ui_room_member_offline(const char * const room, const char * const nick) +static void +_ui_room_member_offline(const char * const room, const char * const nick) { ProfWin *window = wins_get_by_recipient(room); @@ -1064,8 +1064,8 @@ ui_room_member_offline(const char * const room, const char * const nick) } } -void -ui_room_member_online(const char * const room, const char * const nick, +static void +_ui_room_member_online(const char * const room, const char * const nick, const char * const show, const char * const status) { ProfWin *window = wins_get_by_recipient(room); @@ -1080,8 +1080,8 @@ ui_room_member_online(const char * const room, const char * const nick, } } -void -ui_room_member_presence(const char * const room, const char * const nick, +static void +_ui_room_member_presence(const char * const room, const char * const nick, const char * const show, const char * const status) { ProfWin *window = wins_get_by_recipient(room); @@ -1095,8 +1095,8 @@ ui_room_member_presence(const char * const room, const char * const nick, } } -void -ui_room_member_nick_change(const char * const room, +static void +_ui_room_member_nick_change(const char * const room, const char * const old_nick, const char * const nick) { ProfWin *window = wins_get_by_recipient(room); @@ -1111,8 +1111,8 @@ ui_room_member_nick_change(const char * const room, } } -void -ui_room_nick_change(const char * const room, const char * const nick) +static void +_ui_room_nick_change(const char * const room, const char * const nick) { ProfWin *window = wins_get_by_recipient(room); @@ -1126,8 +1126,8 @@ ui_room_nick_change(const char * const room, const char * const nick) } } -void -ui_room_history(const char * const room_jid, const char * const nick, +static void +_ui_room_history(const char * const room_jid, const char * const nick, GTimeVal tv_stamp, const char * const message) { ProfWin *window = wins_get_by_recipient(room_jid); @@ -1152,8 +1152,8 @@ ui_room_history(const char * const room_jid, const char * const nick, } } -void -ui_room_message(const char * const room_jid, const char * const nick, +static void +_ui_room_message(const char * const room_jid, const char * const nick, const char * const message) { ProfWin *window = wins_get_by_recipient(room_jid); @@ -1224,8 +1224,8 @@ ui_room_message(const char * const room_jid, const char * const nick, } } -void -ui_room_subject(const char * const room_jid, const char * const subject) +static void +_ui_room_subject(const char * const room_jid, const char * const subject) { ProfWin *window = wins_get_by_recipient(room_jid); int num = wins_get_num(window); @@ -1247,8 +1247,8 @@ ui_room_subject(const char * const room_jid, const char * const subject) } } -void -ui_room_broadcast(const char * const room_jid, const char * const message) +static void +_ui_room_broadcast(const char * const room_jid, const char * const message) { ProfWin *window = wins_get_by_recipient(room_jid); int num = wins_get_num(window); @@ -1270,8 +1270,8 @@ ui_room_broadcast(const char * const room_jid, const char * const message) } } -void -ui_status(void) +static void +_ui_status(void) { char *recipient = ui_current_recipient(); PContact pcontact = roster_get_contact(recipient); @@ -1284,8 +1284,8 @@ ui_status(void) } } -void -ui_status_private(void) +static void +_ui_status_private(void) { Jid *jid = jid_create(ui_current_recipient()); PContact pcontact = muc_get_participant(jid->barejid, jid->resourcepart); @@ -1300,8 +1300,8 @@ ui_status_private(void) jid_destroy(jid); } -void -ui_status_room(const char * const contact) +static void +_ui_status_room(const char * const contact) { PContact pcontact = muc_get_participant(ui_current_recipient(), contact); ProfWin *current = wins_get_current(); @@ -1313,14 +1313,14 @@ ui_status_room(const char * const contact) } } -gint -ui_unread(void) +static gint +_ui_unread(void) { return wins_get_total_unread(); } -int -ui_win_unread(int index) +static int +_ui_win_unread(int index) { ProfWin *window = wins_get_by_num(index); if (window != NULL) { @@ -1330,8 +1330,8 @@ ui_win_unread(int index) } } -char * -ui_ask_password(void) +static char * +_ui_ask_password(void) { char *passwd = malloc(sizeof(char) * (MAX_PASSWORD_SIZE + 1)); status_bar_get_password(); @@ -1537,3 +1537,76 @@ _win_show_history(WINDOW *win, int win_index, const char * const contact) g_slist_free_full(history, free); } } + +void +ui_init_module(void) +{ + ui_init = _ui_init; + ui_refresh = _ui_refresh; + ui_get_idle_time = _ui_get_idle_time; + ui_reset_idle_time = _ui_reset_idle_time; + ui_close = _ui_close; + ui_resize = _ui_resize; + ui_load_colours = _ui_load_colours; + ui_win_exists = _ui_win_exists; + ui_duck_exists = _ui_duck_exists; + ui_contact_typing = _ui_contact_typing; + ui_get_recipients = _ui_get_recipients; + ui_incoming_msg = _ui_incoming_msg; + ui_roster_add = _ui_roster_add; + ui_roster_remove = _ui_roster_remove; + ui_contact_already_in_group = _ui_contact_already_in_group; + ui_contact_not_in_group = _ui_contact_not_in_group; + ui_group_added = _ui_group_added; + ui_group_removed = _ui_group_removed; + ui_handle_error_message = _ui_handle_error_message; + ui_contact_online = _ui_contact_online; + ui_contact_offline = _ui_contact_offline; + ui_disconnected = _ui_disconnected; + ui_handle_special_keys = _ui_handle_special_keys; + ui_close_connected_win = _ui_close_connected_win; + ui_close_all_wins = _ui_close_all_wins; + ui_close_read_wins = _ui_close_read_wins; + ui_switch_win = _ui_switch_win; + ui_next_win = _ui_next_win; + ui_previous_win = _ui_previous_win; + ui_clear_current = _ui_clear_current; + ui_close_current = _ui_close_current; + ui_close_win = _ui_close_win; + ui_tidy_wins = _ui_tidy_wins; + ui_prune_wins = _ui_prune_wins; + ui_current_win_type = _ui_current_win_type; + ui_current_win_index = _ui_current_win_index; + ui_win_type = _ui_win_type; + ui_recipient = _ui_recipient; + ui_current_recipient = _ui_current_recipient; + ui_current_print_line = _ui_current_print_line; + ui_current_error_line = _ui_current_error_line; + ui_current_page_off = _ui_current_page_off; + ui_print_error_from_recipient = _ui_print_error_from_recipient; + ui_print_system_msg_from_recipient = _ui_print_system_msg_from_recipient; + ui_recipient_gone = _ui_recipient_gone; + ui_new_chat_win = _ui_new_chat_win; + ui_create_duck_win = _ui_create_duck_win; + ui_open_duck_win = _ui_open_duck_win; + ui_duck = _ui_duck; + ui_duck_result = _ui_duck_result; + ui_outgoing_msg = _ui_outgoing_msg; + ui_room_join = _ui_room_join; + ui_room_roster = _ui_room_roster; + ui_room_member_offline = _ui_room_member_offline; + ui_room_member_online = _ui_room_member_online; + ui_room_member_presence = _ui_room_member_presence; + ui_room_member_nick_change = _ui_room_member_nick_change; + ui_room_nick_change = _ui_room_nick_change; + ui_room_history = _ui_room_history; + ui_room_message = _ui_room_message; + ui_room_subject = _ui_room_subject; + ui_room_broadcast = _ui_room_broadcast; + ui_status = _ui_status; + ui_status_private = _ui_status_private; + ui_status_room = _ui_status_room; + ui_unread = _ui_unread; + ui_win_unread = _ui_win_unread; + ui_ask_password = _ui_ask_password; +} diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 3306a246..dd02ed70 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -58,8 +58,8 @@ static int _printable(const wint_t ch); static void _clear_input(void); static void _go_to_end(int display_size); -void -create_input_window(void) +static void +_create_input_window(void) { #ifdef NCURSES_REENTRANT set_escdelay(25); @@ -74,8 +74,8 @@ create_input_window(void) _inp_win_refresh(); } -void -inp_win_resize(const char * const input, const int size) +static void +_inp_win_resize(const char * const input, const int size) { int inp_x; getmaxyx(stdscr, rows, cols); @@ -92,20 +92,20 @@ inp_win_resize(const char * const input, const int size) _inp_win_refresh(); } -void -inp_non_block(void) +static void +_inp_non_block(void) { wtimeout(inp_win, 20); } -void -inp_block(void) +static void +_inp_block(void) { wtimeout(inp_win, -1); } -wint_t -inp_get_char(char *input, int *size) +static wint_t +_inp_get_char(char *input, int *size) { int inp_x = 0; int i; @@ -203,8 +203,8 @@ inp_get_char(char *input, int *size) return ch; } -void -inp_get_password(char *passwd) +static void +_inp_get_password(char *passwd) { _clear_input(); _inp_win_refresh(); @@ -215,14 +215,14 @@ inp_get_password(char *passwd) status_bar_clear(); } -void -inp_put_back(void) +static void +_inp_put_back(void) { _inp_win_refresh(); } -void -inp_replace_input(char *input, const char * const new_input, int *size) +static void +_inp_replace_input(char *input, const char * const new_input, int *size) { int display_size; strcpy(input, new_input); @@ -234,8 +234,8 @@ inp_replace_input(char *input, const char * const new_input, int *size) _go_to_end(display_size); } -void -inp_win_reset(void) +static void +_inp_win_reset(void) { _clear_input(); pad_start = 0; @@ -703,3 +703,17 @@ _printable(const wint_t ch) gunichar unichar = g_utf8_get_char(bytes); return g_unichar_isprint(unichar) && (ch != KEY_MOUSE); } + +void +inputwin_init_module(void) +{ + create_input_window = _create_input_window; + inp_win_resize = _inp_win_resize; + inp_non_block = _inp_non_block; + inp_block = _inp_block; + inp_get_char = _inp_get_char; + inp_get_password = _inp_get_password; + inp_put_back = _inp_put_back; + inp_replace_input = _inp_replace_input; + inp_win_reset = _inp_win_reset; +} diff --git a/src/ui/notifier.c b/src/ui/notifier.c index 403c215e..ebc61e0d 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -39,16 +39,16 @@ static void _notify(const char * const message, int timeout, const char * const category); -void -notifier_init(void) +static void +_notifier_init(void) { #ifdef HAVE_LIBNOTIFY notify_init("Profanity"); #endif } -void -notifier_uninit(void) +static void +_notifier_uninit(void) { #ifdef HAVE_LIBNOTIFY if (notify_is_initted()) { @@ -57,8 +57,8 @@ notifier_uninit(void) #endif } -void -notify_typing(const char * const handle) +static void +_notify_typing(const char * const handle) { char message[strlen(handle) + 1 + 11]; sprintf(message, "%s: typing...", handle); @@ -66,8 +66,8 @@ notify_typing(const char * const handle) _notify(message, 10000, "Incoming message"); } -void -notify_invite(const char * const from, const char * const room, +static void +_notify_invite(const char * const from, const char * const room, const char * const reason) { GString *message = g_string_new("Room invite\nfrom: "); @@ -83,8 +83,8 @@ notify_invite(const char * const from, const char * const room, g_string_free(message, TRUE); } -void -notify_message(const char * const handle, int win) +static void +_notify_message(const char * const handle, int win) { char message[strlen(handle) + 1 + 14]; sprintf(message, "%s: message (%d).", handle, win); @@ -92,8 +92,8 @@ notify_message(const char * const handle, int win) _notify(message, 10000, "incoming message"); } -void -notify_room_message(const char * const handle, const char * const room, int win) +static void +_notify_room_message(const char * const handle, const char * const room, int win) { GString *text = g_string_new(""); @@ -105,8 +105,8 @@ notify_room_message(const char * const handle, const char * const room, int win) g_string_free(text, TRUE); } -void -notify_subscription(const char * const from) +static void +_notify_subscription(const char * const from) { GString *message = g_string_new("Subscription request: \n"); g_string_append(message, from); @@ -114,8 +114,8 @@ notify_subscription(const char * const from) g_string_free(message, TRUE); } -void -notify_remind(void) +static void +_notify_remind(void) { gint unread = ui_unread(); gint open = muc_invite_count(); @@ -206,3 +206,17 @@ _notify(const char * const message, int timeout, Shell_NotifyIcon(NIM_MODIFY, &nid); #endif } + +void +notifier_init_module(void) +{ + notifier_init = _notifier_init; + notifier_uninit = _notifier_uninit; + notify_typing = _notify_typing; + notify_invite = _notify_invite; + notify_message = _notify_message; + notify_room_message = _notify_room_message; + notify_subscription = _notify_subscription; + notify_remind = _notify_remind; +} + diff --git a/src/ui/statusbar.c b/src/ui/statusbar.c index 16bd31c9..4d0ab7ef 100644 --- a/src/ui/statusbar.c +++ b/src/ui/statusbar.c @@ -54,8 +54,8 @@ static void _mark_new(int num); static void _mark_active(int num); static void _mark_inactive(int num); -void -create_status_bar(void) +static void +_create_status_bar(void) { int rows, cols, i; getmaxyx(stdscr, rows, cols); @@ -84,8 +84,8 @@ create_status_bar(void) dirty = TRUE; } -void -status_bar_refresh(void) +static void +_status_bar_refresh(void) { GDateTime *now_time = g_date_time_new_now_local(); GTimeSpan elapsed = g_date_time_difference(now_time, last_time); @@ -108,8 +108,8 @@ status_bar_refresh(void) g_date_time_unref(now_time); } -void -status_bar_resize(void) +static void +_status_bar_resize(void) { int rows, cols; getmaxyx(stdscr, rows, cols); @@ -134,8 +134,8 @@ status_bar_resize(void) dirty = TRUE; } -void -status_bar_set_all_inactive(void) +static void +_status_bar_set_all_inactive(void) { int i = 0; for (i = 0; i < 12; i++) { @@ -148,8 +148,8 @@ status_bar_set_all_inactive(void) g_hash_table_remove_all(remaining_new); } -void -status_bar_current(int i) +static void +_status_bar_current(int i) { if (i == 0) { current = 10; @@ -165,8 +165,8 @@ status_bar_current(int i) wattroff(status_bar, COLOUR_STATUS_BRACKET); } -void -status_bar_inactive(const int win) +static void +_status_bar_inactive(const int win) { int true_win = win; if (true_win == 0) { @@ -205,8 +205,8 @@ status_bar_inactive(const int win) } } -void -status_bar_active(const int win) +static void +_status_bar_active(const int win) { int true_win = win; if (true_win == 0) { @@ -239,8 +239,8 @@ status_bar_active(const int win) } } -void -status_bar_new(const int win) +static void +_status_bar_new(const int win) { int true_win = win; if (true_win == 0) { @@ -262,15 +262,15 @@ status_bar_new(const int win) } } -void -status_bar_get_password(void) +static void +_status_bar_get_password(void) { status_bar_print_message("Enter password:"); dirty = TRUE; } -void -status_bar_print_message(const char * const msg) +static void +_status_bar_print_message(const char * const msg) { werase(status_bar); @@ -292,8 +292,8 @@ status_bar_print_message(const char * const msg) dirty = TRUE; } -void -status_bar_clear(void) +static void +_status_bar_clear(void) { if (message != NULL) { free(message); @@ -320,8 +320,8 @@ status_bar_clear(void) dirty = TRUE; } -void -status_bar_clear_message(void) +static void +_status_bar_clear_message(void) { if (message != NULL) { free(message); @@ -421,3 +421,20 @@ _mark_inactive(int num) mvwaddch(status_bar, 0, cols - 34 + active_pos, ' '); dirty = TRUE; } + +void +statusbar_init_module(void) +{ + create_status_bar = _create_status_bar; + status_bar_refresh = _status_bar_refresh; + status_bar_resize = _status_bar_resize; + status_bar_set_all_inactive = _status_bar_set_all_inactive; + status_bar_current = _status_bar_current; + status_bar_inactive = _status_bar_inactive; + status_bar_active = _status_bar_active; + status_bar_new = _status_bar_new; + status_bar_get_password = _status_bar_get_password; + status_bar_print_message = _status_bar_print_message; + status_bar_clear = _status_bar_clear; + status_bar_clear_message = _status_bar_clear_message; +} diff --git a/src/ui/titlebar.c b/src/ui/titlebar.c index 791a5fbe..04492b62 100644 --- a/src/ui/titlebar.c +++ b/src/ui/titlebar.c @@ -37,8 +37,8 @@ static contact_presence_t current_status; static void _title_bar_draw_title(void); static void _title_bar_draw_status(void); -void -create_title_bar(void) +static void +_create_title_bar(void) { int cols = getmaxx(stdscr); @@ -49,8 +49,8 @@ create_title_bar(void) dirty = TRUE; } -void -title_bar_title(void) +static void +_title_bar_title(void) { werase(title_bar); recipient = NULL; @@ -60,8 +60,8 @@ title_bar_title(void) dirty = TRUE; } -void -title_bar_resize(void) +static void +_title_bar_resize(void) { int cols = getmaxx(stdscr); @@ -73,8 +73,8 @@ title_bar_resize(void) dirty = TRUE; } -void -title_bar_refresh(void) +static void +_title_bar_refresh(void) { if (recipient != NULL) { @@ -107,8 +107,8 @@ title_bar_refresh(void) } } -void -title_bar_show(const char * const title) +static void +_title_bar_show(const char * const title) { if (current_title != NULL) free(current_title); @@ -118,15 +118,15 @@ title_bar_show(const char * const title) _title_bar_draw_title(); } -void -title_bar_set_status(contact_presence_t status) +static void +_title_bar_set_status(contact_presence_t status) { current_status = status; _title_bar_draw_status(); } -void -title_bar_set_recipient(const char * const from) +static void +_title_bar_set_recipient(const char * const from) { if (typing_elapsed != NULL) { g_timer_destroy(typing_elapsed); @@ -144,8 +144,8 @@ title_bar_set_recipient(const char * const from) dirty = TRUE; } -void -title_bar_set_typing(gboolean is_typing) +static void +_title_bar_set_typing(gboolean is_typing) { if (is_typing) { if (typing_elapsed != NULL) { @@ -170,8 +170,8 @@ title_bar_set_typing(gboolean is_typing) dirty = TRUE; } -void -title_bar_draw(void) +static void +_title_bar_draw(void) { werase(title_bar); _title_bar_draw_status(); @@ -227,3 +227,17 @@ _title_bar_draw_title(void) dirty = TRUE; } + +void +titlebar_init_module(void) +{ + create_title_bar = _create_title_bar; + title_bar_title = _title_bar_title; + title_bar_resize = _title_bar_resize; + title_bar_refresh = _title_bar_refresh; + title_bar_show = _title_bar_show; + title_bar_set_status = _title_bar_set_status; + title_bar_set_recipient = _title_bar_set_recipient; + title_bar_set_typing = _title_bar_set_typing; + title_bar_draw = _title_bar_draw; +} diff --git a/src/ui/ui.h b/src/ui/ui.h index f6bb98ac..e5d4118d 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -41,219 +41,221 @@ #define INP_WIN_MAX 1000 +void ui_init_module(void); +void console_init_module(void); +void inputwin_init_module(void); +void notifier_init_module(void); +void statusbar_init_module(void); +void titlebar_init_module(void); + // ui startup and control -void ui_init(void); -void ui_load_colours(void); -void ui_refresh(void); -void ui_close(void); -void ui_resize(const int ch, const char * const input, +void (*ui_init)(void); +void (*ui_load_colours)(void); +void (*ui_refresh)(void); +void (*ui_close)(void); +void (*ui_resize)(const int ch, const char * const input, const int size); -GSList* ui_get_recipients(void); -void ui_handle_special_keys(const wint_t * const ch, const char * const inp, +GSList* (*ui_get_recipients)(void); +void (*ui_handle_special_keys)(const wint_t * const ch, const char * const inp, const int size); -void ui_switch_win(const int i); -void ui_next_win(void); -void ui_previous_win(void); -unsigned long ui_get_idle_time(void); -void ui_reset_idle_time(void); -void ui_new_chat_win(const char * const to); -void ui_print_error_from_recipient(const char * const from, const char *err_msg); -void ui_print_system_msg_from_recipient(const char * const from, const char *message); -void ui_handle_error_message(const char * const from, const char * const err_msg); -gint ui_unread(void); -void ui_close_connected_win(int index); -int ui_close_all_wins(void); -int ui_close_read_wins(void); +void (*ui_switch_win)(const int i); +void (*ui_next_win)(void); +void (*ui_previous_win)(void); +unsigned long (*ui_get_idle_time)(void); +void (*ui_reset_idle_time)(void); +void (*ui_new_chat_win)(const char * const to); +void (*ui_print_error_from_recipient)(const char * const from, const char *err_msg); +void (*ui_print_system_msg_from_recipient)(const char * const from, const char *message); +void (*ui_handle_error_message)(const char * const from, const char * const err_msg); +gint (*ui_unread)(void); +void (*ui_close_connected_win)(int index); +int (*ui_close_all_wins)(void); +int (*ui_close_read_wins)(void); // current window actions -void ui_close_current(void); -void ui_clear_current(void); -win_type_t ui_current_win_type(void); -int ui_current_win_index(void); -char* ui_current_recipient(void); -void ui_current_print_line(const char * const msg, ...); -void ui_current_error_line(const char * const msg); -void ui_current_page_off(void); +void (*ui_close_current)(void); +void (*ui_clear_current)(void); +win_type_t (*ui_current_win_type)(void); +int (*ui_current_win_index)(void); +char* (*ui_current_recipient)(void); +void (*ui_current_print_line)(const char * const msg, ...); +void (*ui_current_error_line)(const char * const msg); +void (*ui_current_page_off)(void); -win_type_t ui_win_type(int index); -char * ui_recipient(int index); -void ui_close_win(int index); -gboolean ui_win_exists(int index); -int ui_win_unread(int index); -char * ui_ask_password(void); +win_type_t (*ui_win_type)(int index); +char * (*ui_recipient)(int index); +void (*ui_close_win)(int index); +gboolean (*ui_win_exists)(int index); +int (*ui_win_unread)(int index); +char * (*ui_ask_password)(void); // ui events -void ui_contact_typing(const char * const from); -void ui_incoming_msg(const char * const from, const char * const message, +void (*ui_contact_typing)(const char * const from); +void (*ui_incoming_msg)(const char * const from, const char * const message, GTimeVal *tv_stamp, gboolean priv); -void ui_contact_online(const char * const barejid, const char * const resource, +void (*ui_contact_online)(const char * const barejid, const char * const resource, const char * const show, const char * const status, GDateTime *last_activity); -void ui_contact_offline(const char * const from, const char * const show, +void (*ui_contact_offline)(const char * const from, const char * const show, const char * const status); -void ui_disconnected(void); -void ui_recipient_gone(const char * const barejid); -void ui_outgoing_msg(const char * const from, const char * const to, +void (*ui_disconnected)(void); +void (*ui_recipient_gone)(const char * const barejid); +void (*ui_outgoing_msg)(const char * const from, const char * const to, const char * const message); -void ui_room_join(Jid *jid); -void ui_room_roster(const char * const room, GList *roster, const char * const presence); -void ui_room_history(const char * const room_jid, const char * const nick, +void (*ui_room_join)(Jid *jid); +void (*ui_room_roster)(const char * const room, GList *roster, const char * const presence); +void (*ui_room_history)(const char * const room_jid, const char * const nick, GTimeVal tv_stamp, const char * const message); -void ui_room_message(const char * const room_jid, const char * const nick, +void (*ui_room_message)(const char * const room_jid, const char * const nick, const char * const message); -void ui_room_subject(const char * const room_jid, +void (*ui_room_subject)(const char * const room_jid, const char * const subject); -void ui_room_broadcast(const char * const room_jid, +void (*ui_room_broadcast)(const char * const room_jid, const char * const message); -void ui_room_member_offline(const char * const room, const char * const nick); -void ui_room_member_online(const char * const room, +void (*ui_room_member_offline)(const char * const room, const char * const nick); +void (*ui_room_member_online)(const char * const room, const char * const nick, const char * const show, const char * const status); -void ui_room_member_nick_change(const char * const room, +void (*ui_room_member_nick_change)(const char * const room, const char * const old_nick, const char * const nick); -void ui_room_nick_change(const char * const room, const char * const nick); -void ui_room_member_presence(const char * const room, +void (*ui_room_nick_change)(const char * const room, const char * const nick); +void (*ui_room_member_presence)(const char * const room, const char * const nick, const char * const show, const char * const status); -void ui_roster_add(const char * const barejid, const char * const name); -void ui_roster_remove(const char * const barejid); -void ui_contact_already_in_group(const char * const contact, const char * const group); -void ui_contact_not_in_group(const char * const contact, const char * const group); -void ui_group_added(const char * const contact, const char * const group); -void ui_group_removed(const char * const contact, const char * const group); +void (*ui_roster_add)(const char * const barejid, const char * const name); +void (*ui_roster_remove)(const char * const barejid); +void (*ui_contact_already_in_group)(const char * const contact, const char * const group); +void (*ui_contact_not_in_group)(const char * const contact, const char * const group); +void (*ui_group_added)(const char * const contact, const char * const group); +void (*ui_group_removed)(const char * const contact, const char * const group); // contact status functions -void ui_status_room(const char * const contact); -void ui_status(void); -void ui_status_private(void); +void (*ui_status_room)(const char * const contact); +void (*ui_status)(void); +void (*ui_status_private)(void); -void ui_create_duck_win(void); -void ui_open_duck_win(void); -void ui_duck(const char * const query); -void ui_duck_result(const char * const result); -gboolean ui_duck_exists(void); +void (*ui_create_duck_win)(void); +void (*ui_open_duck_win)(void); +void (*ui_duck)(const char * const query); +void (*ui_duck_result)(const char * const result); +gboolean (*ui_duck_exists)(void); -void ui_tidy_wins(void); -void ui_prune_wins(void); +void (*ui_tidy_wins)(void); +void (*ui_prune_wins)(void); // create windows -void create_title_bar(void); -void create_status_bar(void); -void create_input_window(void); +void (*create_title_bar)(void); +void (*create_status_bar)(void); +void (*create_input_window)(void); // title bar actions -void title_bar_refresh(void); -void title_bar_resize(void); -void title_bar_show(const char * const title); -void title_bar_title(void); -void title_bar_set_status(contact_presence_t status); -void title_bar_set_recipient(const char * const from); -void title_bar_set_typing(gboolean is_typing); -void title_bar_draw(void); +void (*title_bar_refresh)(void); +void (*title_bar_resize)(void); +void (*title_bar_show)(const char * const title); +void (*title_bar_title)(void); +void (*title_bar_set_status)(contact_presence_t status); +void (*title_bar_set_recipient)(const char * const from); +void (*title_bar_set_typing)(gboolean is_typing); +void (*title_bar_draw)(void); // console window actions -void cons_show(const char * const msg, ...); -void cons_about(void); -void cons_help(void); -void cons_basic_help(void); -void cons_settings_help(void); -void cons_presence_help(void); -void cons_navigation_help(void); -void cons_prefs(void); -void cons_show_ui_prefs(void); -void cons_show_desktop_prefs(void); -void cons_show_chat_prefs(void); -void cons_show_log_prefs(void); -void cons_show_presence_prefs(void); -void cons_show_connection_prefs(void); -void cons_show_account(ProfAccount *account); -void cons_debug(const char * const msg, ...); -void cons_show_time(void); -void cons_show_word(const char * const word); -void cons_show_error(const char * const cmd, ...); -void cons_highlight_show(const char * const cmd); -void cons_show_contacts(GSList * list); -void cons_show_roster(GSList * list); -void cons_show_roster_group(const char * const group, GSList * list); -void cons_show_wins(void); -void cons_show_status(const char * const barejid); -void cons_show_info(PContact pcontact); -void cons_show_caps(const char * const contact, Resource *resource); -void cons_show_themes(GSList *themes); -void cons_show_login_success(ProfAccount *account); -void cons_show_software_version(const char * const jid, +void (*cons_show)(const char * const msg, ...); +void (*cons_about)(void); +void (*cons_help)(void); +void (*cons_navigation_help)(void); +void (*cons_prefs)(void); +void (*cons_show_ui_prefs)(void); +void (*cons_show_desktop_prefs)(void); +void (*cons_show_chat_prefs)(void); +void (*cons_show_log_prefs)(void); +void (*cons_show_presence_prefs)(void); +void (*cons_show_connection_prefs)(void); +void (*cons_show_account)(ProfAccount *account); +void (*cons_debug)(const char * const msg, ...); +void (*cons_show_time)(void); +void (*cons_show_word)(const char * const word); +void (*cons_show_error)(const char * const cmd, ...); +void (*cons_show_contacts)(GSList * list); +void (*cons_show_roster)(GSList * list); +void (*cons_show_roster_group)(const char * const group, GSList * list); +void (*cons_show_wins)(void); +void (*cons_show_status)(const char * const barejid); +void (*cons_show_info)(PContact pcontact); +void (*cons_show_caps)(const char * const contact, Resource *resource); +void (*cons_show_themes)(GSList *themes); +void (*cons_show_login_success)(ProfAccount *account); +void (*cons_show_software_version)(const char * const jid, const char * const presence, const char * const name, const char * const version, const char * const os); -void cons_show_account_list(gchar **accounts); -void cons_show_room_list(GSList *room, const char * const conference_node); -void cons_show_bookmarks(const GList *list); -void cons_show_disco_items(GSList *items, const char * const jid); -void cons_show_disco_info(const char *from, GSList *identities, GSList *features); -void cons_show_room_invite(const char * const invitor, const char * const room, +void (*cons_show_account_list)(gchar **accounts); +void (*cons_show_room_list)(GSList *room, const char * const conference_node); +void (*cons_show_bookmarks)(const GList *list); +void (*cons_show_disco_items)(GSList *items, const char * const jid); +void (*cons_show_disco_info)(const char *from, GSList *identities, GSList *features); +void (*cons_show_room_invite)(const char * const invitor, const char * const room, const char * const reason); -void cons_check_version(gboolean not_available_msg); -void cons_show_typing(const char * const barejid); -void cons_show_incoming_message(const char * const short_from, const int win_index); -void cons_show_room_invites(GSList *invites); -void cons_show_received_subs(void); -void cons_show_sent_subs(void); -void cons_alert(void); -void cons_theme_setting(void); -void cons_beep_setting(void); -void cons_flash_setting(void); -void cons_splash_setting(void); -void cons_vercheck_setting(void); -void cons_mouse_setting(void); -void cons_statuses_setting(void); -void cons_titlebar_setting(void); -void cons_notify_setting(void); -void cons_show_desktop_prefs(void); -void cons_states_setting(void); -void cons_outtype_setting(void); -void cons_intype_setting(void); -void cons_gone_setting(void); -void cons_history_setting(void); -void cons_log_setting(void); -void cons_chlog_setting(void); -void cons_grlog_setting(void); -void cons_autoaway_setting(void); -void cons_reconnect_setting(void); -void cons_autoping_setting(void); -void cons_priority_setting(void); -void cons_autoconnect_setting(void); +void (*cons_check_version)(gboolean not_available_msg); +void (*cons_show_typing)(const char * const barejid); +void (*cons_show_incoming_message)(const char * const short_from, const int win_index); +void (*cons_show_room_invites)(GSList *invites); +void (*cons_show_received_subs)(void); +void (*cons_show_sent_subs)(void); +void (*cons_alert)(void); +void (*cons_theme_setting)(void); +void (*cons_beep_setting)(void); +void (*cons_flash_setting)(void); +void (*cons_splash_setting)(void); +void (*cons_vercheck_setting)(void); +void (*cons_mouse_setting)(void); +void (*cons_statuses_setting)(void); +void (*cons_titlebar_setting)(void); +void (*cons_notify_setting)(void); +void (*cons_show_desktop_prefs)(void); +void (*cons_states_setting)(void); +void (*cons_outtype_setting)(void); +void (*cons_intype_setting)(void); +void (*cons_gone_setting)(void); +void (*cons_history_setting)(void); +void (*cons_log_setting)(void); +void (*cons_chlog_setting)(void); +void (*cons_grlog_setting)(void); +void (*cons_autoaway_setting)(void); +void (*cons_reconnect_setting)(void); +void (*cons_autoping_setting)(void); +void (*cons_priority_setting)(void); +void (*cons_autoconnect_setting)(void); // status bar actions -void status_bar_refresh(void); -void status_bar_resize(void); -void status_bar_clear(void); -void status_bar_clear_message(void); -void status_bar_get_password(void); -void status_bar_print_message(const char * const msg); -void status_bar_inactive(const int win); -void status_bar_active(const int win); -void status_bar_new(const int win); -void status_bar_update_time(void); -void status_bar_set_all_inactive(void); -void status_bar_current(int i); +void (*status_bar_refresh)(void); +void (*status_bar_resize)(void); +void (*status_bar_clear)(void); +void (*status_bar_clear_message)(void); +void (*status_bar_get_password)(void); +void (*status_bar_print_message)(const char * const msg); +void (*status_bar_inactive)(const int win); +void (*status_bar_active)(const int win); +void (*status_bar_new)(const int win); +void (*status_bar_set_all_inactive)(void); +void (*status_bar_current)(int i); // input window actions -wint_t inp_get_char(char *input, int *size); -void inp_win_reset(void); -void inp_win_resize(const char * input, const int size); -void inp_put_back(void); -void inp_non_block(void); -void inp_block(void); -void inp_get_password(char *passwd); -void inp_replace_input(char *input, const char * const new_input, int *size); +wint_t (*inp_get_char)(char *input, int *size); +void (*inp_win_reset)(void); +void (*inp_win_resize)(const char * input, const int size); +void (*inp_put_back)(void); +void (*inp_non_block)(void); +void (*inp_block)(void); +void (*inp_get_password)(char *passwd); +void (*inp_replace_input)(char *input, const char * const new_input, int *size); // desktop notifier actions -void notifier_init(void); -void notifier_uninit(void); +void (*notifier_init)(void); +void (*notifier_uninit)(void); -void notify_typing(const char * const handle); -void notify_message(const char * const handle, int win); -void notify_room_message(const char * const handle, const char * const room, +void (*notify_typing)(const char * const handle); +void (*notify_message)(const char * const handle, int win); +void (*notify_room_message)(const char * const handle, const char * const room, int win); -void notify_remind(void); -void notify_invite(const char * const from, const char * const room, +void (*notify_remind)(void); +void (*notify_invite)(const char * const from, const char * const room, const char * const reason); -void notify_subscription(const char * const from); +void (*notify_subscription)(const char * const from); #endif diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c index 0818f9ee..4516454f 100644 --- a/src/xmpp/bookmark.c +++ b/src/xmpp/bookmark.c @@ -61,8 +61,8 @@ bookmark_request(void) xmpp_stanza_release(iq); } -void -bookmark_add(const char *jid, const char *nick, gboolean autojoin) +static void +_bookmark_add(const char *jid, const char *nick, gboolean autojoin) { /* TODO: send request */ /* TODO: manage bookmark_list */ @@ -72,8 +72,8 @@ bookmark_add(const char *jid, const char *nick, gboolean autojoin) autocomplete_add(bookmark_ac, jid); } -void -bookmark_remove(const char *jid, gboolean autojoin) +static void +_bookmark_remove(const char *jid, gboolean autojoin) { /* TODO: manage bookmark_list */ if (autojoin) { @@ -84,20 +84,20 @@ bookmark_remove(const char *jid, gboolean autojoin) } } -const GList * -bookmark_get_list(void) +static const GList * +_bookmark_get_list(void) { return bookmark_list; } -char * -bookmark_find(char *search_str) +static char * +_bookmark_find(char *search_str) { return autocomplete_complete(bookmark_ac, search_str); } -void -bookmark_autocomplete_reset(void) +static void +_bookmark_autocomplete_reset(void) { if (bookmark_ac != NULL) { autocomplete_reset(bookmark_ac); @@ -243,3 +243,13 @@ _bookmark_item_destroy(gpointer item) free(p->nick); free(p); } + +void +bookmark_init_module(void) +{ + bookmark_add = _bookmark_add; + bookmark_remove = _bookmark_remove; + bookmark_get_list = _bookmark_get_list; + bookmark_find = _bookmark_find; + bookmark_autocomplete_reset = _bookmark_autocomplete_reset; +} diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c index 658be124..fc71ae54 100644 --- a/src/xmpp/capabilities.c +++ b/src/xmpp/capabilities.c @@ -107,8 +107,8 @@ caps_contains(const char * const caps_str) return (g_hash_table_lookup(capabilities, caps_str) != NULL); } -Capabilities * -caps_get(const char * const caps_str) +static Capabilities * +_caps_get(const char * const caps_str) { return g_hash_table_lookup(capabilities, caps_str); } @@ -303,8 +303,8 @@ caps_create_query_response_stanza(xmpp_ctx_t * const ctx) return query; } -void -caps_close(void) +static void +_caps_close(void) { g_hash_table_destroy(capabilities); } @@ -326,3 +326,10 @@ _caps_destroy(Capabilities *caps) free(caps); } } + +void +capabilities_init_module(void) +{ + caps_get = _caps_get; + caps_close = _caps_close; +} diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index a1cb31c4..f38da800 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -91,8 +91,8 @@ void _connection_free_saved_account(void); void _connection_free_saved_details(void); void _connection_free_session_data(void); -void -jabber_init(const int disable_tls) +static void +_jabber_init(const int disable_tls) { log_info("Initialising XMPP"); jabber_conn.conn_status = JABBER_STARTED; @@ -108,8 +108,8 @@ jabber_init(const int disable_tls) xmpp_initialize(); } -jabber_conn_status_t -jabber_connect_with_account(const ProfAccount * const account) +static jabber_conn_status_t +_jabber_connect_with_account(const ProfAccount * const account) { assert(account != NULL); @@ -128,8 +128,8 @@ jabber_connect_with_account(const ProfAccount * const account) return result; } -jabber_conn_status_t -jabber_connect_with_details(const char * const jid, +static jabber_conn_status_t +_jabber_connect_with_details(const char * const jid, const char * const passwd, const char * const altdomain) { assert(jid != NULL); @@ -160,8 +160,8 @@ jabber_connect_with_details(const char * const jid, return _jabber_connect(saved_details.jid, passwd, saved_details.altdomain); } -void -jabber_disconnect(void) +static void +_jabber_disconnect(void) { // if connected, send end stream and wait for response if (jabber_conn.conn_status == JABBER_CONNECTED) { @@ -190,14 +190,14 @@ jabber_disconnect(void) FREE_SET_NULL(jabber_conn.domain); } -void -jabber_shutdown(void) +static void +_jabber_shutdown(void) { xmpp_shutdown(); } -void -jabber_process_events(void) +static void +_jabber_process_events(void) { // run xmpp event loop if connected, connecting or disconnecting if (jabber_conn.conn_status == JABBER_CONNECTED @@ -217,8 +217,8 @@ jabber_process_events(void) } -void -jabber_set_autoping(const int seconds) +static void +_jabber_set_autoping(const int seconds) { if (jabber_conn.conn_status == JABBER_CONNECTED) { xmpp_timed_handler_delete(jabber_conn.conn, _ping_timed_handler); @@ -231,14 +231,14 @@ jabber_set_autoping(const int seconds) } } -GList * -jabber_get_available_resources(void) +static GList * +_jabber_get_available_resources(void) { return g_hash_table_get_values(available_resources); } -jabber_conn_status_t -jabber_get_connection_status(void) +static jabber_conn_status_t +_jabber_get_connection_status(void) { return (jabber_conn.conn_status); } @@ -255,26 +255,26 @@ connection_get_ctx(void) return jabber_conn.ctx; } -const char * -jabber_get_fulljid(void) +static const char * +_jabber_get_fulljid(void) { return xmpp_conn_get_jid(jabber_conn.conn); } -const char * -jabber_get_domain(void) +static const char * +_jabber_get_domain(void) { return jabber_conn.domain; } -char * -jabber_get_presence_message(void) +static char * +_jabber_get_presence_message(void) { return jabber_conn.presence_message; } -char * -jabber_get_account_name(void) +static char * +_jabber_get_account_name(void) { return saved_account.name; } @@ -615,3 +615,20 @@ _xmpp_get_file_logger() return file_log; } +void +jabber_init_module(void) +{ + jabber_init = _jabber_init; + jabber_connect_with_account = _jabber_connect_with_account; + jabber_connect_with_details = _jabber_connect_with_details; + jabber_disconnect = _jabber_disconnect; + jabber_shutdown = _jabber_shutdown; + jabber_process_events = _jabber_process_events; + jabber_set_autoping = _jabber_set_autoping; + jabber_get_available_resources = _jabber_get_available_resources; + jabber_get_connection_status = _jabber_get_connection_status; + jabber_get_fulljid = _jabber_get_fulljid; + jabber_get_domain = _jabber_get_domain; + jabber_get_presence_message = _jabber_get_presence_message; + jabber_get_account_name = _jabber_get_account_name; +} diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index fdabe771..369d7f7e 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -75,8 +75,8 @@ iq_add_handlers(void) HANDLE(STANZA_NS_PING, STANZA_TYPE_GET, _iq_handle_ping_get); } -void -iq_room_list_request(gchar *conferencejid) +static void +_iq_room_list_request(gchar *conferencejid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -85,8 +85,8 @@ iq_room_list_request(gchar *conferencejid) xmpp_stanza_release(iq); } -void -iq_disco_info_request(gchar *jid) +static void +_iq_disco_info_request(gchar *jid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -95,8 +95,8 @@ iq_disco_info_request(gchar *jid) xmpp_stanza_release(iq); } -void -iq_disco_items_request(gchar *jid) +static void +_iq_disco_items_request(gchar *jid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -105,8 +105,8 @@ iq_disco_items_request(gchar *jid) xmpp_stanza_release(iq); } -void -iq_send_software_version(const char * const fulljid) +static void +_iq_send_software_version(const char * const fulljid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -567,3 +567,12 @@ _iq_handle_discoitems_result(xmpp_conn_t * const conn, xmpp_stanza_t * const sta return 1; } + +void +iq_init_module(void) +{ + iq_room_list_request = _iq_room_list_request; + iq_disco_info_request = _iq_disco_info_request; + iq_disco_items_request = _iq_disco_items_request; + iq_send_software_version = _iq_send_software_version; +} diff --git a/src/xmpp/message.c b/src/xmpp/message.c index a1644587..482a3965 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -57,8 +57,8 @@ message_add_handlers(void) HANDLE(NULL, NULL, _conference_message_handler); } -void -message_send(const char * const msg, const char * const recipient) +static void +_message_send(const char * const msg, const char * const recipient) { const char * jid = NULL; @@ -90,8 +90,8 @@ message_send(const char * const msg, const char * const recipient) xmpp_stanza_release(message); } -void -message_send_groupchat(const char * const msg, const char * const recipient) +static void +_message_send_groupchat(const char * const msg, const char * const recipient) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -102,8 +102,8 @@ message_send_groupchat(const char * const msg, const char * const recipient) xmpp_stanza_release(message); } -void -message_send_duck(const char * const query) +static void +_message_send_duck(const char * const query) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -114,8 +114,8 @@ message_send_duck(const char * const query) xmpp_stanza_release(message); } -void -message_send_invite(const char * const room, const char * const contact, +static void +_message_send_invite(const char * const room, const char * const contact, const char * const reason) { xmpp_conn_t * const conn = connection_get_conn(); @@ -126,8 +126,8 @@ message_send_invite(const char * const room, const char * const contact, xmpp_stanza_release(stanza); } -void -message_send_composing(const char * const recipient) +static void +_message_send_composing(const char * const recipient) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -139,8 +139,8 @@ message_send_composing(const char * const recipient) chat_session_set_sent(recipient); } -void -message_send_paused(const char * const recipient) +static void +_message_send_paused(const char * const recipient) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -152,8 +152,8 @@ message_send_paused(const char * const recipient) chat_session_set_sent(recipient); } -void -message_send_inactive(const char * const recipient) +static void +_message_send_inactive(const char * const recipient) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -165,8 +165,8 @@ message_send_inactive(const char * const recipient) chat_session_set_sent(recipient); } -void -message_send_gone(const char * const recipient) +static void +_message_send_gone(const char * const recipient) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -439,3 +439,16 @@ _chat_message_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, } } +void +message_init_module(void) +{ + message_send = _message_send; + message_send_groupchat = _message_send_groupchat; + message_send_duck = _message_send_duck; + message_send_invite = _message_send_invite; + message_send_composing = _message_send_composing; + message_send_paused = _message_send_paused; + message_send_inactive = _message_send_inactive; + message_send_gone = _message_send_gone; +} + diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index ba9c6c02..3ca2f63e 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -80,8 +80,8 @@ presence_add_handlers(void) HANDLE(NULL, NULL, _available_handler); } -void -presence_subscription(const char * const jid, const jabber_subscr_t action) +static void +_presence_subscription(const char * const jid, const jabber_subscr_t action) { assert(jid != NULL); @@ -122,14 +122,14 @@ presence_subscription(const char * const jid, const jabber_subscr_t action) jid_destroy(jidp); } -GSList * -presence_get_subscription_requests(void) +static GSList * +_presence_get_subscription_requests(void) { return autocomplete_get_list(sub_requests_ac); } -gint -presence_sub_request_count(void) +static gint +_presence_sub_request_count(void) { return autocomplete_length(sub_requests_ac); } @@ -146,14 +146,14 @@ presence_clear_sub_requests(void) autocomplete_clear(sub_requests_ac); } -char * -presence_sub_request_find(char * search_str) +static char * +_presence_sub_request_find(char * search_str) { return autocomplete_complete(sub_requests_ac, search_str); } -gboolean -presence_sub_request_exists(const char * const bare_jid) +static gboolean +_presence_sub_request_exists(const char * const bare_jid) { gboolean result = FALSE; GSList *requests_p = autocomplete_get_list(sub_requests_ac); @@ -174,14 +174,14 @@ presence_sub_request_exists(const char * const bare_jid) return result; } -void -presence_reset_sub_request_search(void) +static void +_presence_reset_sub_request_search(void) { autocomplete_reset(sub_requests_ac); } -void -presence_update(const resource_presence_t presence_type, const char * const msg, +static void +_presence_update(const resource_presence_t presence_type, const char * const msg, const int idle) { if (jabber_get_connection_status() != JABBER_CONNECTED) { @@ -252,8 +252,8 @@ _send_room_presence(xmpp_conn_t *conn, xmpp_stanza_t *presence) } } -void -presence_join_room(Jid *jid) +static void +_presence_join_room(Jid *jid) { assert(jid != NULL); assert(jid->fulljid != NULL); @@ -261,7 +261,7 @@ presence_join_room(Jid *jid) log_debug("Sending room join presence to: %s", jid->fulljid); xmpp_ctx_t *ctx = connection_get_ctx(); xmpp_conn_t *conn = connection_get_conn(); - contact_presence_t presence_type = + resource_presence_t presence_type = accounts_get_last_presence(jabber_get_account_name()); const char *show = stanza_get_presence_string_from_type(presence_type); char *status = jabber_get_presence_message(); @@ -280,8 +280,8 @@ presence_join_room(Jid *jid) muc_join_room(jid->barejid, jid->resourcepart); } -void -presence_change_room_nick(const char * const room, const char * const nick) +static void +_presence_change_room_nick(const char * const room, const char * const nick) { assert(room != NULL); assert(nick != NULL); @@ -289,7 +289,7 @@ presence_change_room_nick(const char * const room, const char * const nick) log_debug("Sending room nickname change to: %s, nick: %s", room, nick); xmpp_ctx_t *ctx = connection_get_ctx(); xmpp_conn_t *conn = connection_get_conn(); - contact_presence_t presence_type = + resource_presence_t presence_type = accounts_get_last_presence(jabber_get_account_name()); const char *show = stanza_get_presence_string_from_type(presence_type); char *status = jabber_get_presence_message(); @@ -310,8 +310,8 @@ presence_change_room_nick(const char * const room, const char * const nick) free(full_room_jid); } -void -presence_leave_chat_room(const char * const room_jid) +static void +_presence_leave_chat_room(const char * const room_jid) { assert(room_jid != NULL); @@ -686,3 +686,18 @@ _room_presence_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, return 1; } + +void +presence_init_module(void) +{ + presence_subscription = _presence_subscription; + presence_get_subscription_requests = _presence_get_subscription_requests; + presence_sub_request_count = _presence_sub_request_count; + presence_sub_request_find = _presence_sub_request_find; + presence_sub_request_exists = _presence_sub_request_exists; + presence_reset_sub_request_search = _presence_reset_sub_request_search; + presence_update = _presence_update; + presence_join_room = _presence_join_room; + presence_change_room_nick = _presence_change_room_nick; + presence_leave_chat_room = _presence_leave_chat_room; +} diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c index 51c34ea1..e84de155 100644 --- a/src/xmpp/roster.c +++ b/src/xmpp/roster.c @@ -81,8 +81,8 @@ roster_request(void) xmpp_stanza_release(iq); } -void -roster_add_new(const char * const barejid, const char * const name) +static void +_roster_add_new(const char * const barejid, const char * const name) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -91,8 +91,8 @@ roster_add_new(const char * const barejid, const char * const name) xmpp_stanza_release(iq); } -void -roster_send_remove(const char * const barejid) +static void +_roster_send_remove(const char * const barejid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -101,8 +101,8 @@ roster_send_remove(const char * const barejid) xmpp_stanza_release(iq); } -void -roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups) +static void +_roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); @@ -112,8 +112,8 @@ roster_send_name_change(const char * const barejid, const char * const new_name, xmpp_stanza_release(iq); } -void -roster_send_add_to_group(const char * const group, PContact contact) +static void +_roster_send_add_to_group(const char * const group, PContact contact) { GSList *groups = p_contact_groups(contact); GSList *new_groups = NULL; @@ -157,8 +157,8 @@ _group_add_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, return 0; } -void -roster_send_remove_from_group(const char * const group, PContact contact) +static void +_roster_send_remove_from_group(const char * const group, PContact contact) { GSList *groups = p_contact_groups(contact); GSList *new_groups = NULL; @@ -297,7 +297,7 @@ _roster_handle_result(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, item = xmpp_stanza_get_next(item); } - contact_presence_t conn_presence = + resource_presence_t conn_presence = accounts_get_login_presence(jabber_get_account_name()); presence_update(conn_presence, NULL, 0); } @@ -323,3 +323,14 @@ _get_groups_from_item(xmpp_stanza_t *item) return groups; } + +void +roster_init_module(void) +{ + roster_add_new = _roster_add_new; + roster_send_remove = _roster_send_remove; + roster_send_name_change = _roster_send_name_change; + roster_send_add_to_group = _roster_send_add_to_group; + roster_send_remove_from_group = _roster_send_remove_from_group; + +} diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index 21c25aa4..90b17e59 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -74,66 +74,74 @@ typedef struct disco_identity_t { char *category; } DiscoIdentity; +void jabber_init_module(void); +void bookmark_init_module(void); +void capabilities_init_module(void); +void iq_init_module(void); +void message_init_module(void); +void presence_init_module(void); +void roster_init_module(void); + // connection functions -void jabber_init(const int disable_tls); -jabber_conn_status_t jabber_connect_with_details(const char * const jid, +void (*jabber_init)(const int disable_tls); +jabber_conn_status_t (*jabber_connect_with_details)(const char * const jid, const char * const passwd, const char * const altdomain); -jabber_conn_status_t jabber_connect_with_account(const ProfAccount * const account); -void jabber_disconnect(void); -void jabber_shutdown(void); -void jabber_process_events(void); -const char * jabber_get_fulljid(void); -const char * jabber_get_domain(void); -jabber_conn_status_t jabber_get_connection_status(void); -char * jabber_get_presence_message(void); -void jabber_set_autoping(int seconds); -char* jabber_get_account_name(void); -GList * jabber_get_available_resources(void); +jabber_conn_status_t (*jabber_connect_with_account)(const ProfAccount * const account); +void (*jabber_disconnect)(void); +void (*jabber_shutdown)(void); +void (*jabber_process_events)(void); +const char * (*jabber_get_fulljid)(void); +const char * (*jabber_get_domain)(void); +jabber_conn_status_t (*jabber_get_connection_status)(void); +char * (*jabber_get_presence_message)(void); +void (*jabber_set_autoping)(int seconds); +char* (*jabber_get_account_name)(void); +GList * (*jabber_get_available_resources)(void); // message functions -void message_send(const char * const msg, const char * const recipient); -void message_send_groupchat(const char * const msg, const char * const recipient); -void message_send_inactive(const char * const recipient); -void message_send_composing(const char * const recipient); -void message_send_paused(const char * const recipient); -void message_send_gone(const char * const recipient); -void message_send_invite(const char * const room, const char * const contact, +void (*message_send)(const char * const msg, const char * const recipient); +void (*message_send_groupchat)(const char * const msg, const char * const recipient); +void (*message_send_inactive)(const char * const recipient); +void (*message_send_composing)(const char * const recipient); +void (*message_send_paused)(const char * const recipient); +void (*message_send_gone)(const char * const recipient); +void (*message_send_invite)(const char * const room, const char * const contact, const char * const reason); -void message_send_duck(const char * const query); +void (*message_send_duck)(const char * const query); // presence functions -void presence_subscription(const char * const jid, const jabber_subscr_t action); -GSList* presence_get_subscription_requests(void); -gint presence_sub_request_count(void); -void presence_reset_sub_request_search(void); -char * presence_sub_request_find(char * search_str); -void presence_join_room(Jid *jid); -void presence_change_room_nick(const char * const room, const char * const nick); -void presence_leave_chat_room(const char * const room_jid); -void presence_update(resource_presence_t status, const char * const msg, +void (*presence_subscription)(const char * const jid, const jabber_subscr_t action); +GSList* (*presence_get_subscription_requests)(void); +gint (*presence_sub_request_count)(void); +void (*presence_reset_sub_request_search)(void); +char * (*presence_sub_request_find)(char * search_str); +void (*presence_join_room)(Jid *jid); +void (*presence_change_room_nick)(const char * const room, const char * const nick); +void (*presence_leave_chat_room)(const char * const room_jid); +void (*presence_update)(resource_presence_t status, const char * const msg, int idle); -gboolean presence_sub_request_exists(const char * const bare_jid); +gboolean (*presence_sub_request_exists)(const char * const bare_jid); // iq functions -void iq_send_software_version(const char * const fulljid); -void iq_room_list_request(gchar *conferencejid); -void iq_disco_info_request(gchar *jid); -void iq_disco_items_request(gchar *jid); +void (*iq_send_software_version)(const char * const fulljid); +void (*iq_room_list_request)(gchar *conferencejid); +void (*iq_disco_info_request)(gchar *jid); +void (*iq_disco_items_request)(gchar *jid); // caps functions -Capabilities* caps_get(const char * const caps_str); -void caps_close(void); +Capabilities* (*caps_get)(const char * const caps_str); +void (*caps_close)(void); -void bookmark_add(const char *jid, const char *nick, gboolean autojoin); -void bookmark_remove(const char *jid, gboolean autojoin); -const GList *bookmark_get_list(void); -char *bookmark_find(char *search_str); -void bookmark_autocomplete_reset(void); +void (*bookmark_add)(const char *jid, const char *nick, gboolean autojoin); +void (*bookmark_remove)(const char *jid, gboolean autojoin); +const GList * (*bookmark_get_list)(void); +char * (*bookmark_find)(char *search_str); +void (*bookmark_autocomplete_reset)(void); -void roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups); -void roster_send_add_to_group(const char * const group, PContact contact); -void roster_send_remove_from_group(const char * const group, PContact contact); -void roster_add_new(const char * const barejid, const char * const name); -void roster_send_remove(const char * const barejid); +void (*roster_send_name_change)(const char * const barejid, const char * const new_name, GSList *groups); +void (*roster_send_add_to_group)(const char * const group, PContact contact); +void (*roster_send_remove_from_group)(const char * const group, PContact contact); +void (*roster_add_new)(const char * const barejid, const char * const name); +void (*roster_send_remove)(const char * const barejid); #endif diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c index 929a3b51..db2e0fd5 100644 --- a/tests/config/mock_accounts.c +++ b/tests/config/mock_accounts.c @@ -23,168 +23,618 @@ #include #include #include +#include #include "config/accounts.h" -void accounts_load(void) {} -void accounts_close(void) {} +// mocks and stubs -char * accounts_find_all(char *prefix) -{ - return (char *)mock(); -} - -char * accounts_find_enabled(char *prefix) -{ - return (char *)mock(); -} - -void accounts_reset_all_search(void) {} -void accounts_reset_enabled_search(void) {} - -void accounts_add(const char *jid, const char *altdomain) -{ - check_expected(jid); -} - -gchar** accounts_get_list(void) -{ - return (gchar **)mock(); -} - -ProfAccount* accounts_get_account(const char * const name) +static ProfAccount * +_mock_accounts_get_account(const char * const name) { check_expected(name); return (ProfAccount *)mock(); } -void accounts_free_account(ProfAccount *account) +static char * +_mock_accounts_create_full_jid(ProfAccount *account) +{ + check_expected(account); + return (char *)mock(); +} + +void +_stub_accounts_free_account(ProfAccount *account) +{ + // do nothing +} + +void +_mock_accounts_free_account(ProfAccount *account) { check_expected(account); } -gboolean accounts_enable(const char * const name) +gchar ** +_mock_accounts_get_list(void) +{ + return (gchar **)mock(); +} + +void +_mock_accounts_add(const char *account_name, const char *altdomain) +{ + check_expected(account_name); + check_expected(altdomain); +} + +void +_stub_accounts_add(const char *account_name, const char *altdomain) +{ + // do nothing +} + +static gboolean +_mock_accounts_enable(const char * const name) { check_expected(name); return (gboolean)mock(); } -gboolean accounts_disable(const char * const name) +static gboolean +_mock_accounts_disable(const char * const name) { check_expected(name); return (gboolean)mock(); } -gboolean accounts_rename(const char * const account_name, - const char * const new_name) +static gboolean +_mock_accounts_rename(const char * const account_name, const char * const new_name) { check_expected(account_name); check_expected(new_name); return (gboolean)mock(); } -gboolean accounts_account_exists(const char * const account_name) +static gboolean +_mock_accounts_account_exists(const char * const account_name) { check_expected(account_name); return (gboolean)mock(); } -void accounts_set_jid(const char * const account_name, const char * const value) +static void +_mock_accounts_set_jid(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(value); } -void accounts_set_server(const char * const account_name, const char * const value) +static void +_stub_accounts_set_jid(const char * const account_name, const char * const value) +{ + // do nothing +} + +static void +_mock_accounts_set_resource(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(value); } -void accounts_set_resource(const char * const account_name, const char * const value) +static void +_stub_accounts_set_resource(const char * const account_name, const char * const value) +{ + // do nothing +} + +static void +_mock_accounts_set_server(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(value); } -void accounts_set_password(const char * const account_name, const char * const value) +static void +_stub_accounts_set_server(const char * const account_name, const char * const value) +{ + // do nothing +} + +static void +_mock_accounts_set_password(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(value); } -void accounts_set_muc_service(const char * const account_name, const char * const value) +static void +_stub_accounts_set_password(const char * const account_name, const char * const value) +{ + // do nothing +} + +static void +_mock_accounts_set_muc_service(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(value); } -void accounts_set_muc_nick(const char * const account_name, const char * const value) +static void +_stub_accounts_set_muc_service(const char * const account_name, const char * const value) +{ + // do nothing +} + +static void +_mock_accounts_set_muc_nick(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(value); } -void accounts_set_last_presence(const char * const account_name, const char * const value) {} +static void +_stub_accounts_set_muc_nick(const char * const account_name, const char * const value) +{ + // do nothing +} -void accounts_set_login_presence(const char * const account_name, const char * const value) +static void +_mock_accounts_set_priority_online(const char * const account_name, const gint value) { check_expected(account_name); check_expected(value); } -resource_presence_t accounts_get_login_presence(const char * const account_name) +static void +_stub_accounts_set_priority_online(const char * const account_name, const gint value) { + // do nothing +} + +static void +_mock_accounts_set_priority_chat(const char * const account_name, const gint value) +{ + check_expected(account_name); + check_expected(value); +} + +static void +_stub_accounts_set_priority_chat(const char * const account_name, const gint value) +{ + // do nothing +} + +static void +_mock_accounts_set_priority_away(const char * const account_name, const gint value) +{ + check_expected(account_name); + check_expected(value); +} + +static void +_stub_accounts_set_priority_away(const char * const account_name, const gint value) +{ + // do nothing +} + +static void +_mock_accounts_set_priority_xa(const char * const account_name, const gint value) +{ + check_expected(account_name); + check_expected(value); +} + +static void +_stub_accounts_set_priority_xa(const char * const account_name, const gint value) +{ + // do nothing +} + +static void +_mock_accounts_set_priority_dnd(const char * const account_name, const gint value) +{ + check_expected(account_name); + check_expected(value); +} + +static void +_stub_accounts_set_priority_dnd(const char * const account_name, const gint value) +{ + // do nothing +} + +static void +_mock_accounts_set_login_presence(const char * const account_name, const char * const value) +{ + check_expected(account_name); + check_expected(value); +} + +static void +_stub_accounts_set_login_presence(const char * const account_name, const char * const value) +{ + // do nothing +} + +static resource_presence_t +_mock_accounts_get_last_presence(const char * const account_name) +{ + check_expected(account_name); return (resource_presence_t)mock(); } -resource_presence_t accounts_get_last_presence(const char * const account_name) +// set up functions + +void +mock_accounts_get_account(void) { - return (resource_presence_t)mock(); + accounts_get_account = _mock_accounts_get_account; } -void accounts_set_priority_online(const char * const account_name, const gint value) +void +mock_accounts_create_full_jid(void) { - check_expected(account_name); - check_expected(value); + accounts_create_full_jid = _mock_accounts_create_full_jid; } -void accounts_set_priority_chat(const char * const account_name, const gint value) +void +stub_accounts_free_account(void) { - check_expected(account_name); - check_expected(value); + accounts_free_account = _stub_accounts_free_account; } -void accounts_set_priority_away(const char * const account_name, const gint value) +void +mock_accounts_free_account(void) { - check_expected(account_name); - check_expected(value); + accounts_free_account = _mock_accounts_free_account; } -void accounts_set_priority_xa(const char * const account_name, const gint value) +void +mock_accounts_get_list(void) { - check_expected(account_name); - check_expected(value); + accounts_get_list = _mock_accounts_get_list; } -void accounts_set_priority_dnd(const char * const account_name, const gint value) +void +mock_accounts_add(void) { - check_expected(account_name); - check_expected(value); + accounts_add = _mock_accounts_add; } -void accounts_set_priority_all(const char * const account_name, const gint value) {} - -gint accounts_get_priority_for_presence_type(const char * const account_name, - resource_presence_t presence_type) +void +stub_accounts_add(void) { - return (gint)mock(); + accounts_add = _stub_accounts_add; } -void accounts_clear_password(const char * const account_name) {} - -char * accounts_create_full_jid(ProfAccount *account) +void +mock_accounts_enable(void) { - return (char *)mock(); + accounts_enable = _mock_accounts_enable; } +void +mock_accounts_disable(void) +{ + accounts_disable = _mock_accounts_disable; +} + +void +mock_accounts_rename(void) +{ + accounts_rename = _mock_accounts_rename; +} + +void +mock_accounts_account_exists(void) +{ + accounts_account_exists = _mock_accounts_account_exists; +} + +void +mock_accounts_set_jid(void) +{ + accounts_set_jid = _mock_accounts_set_jid; +} + +void +stub_accounts_set_jid(void) +{ + accounts_set_jid = _stub_accounts_set_jid; +} + +void +mock_accounts_set_resource(void) +{ + accounts_set_resource = _mock_accounts_set_resource; +} + +void +stub_accounts_set_resource(void) +{ + accounts_set_resource = _stub_accounts_set_resource; +} + +void +mock_accounts_set_server(void) +{ + accounts_set_server = _mock_accounts_set_server; +} + +void +stub_accounts_set_server(void) +{ + accounts_set_server = _stub_accounts_set_server; +} + +void +mock_accounts_set_password(void) +{ + accounts_set_password = _mock_accounts_set_password; +} + +void +stub_accounts_set_password(void) +{ + accounts_set_password = _stub_accounts_set_password; +} + +void +mock_accounts_set_muc_service(void) +{ + accounts_set_muc_service = _mock_accounts_set_muc_service; +} + +void +stub_accounts_set_muc_service(void) +{ + accounts_set_muc_service = _stub_accounts_set_muc_service; +} + +void +mock_accounts_set_muc_nick(void) +{ + accounts_set_muc_nick = _mock_accounts_set_muc_nick; +} + +void +stub_accounts_set_muc_nick(void) +{ + accounts_set_muc_nick = _stub_accounts_set_muc_nick; +} + +void +mock_accounts_set_priorities(void) +{ + accounts_set_priority_online = _mock_accounts_set_priority_online; + accounts_set_priority_chat = _mock_accounts_set_priority_chat; + accounts_set_priority_away = _mock_accounts_set_priority_away; + accounts_set_priority_xa = _mock_accounts_set_priority_xa; + accounts_set_priority_dnd = _mock_accounts_set_priority_dnd; +} + +void +stub_accounts_set_priorities(void) +{ + accounts_set_priority_online = _stub_accounts_set_priority_online; + accounts_set_priority_chat = _stub_accounts_set_priority_chat; + accounts_set_priority_away = _stub_accounts_set_priority_away; + accounts_set_priority_xa = _stub_accounts_set_priority_xa; + accounts_set_priority_dnd = _stub_accounts_set_priority_dnd; +} + +void +mock_accounts_set_login_presence(void) +{ + accounts_set_login_presence = _mock_accounts_set_login_presence; +} + +void +stub_accounts_set_login_presence(void) +{ + accounts_set_login_presence = _stub_accounts_set_login_presence; +} + +void +mock_accounts_get_last_presence(void) +{ + accounts_get_last_presence = _mock_accounts_get_last_presence; +} + +// mock behaviours + +void +accounts_get_account_expect_and_return(const char * const name, ProfAccount *account) +{ + expect_string(_mock_accounts_get_account, name, name); + will_return(_mock_accounts_get_account, account); +} + +void +accounts_get_account_return(ProfAccount *account) +{ + expect_any(_mock_accounts_get_account, name); + will_return(_mock_accounts_get_account, account); +} + +void +accounts_create_full_jid_return(char *fulljid) +{ + expect_any(_mock_accounts_create_full_jid, account); + if (fulljid != NULL) { + will_return(_mock_accounts_create_full_jid, strdup(fulljid)); + } else { + will_return(_mock_accounts_create_full_jid, NULL); + } +} + +void +accounts_free_account_expect(ProfAccount *account) +{ + expect_memory(_mock_accounts_free_account, account, account, sizeof(ProfAccount)); +} + +void +accounts_get_list_return(gchar **accounts) +{ + will_return(_mock_accounts_get_list, accounts); +} + +void +accounts_add_expect_account_name(char *account_name) +{ + expect_any(_mock_accounts_add, altdomain); + expect_string(_mock_accounts_add, account_name, account_name); +} + +void +accounts_enable_expect(char *name) +{ + expect_string(_mock_accounts_enable, name, name); + will_return(_mock_accounts_enable, TRUE); +} + +void +accounts_enable_return(gboolean result) +{ + expect_any(_mock_accounts_enable, name); + will_return(_mock_accounts_enable, result); +} + +void +accounts_disable_expect(char *name) +{ + expect_string(_mock_accounts_disable, name, name); + will_return(_mock_accounts_disable, TRUE); +} + +void +accounts_disable_return(gboolean result) +{ + expect_any(_mock_accounts_disable, name); + will_return(_mock_accounts_disable, result); +} + +void +accounts_rename_expect(char *account_name, char *new_name) +{ + expect_string(_mock_accounts_rename, account_name, account_name); + expect_string(_mock_accounts_rename, new_name, new_name); + will_return(_mock_accounts_rename, TRUE); +} + +void +accounts_rename_return(gboolean result) +{ + expect_any(_mock_accounts_rename, account_name); + expect_any(_mock_accounts_rename, new_name); + will_return(_mock_accounts_rename, result); +} + +void +accounts_account_exists_expect(char *account_name) +{ + expect_string(_mock_accounts_account_exists, account_name, account_name); + will_return(_mock_accounts_account_exists, TRUE); +} + +void +accounts_account_exists_return(gboolean result) +{ + expect_any(_mock_accounts_account_exists, account_name); + will_return(_mock_accounts_account_exists, result); +} + +void +accounts_set_jid_expect(char *account_name, char *jid) +{ + expect_string(_mock_accounts_set_jid, account_name, account_name); + expect_string(_mock_accounts_set_jid, value, jid); +} + +void +accounts_set_resource_expect(char *account_name, char *resource) +{ + expect_string(_mock_accounts_set_resource, account_name, account_name); + expect_string(_mock_accounts_set_resource, value, resource); +} + +void +accounts_set_server_expect(char *account_name, char *server) +{ + expect_string(_mock_accounts_set_server, account_name, account_name); + expect_string(_mock_accounts_set_server, value, server); +} + +void +accounts_set_password_expect(char *account_name, char *password) +{ + expect_string(_mock_accounts_set_password, account_name, account_name); + expect_string(_mock_accounts_set_password, value, password); +} + +void +accounts_set_muc_service_expect(char *account_name, char *service) +{ + expect_string(_mock_accounts_set_muc_service, account_name, account_name); + expect_string(_mock_accounts_set_muc_service, value, service); +} + +void +accounts_set_muc_nick_expect(char *account_name, char *nick) +{ + expect_string(_mock_accounts_set_muc_nick, account_name, account_name); + expect_string(_mock_accounts_set_muc_nick, value, nick); +} + +void +accounts_set_priority_online_expect(char *account_name, gint priority) +{ + expect_string(_mock_accounts_set_priority_online, account_name, account_name); + expect_value(_mock_accounts_set_priority_online, value, priority); +} + +void +accounts_set_priority_chat_expect(char *account_name, gint priority) +{ + expect_string(_mock_accounts_set_priority_chat, account_name, account_name); + expect_value(_mock_accounts_set_priority_chat, value, priority); +} + +void +accounts_set_priority_away_expect(char *account_name, gint priority) +{ + expect_string(_mock_accounts_set_priority_away, account_name, account_name); + expect_value(_mock_accounts_set_priority_away, value, priority); +} + +void +accounts_set_priority_xa_expect(char *account_name, gint priority) +{ + expect_string(_mock_accounts_set_priority_xa, account_name, account_name); + expect_value(_mock_accounts_set_priority_xa, value, priority); +} + +void +accounts_set_priority_dnd_expect(char *account_name, gint priority) +{ + expect_string(_mock_accounts_set_priority_dnd, account_name, account_name); + expect_value(_mock_accounts_set_priority_dnd, value, priority); +} + +void +accounts_set_login_presence_expect(char *account_name, char *presence) +{ + expect_string(_mock_accounts_set_login_presence, account_name, account_name); + expect_string(_mock_accounts_set_login_presence, value, presence); +} + +void +accounts_get_last_presence_return(resource_presence_t presence) +{ + expect_any(_mock_accounts_get_last_presence, account_name); + will_return(_mock_accounts_get_last_presence, presence); +} diff --git a/tests/config/mock_accounts.h b/tests/config/mock_accounts.h new file mode 100644 index 00000000..b914968a --- /dev/null +++ b/tests/config/mock_accounts.h @@ -0,0 +1,94 @@ +/* + * mock_accounts.h + * + * Copyright (C) 2012, 2013 James Booth + * + * This file is part of Profanity. + * + * Profanity is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Profanity is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY {} without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Profanity. If not, see . + * + */ + +void mock_accounts_get_account(void); +void accounts_get_account_expect_and_return(const char * const name, ProfAccount *account); +void accounts_get_account_return(ProfAccount *account); + +void mock_accounts_create_full_jid(void); +void accounts_create_full_jid_return(char *fulljid); + +void mock_accounts_free_account(void); +void stub_accounts_free_account(void); +void accounts_free_account_expect(ProfAccount *account); + +void mock_accounts_get_list(void); +void accounts_get_list_return(gchar **accounts); + +void mock_accounts_add(void); +void stub_accounts_add(void); +void accounts_add_expect_account_name(char *account_name); + +void mock_accounts_enable(void); +void accounts_enable_expect(char *name); +void accounts_enable_return(gboolean result); + +void mock_accounts_disable(void); +void accounts_disable_expect(char *name); +void accounts_disable_return(gboolean result); + +void mock_accounts_rename(void); +void accounts_rename_expect(char *account_name, char *new_name); +void accounts_rename_return(gboolean result); + +void mock_accounts_account_exists(void); +void accounts_account_exists_expect(char *account_name); +void accounts_account_exists_return(gboolean result); + +void mock_accounts_set_jid(void); +void stub_accounts_set_jid(void); +void accounts_set_jid_expect(char *account_name, char *jid); + +void mock_accounts_set_resource(void); +void stub_accounts_set_resource(void); +void accounts_set_resource_expect(char *account_name, char *resource); + +void mock_accounts_set_server(void); +void stub_accounts_set_server(void); +void accounts_set_server_expect(char *account_name, char *server); + +void mock_accounts_set_password(void); +void stub_accounts_set_password(void); +void accounts_set_password_expect(char *account_name, char *password); + +void mock_accounts_set_muc_service(void); +void stub_accounts_set_muc_service(void); +void accounts_set_muc_service_expect(char *account_name, char *service); + +void mock_accounts_set_muc_nick(void); +void stub_accounts_set_muc_nick(void); +void accounts_set_muc_nick_expect(char *account_name, char *nick); + +void mock_accounts_set_priorities(void); +void stub_accounts_set_priorities(void); +void accounts_set_priority_online_expect(char *account_name, gint priority); +void accounts_set_priority_chat_expect(char *account_name, gint priority); +void accounts_set_priority_away_expect(char *account_name, gint priority); +void accounts_set_priority_xa_expect(char *account_name, gint priority); +void accounts_set_priority_dnd_expect(char *account_name, gint priority); + +void mock_accounts_set_login_presence(void); +void stub_accounts_set_login_presence(void); +void accounts_set_login_presence_expect(char *account_name, char *presence); + +void mock_accounts_get_last_presence(void); +void accounts_get_last_presence_return(resource_presence_t presence); diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 6c3f34ff..4891930c 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -7,18 +7,26 @@ #include #include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + #include "ui/ui.h" +#include "ui/mock_ui.h" + +#include "config/accounts.h" +#include "config/mock_accounts.h" + #include "command/commands.h" void cmd_account_shows_usage_when_not_connected_and_no_args(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -28,20 +36,19 @@ void cmd_account_shows_usage_when_not_connected_and_no_args(void **state) void cmd_account_shows_account_when_connected_and_no_args(void **state) { + mock_cons_show_account(); + mock_accounts_get_account(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); ProfAccount *account = malloc(sizeof(ProfAccount)); gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); + mock_connection_status(JABBER_CONNECTED); + mock_connection_account_name("account_name"); - will_return(jabber_get_account_name, "account_name"); + accounts_get_account_return(account); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); - - expect_memory(cons_show_account, account, account, sizeof(ProfAccount)); - - expect_any(accounts_free_account, account); + expect_cons_show_account(account); gboolean result = cmd_account(args, *help); assert_true(result); @@ -52,6 +59,8 @@ void cmd_account_shows_account_when_connected_and_no_args(void **state) void cmd_account_list_shows_accounts(void **state) { + mock_cons_show_account_list(); + mock_accounts_get_list(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "list", NULL }; @@ -61,9 +70,9 @@ void cmd_account_list_shows_accounts(void **state) accounts[2] = strdup("account3"); accounts[3] = NULL; - will_return(accounts_get_list, accounts); + accounts_get_list_return(accounts); - expect_memory(cons_show_account_list, accounts, accounts, sizeof(accounts)); + expect_cons_show_account_list(accounts); gboolean result = cmd_account(args, *help); assert_true(result); @@ -73,11 +82,12 @@ void cmd_account_list_shows_accounts(void **state) void cmd_account_show_shows_usage_when_no_arg(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "show", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -87,14 +97,15 @@ void cmd_account_show_shows_usage_when_no_arg(void **state) void cmd_account_show_shows_message_when_account_does_not_exist(void **state) { + mock_cons_show(); + mock_accounts_get_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "show", "account_name", NULL }; - expect_any(accounts_get_account, name); - will_return(accounts_get_account, NULL); + accounts_get_account_return(NULL); - expect_string(cons_show, output, "No such account."); - expect_string(cons_show, output, ""); + expect_cons_show("No such account."); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -102,18 +113,18 @@ void cmd_account_show_shows_message_when_account_does_not_exist(void **state) free(help); } -void cmd_account_show_shows_message_when_account_exists(void **state) +void cmd_account_show_shows_account_when_exists(void **state) { + mock_cons_show_account(); + mock_accounts_get_account(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "show", "account_name", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); + accounts_get_account_return(account); - expect_memory(cons_show_account, account, account, sizeof(ProfAccount)); - - expect_any(accounts_free_account, account); + expect_cons_show_account(account); gboolean result = cmd_account(args, *help); assert_true(result); @@ -123,11 +134,12 @@ void cmd_account_show_shows_message_when_account_exists(void **state) void cmd_account_add_shows_usage_when_no_arg(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "add", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -137,12 +149,12 @@ void cmd_account_add_shows_usage_when_no_arg(void **state) void cmd_account_add_adds_account(void **state) { + stub_cons_show(); + mock_accounts_add(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "add", "new_account", NULL }; - expect_string(accounts_add, jid, "new_account"); - - expect_any_count(cons_show, output, 2); + accounts_add_expect_account_name("new_account"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -152,13 +164,13 @@ void cmd_account_add_adds_account(void **state) void cmd_account_add_shows_message(void **state) { + mock_cons_show(); + stub_accounts_add(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "add", "new_account", NULL }; - expect_any(accounts_add, jid); - - expect_string(cons_show, output, "Account created.");; - expect_string(cons_show, output, ""); + expect_cons_show("Account created.");; + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -168,11 +180,12 @@ void cmd_account_add_shows_message(void **state) void cmd_account_enable_shows_usage_when_no_arg(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "enable", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -182,13 +195,12 @@ void cmd_account_enable_shows_usage_when_no_arg(void **state) void cmd_account_enable_enables_account(void **state) { + stub_cons_show(); + mock_accounts_enable(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "enable", "account_name", NULL }; - expect_string(accounts_enable, name, "account_name"); - will_return(accounts_enable, TRUE); - - expect_any_count(cons_show, output, 2); + accounts_enable_expect("account_name"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -198,14 +210,15 @@ void cmd_account_enable_enables_account(void **state) void cmd_account_enable_shows_message_when_enabled(void **state) { + mock_cons_show(); + mock_accounts_enable(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "enable", "account_name", NULL }; - expect_any(accounts_enable, name); - will_return(accounts_enable, TRUE); + accounts_enable_return(TRUE); - expect_string(cons_show, output, "Account enabled."); - expect_string(cons_show, output, ""); + expect_cons_show("Account enabled."); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -215,14 +228,15 @@ void cmd_account_enable_shows_message_when_enabled(void **state) void cmd_account_enable_shows_message_when_account_doesnt_exist(void **state) { + mock_cons_show(); + mock_accounts_enable(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "enable", "account_name", NULL }; - expect_any(accounts_enable, name); - will_return(accounts_enable, FALSE); + accounts_enable_return(FALSE); - expect_string(cons_show, output, "No such account: account_name"); - expect_string(cons_show, output, ""); + expect_cons_show("No such account: account_name"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -232,11 +246,12 @@ void cmd_account_enable_shows_message_when_account_doesnt_exist(void **state) void cmd_account_disable_shows_usage_when_no_arg(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "disable", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -246,13 +261,12 @@ void cmd_account_disable_shows_usage_when_no_arg(void **state) void cmd_account_disable_disables_account(void **state) { + stub_cons_show(); + mock_accounts_disable(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "disable", "account_name", NULL }; - expect_string(accounts_disable, name, "account_name"); - will_return(accounts_disable, TRUE); - - expect_any_count(cons_show, output, 2); + accounts_disable_expect("account_name"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -262,14 +276,15 @@ void cmd_account_disable_disables_account(void **state) void cmd_account_disable_shows_message_when_disabled(void **state) { + mock_cons_show(); + mock_accounts_disable(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "disable", "account_name", NULL }; - expect_any(accounts_disable, name); - will_return(accounts_disable, TRUE); + accounts_disable_return(TRUE); - expect_string(cons_show, output, "Account disabled."); - expect_string(cons_show, output, ""); + expect_cons_show("Account disabled."); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -279,14 +294,15 @@ void cmd_account_disable_shows_message_when_disabled(void **state) void cmd_account_disable_shows_message_when_account_doesnt_exist(void **state) { + mock_cons_show(); + mock_accounts_disable(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "disable", "account_name", NULL }; - expect_any(accounts_disable, name); - will_return(accounts_disable, FALSE); + accounts_disable_return(FALSE); - expect_string(cons_show, output, "No such account: account_name"); - expect_string(cons_show, output, ""); + expect_cons_show("No such account: account_name"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -296,11 +312,12 @@ void cmd_account_disable_shows_message_when_account_doesnt_exist(void **state) void cmd_account_rename_shows_usage_when_no_args(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "rename", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -310,11 +327,12 @@ void cmd_account_rename_shows_usage_when_no_args(void **state) void cmd_account_rename_shows_usage_when_one_arg(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "rename", "original_name", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -324,14 +342,12 @@ void cmd_account_rename_shows_usage_when_one_arg(void **state) void cmd_account_rename_renames_account(void **state) { + stub_cons_show(); + mock_accounts_rename(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "rename", "original_name", "new_name", NULL }; - expect_string(accounts_rename, account_name, "original_name"); - expect_string(accounts_rename, new_name, "new_name"); - will_return(accounts_rename, TRUE); - - expect_any_count(cons_show, output, 2); + accounts_rename_expect("original_name", "new_name"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -341,15 +357,15 @@ void cmd_account_rename_renames_account(void **state) void cmd_account_rename_shows_message_when_renamed(void **state) { + mock_cons_show(); + mock_accounts_rename(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "rename", "original_name", "new_name", NULL }; - expect_any(accounts_rename, account_name); - expect_any(accounts_rename, new_name); - will_return(accounts_rename, TRUE); + accounts_rename_return(TRUE); - expect_string(cons_show, output, "Account renamed."); - expect_string(cons_show, output, ""); + expect_cons_show("Account renamed."); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -359,15 +375,15 @@ void cmd_account_rename_shows_message_when_renamed(void **state) void cmd_account_rename_shows_message_when_not_renamed(void **state) { + mock_cons_show(); + mock_accounts_rename(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "rename", "original_name", "new_name", NULL }; - expect_any(accounts_rename, account_name); - expect_any(accounts_rename, new_name); - will_return(accounts_rename, FALSE); + accounts_rename_return(FALSE); - expect_string(cons_show, output, "Either account original_name doesn't exist, or account new_name already exists."); - expect_string(cons_show, output, ""); + expect_cons_show("Either account original_name doesn't exist, or account new_name already exists."); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -377,11 +393,12 @@ void cmd_account_rename_shows_message_when_not_renamed(void **state) void cmd_account_set_shows_usage_when_no_args(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "set", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -391,11 +408,12 @@ void cmd_account_set_shows_usage_when_no_args(void **state) void cmd_account_set_shows_usage_when_one_arg(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "set", "a_account", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -405,11 +423,12 @@ void cmd_account_set_shows_usage_when_one_arg(void **state) void cmd_account_set_shows_usage_when_two_args(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); help->usage = "some usage"; gchar *args[] = { "set", "a_account", "a_property", NULL }; - expect_string(cons_show, output, "Usage: some usage"); + expect_cons_show("Usage: some usage"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -419,13 +438,12 @@ void cmd_account_set_shows_usage_when_two_args(void **state) void cmd_account_set_checks_account_exists(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "a_property", "a_value", NULL }; - expect_string(accounts_account_exists, account_name, "a_account"); - will_return(accounts_account_exists, FALSE); - - expect_any_count(cons_show, output, 2); + accounts_account_exists_expect("a_account"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -435,14 +453,15 @@ void cmd_account_set_checks_account_exists(void **state) void cmd_account_set_shows_message_when_account_doesnt_exist(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "a_property", "a_value", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, FALSE); + accounts_account_exists_return(FALSE); - expect_string(cons_show, output, "Account a_account doesn't exist"); - expect_string(cons_show, output, ""); + expect_cons_show("Account a_account doesn't exist"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -452,13 +471,14 @@ void cmd_account_set_shows_message_when_account_doesnt_exist(void **state) void cmd_account_set_jid_shows_message_for_malformed_jid(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "jid", "@malformed", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(cons_show, output, "Malformed jid: @malformed"); + expect_cons_show("Malformed jid: @malformed"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -468,22 +488,20 @@ void cmd_account_set_jid_shows_message_for_malformed_jid(void **state) void cmd_account_set_jid_sets_barejid(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_jid(); + stub_accounts_set_resource(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "jid", "a_local@a_domain/a_resource", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_jid, account_name, "a_account"); - expect_string(accounts_set_jid, value, "a_local@a_domain"); + accounts_set_jid_expect("a_account", "a_local@a_domain"); - expect_string(cons_show, output, "Updated jid for account a_account: a_local@a_domain"); + expect_cons_show("Updated jid for account a_account: a_local@a_domain"); - expect_any(accounts_set_resource, account_name); - expect_any(accounts_set_resource, value); - - expect_any(cons_show, output); - expect_string(cons_show, output, ""); + expect_cons_show_calls(2); gboolean result = cmd_account(args, *help); assert_true(result); @@ -493,22 +511,21 @@ void cmd_account_set_jid_sets_barejid(void **state) void cmd_account_set_jid_sets_resource(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_jid(); + mock_accounts_set_resource(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "jid", "a_local@a_domain/a_resource", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_jid, account_name); - expect_any(accounts_set_jid, value); + expect_cons_show_calls(1); - expect_any(cons_show, output); + accounts_set_resource_expect("a_account", "a_resource"); - expect_string(accounts_set_resource, account_name, "a_account"); - expect_string(accounts_set_resource, value, "a_resource"); - - expect_string(cons_show, output, "Updated resource for account a_account: a_resource"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated resource for account a_account: a_resource"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -518,16 +535,15 @@ void cmd_account_set_jid_sets_resource(void **state) void cmd_account_set_server_sets_server(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_server(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "server", "a_server", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_server, account_name, "a_account"); - expect_string(accounts_set_server, value, "a_server"); - - expect_any_count(cons_show, output, 2); + accounts_set_server_expect("a_account", "a_server"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -537,17 +553,16 @@ void cmd_account_set_server_sets_server(void **state) void cmd_account_set_server_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_server(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "server", "a_server", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_server, account_name); - expect_any(accounts_set_server, value); - - expect_string(cons_show, output, "Updated server for account a_account: a_server"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated server for account a_account: a_server"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -557,16 +572,15 @@ void cmd_account_set_server_shows_message(void **state) void cmd_account_set_resource_sets_resource(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_resource(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "resource", "a_resource", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_resource, account_name, "a_account"); - expect_string(accounts_set_resource, value, "a_resource"); - - expect_any_count(cons_show, output, 2); + accounts_set_resource_expect("a_account", "a_resource"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -576,17 +590,16 @@ void cmd_account_set_resource_sets_resource(void **state) void cmd_account_set_resource_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_resource(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "resource", "a_resource", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_resource, account_name); - expect_any(accounts_set_resource, value); - - expect_string(cons_show, output, "Updated resource for account a_account: a_resource"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated resource for account a_account: a_resource"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -596,16 +609,15 @@ void cmd_account_set_resource_shows_message(void **state) void cmd_account_set_password_sets_password(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_password(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "password", "a_password", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_password, account_name, "a_account"); - expect_string(accounts_set_password, value, "a_password"); - - expect_any_count(cons_show, output, 2); + accounts_set_password_expect("a_account", "a_password"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -615,17 +627,16 @@ void cmd_account_set_password_sets_password(void **state) void cmd_account_set_password_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_password(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "password", "a_password", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_password, account_name); - expect_any(accounts_set_password, value); - - expect_string(cons_show, output, "Updated password for account a_account"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated password for account a_account"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -635,16 +646,15 @@ void cmd_account_set_password_shows_message(void **state) void cmd_account_set_muc_sets_muc(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_muc_service(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "muc", "a_muc", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_muc_service, account_name, "a_account"); - expect_string(accounts_set_muc_service, value, "a_muc"); - - expect_any_count(cons_show, output, 2); + accounts_set_muc_service_expect("a_account", "a_muc"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -654,17 +664,16 @@ void cmd_account_set_muc_sets_muc(void **state) void cmd_account_set_muc_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_muc_service(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "muc", "a_muc", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_muc_service, account_name); - expect_any(accounts_set_muc_service, value); - - expect_string(cons_show, output, "Updated muc service for account a_account: a_muc"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated muc service for account a_account: a_muc"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -674,16 +683,15 @@ void cmd_account_set_muc_shows_message(void **state) void cmd_account_set_nick_sets_nick(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_muc_nick(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "nick", "a_nick", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_muc_nick, account_name, "a_account"); - expect_string(accounts_set_muc_nick, value, "a_nick"); - - expect_any_count(cons_show, output, 2); + accounts_set_muc_nick_expect("a_account", "a_nick"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -693,17 +701,16 @@ void cmd_account_set_nick_sets_nick(void **state) void cmd_account_set_nick_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_muc_nick(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "nick", "a_nick", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_muc_nick, account_name); - expect_any(accounts_set_muc_nick, value); - - expect_string(cons_show, output, "Updated muc nick for account a_account: a_nick"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated muc nick for account a_account: a_nick"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -713,14 +720,16 @@ void cmd_account_set_nick_shows_message(void **state) void cmd_account_set_status_shows_message_when_invalid_status(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_login_presence(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "bad_status", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(cons_show, output, "Invalid status: bad_status"); - expect_string(cons_show, output, ""); + expect_cons_show("Invalid status: bad_status"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -730,16 +739,15 @@ void cmd_account_set_status_shows_message_when_invalid_status(void **state) void cmd_account_set_status_sets_status_when_valid(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_login_presence(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "away", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_login_presence, account_name, "a_account"); - expect_string(accounts_set_login_presence, value, "away"); - - expect_any_count(cons_show, output, 2); + accounts_set_login_presence_expect("a_account", "away"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -749,16 +757,15 @@ void cmd_account_set_status_sets_status_when_valid(void **state) void cmd_account_set_status_sets_status_when_last(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_login_presence(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "last", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_login_presence, account_name, "a_account"); - expect_string(accounts_set_login_presence, value, "last"); - - expect_any_count(cons_show, output, 2); + accounts_set_login_presence_expect("a_account", "last"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -768,17 +775,16 @@ void cmd_account_set_status_sets_status_when_last(void **state) void cmd_account_set_status_shows_message_when_set_valid(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_login_presence(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "away", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_login_presence, account_name); - expect_any(accounts_set_login_presence, value); - - expect_string(cons_show, output, "Updated login status for account a_account: away"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated login status for account a_account: away"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -788,17 +794,16 @@ void cmd_account_set_status_shows_message_when_set_valid(void **state) void cmd_account_set_status_shows_message_when_set_last(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_login_presence(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "last", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_any(accounts_set_login_presence, account_name); - expect_any(accounts_set_login_presence, value); - - expect_string(cons_show, output, "Updated login status for account a_account: last"); - expect_string(cons_show, output, ""); + expect_cons_show("Updated login status for account a_account: last"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -808,14 +813,15 @@ void cmd_account_set_status_shows_message_when_set_last(void **state) void cmd_account_set_invalid_presence_string_priority_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "blah", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(cons_show, output, "Invalid property: blah"); - expect_string(cons_show, output, ""); + expect_cons_show("Invalid property: blah"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -825,14 +831,15 @@ void cmd_account_set_invalid_presence_string_priority_shows_message(void **state void cmd_account_set_last_priority_shows_message(void **state) { + mock_cons_show(); + mock_accounts_account_exists(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "last", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(cons_show, output, "Invalid property: last"); - expect_string(cons_show, output, ""); + expect_cons_show("Invalid property: last"); + expect_cons_show(""); gboolean result = cmd_account(args, *help); assert_true(result); @@ -842,18 +849,17 @@ void cmd_account_set_last_priority_shows_message(void **state) void cmd_account_set_online_priority_sets_preference(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_priorities(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "online", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_priority_online, account_name, "a_account"); - expect_value(accounts_set_priority_online, value, 10); + accounts_set_priority_online_expect("a_account", 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); - - expect_any_count(cons_show, output, 2); + mock_connection_status(JABBER_DISCONNECTED); gboolean result = cmd_account(args, *help); assert_true(result); @@ -863,18 +869,17 @@ void cmd_account_set_online_priority_sets_preference(void **state) void cmd_account_set_chat_priority_sets_preference(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_priorities(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "chat", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_priority_chat, account_name, "a_account"); - expect_value(accounts_set_priority_chat, value, 10); + accounts_set_priority_chat_expect("a_account", 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); - - expect_any_count(cons_show, output, 2); + mock_connection_status(JABBER_DISCONNECTED); gboolean result = cmd_account(args, *help); assert_true(result); @@ -884,18 +889,17 @@ void cmd_account_set_chat_priority_sets_preference(void **state) void cmd_account_set_away_priority_sets_preference(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_priorities(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "away", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_priority_away, account_name, "a_account"); - expect_value(accounts_set_priority_away, value, 10); + accounts_set_priority_away_expect("a_account", 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); - - expect_any_count(cons_show, output, 2); + mock_connection_status(JABBER_DISCONNECTED); gboolean result = cmd_account(args, *help); assert_true(result); @@ -905,18 +909,17 @@ void cmd_account_set_away_priority_sets_preference(void **state) void cmd_account_set_xa_priority_sets_preference(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_priorities(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "xa", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_priority_xa, account_name, "a_account"); - expect_value(accounts_set_priority_xa, value, 10); + accounts_set_priority_xa_expect("a_account", 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); - - expect_any_count(cons_show, output, 2); + mock_connection_status(JABBER_DISCONNECTED); gboolean result = cmd_account(args, *help); assert_true(result); @@ -926,18 +929,17 @@ void cmd_account_set_xa_priority_sets_preference(void **state) void cmd_account_set_dnd_priority_sets_preference(void **state) { + stub_cons_show(); + mock_accounts_account_exists(); + mock_accounts_set_priorities(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "dnd", "10", NULL }; - expect_any(accounts_account_exists, account_name); - will_return(accounts_account_exists, TRUE); + accounts_account_exists_return(TRUE); - expect_string(accounts_set_priority_dnd, account_name, "a_account"); - expect_value(accounts_set_priority_dnd, value, 10); + accounts_set_priority_dnd_expect("a_account", 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); - - expect_any_count(cons_show, output, 2); + mock_connection_status(JABBER_DISCONNECTED); gboolean result = cmd_account(args, *help); assert_true(result); @@ -945,8 +947,195 @@ void cmd_account_set_dnd_priority_sets_preference(void **state) free(help); } -// test message shown when set -// test invalid priority low -// test invalid priority high -// test presence updated when connected as account and current presence equals setting +void cmd_account_set_online_priority_shows_message(void **state) +{ + mock_cons_show(); + mock_accounts_account_exists(); + stub_accounts_set_priorities(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "set", "a_account", "online", "10", NULL }; + accounts_account_exists_return(TRUE); + + mock_connection_status(JABBER_DISCONNECTED); + + expect_cons_show("Updated online priority for account a_account: 10"); + expect_cons_show(""); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_set_priority_too_low_shows_message(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "set", "a_account", "online", "-150", NULL }; + + accounts_account_exists_return(TRUE); + + expect_cons_show("Value -150 out of range. Must be in -128..127."); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_set_priority_too_high_shows_message(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "set", "a_account", "online", "150", NULL }; + + accounts_account_exists_return(TRUE); + + expect_cons_show("Value 150 out of range. Must be in -128..127."); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_set_priority_when_not_number_shows_message(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "set", "a_account", "online", "abc", NULL }; + + accounts_account_exists_return(TRUE); + + expect_cons_show("Could not convert \"abc\" to a number."); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_set_priority_when_empty_shows_message(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "set", "a_account", "online", "", NULL }; + + accounts_account_exists_return(TRUE); + + expect_cons_show("Could not convert \"\" to a number."); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_set_priority_updates_presence_when_account_connected_with_presence(void **state) +{ + stub_cons_show(); + stub_accounts_set_priorities(); + mock_accounts_get_last_presence(); + mock_presence_update(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "set", "a_account", "online", "10", NULL }; + + accounts_account_exists_return(TRUE); + + mock_connection_status(JABBER_CONNECTED); + mock_connection_account_name("a_account"); + + accounts_get_last_presence_return(RESOURCE_ONLINE); + + mock_connection_presence_message("Free to chat"); + + presence_update_expect(RESOURCE_ONLINE, "Free to chat", 0); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_clear_shows_usage_when_no_args(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + help->usage = "some usage"; + gchar *args[] = { "clear", NULL }; + + expect_cons_show("Usage: some usage"); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_clear_shows_usage_when_one_arg(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + help->usage = "some usage"; + gchar *args[] = { "clear", "a_account", NULL }; + + expect_cons_show("Usage: some usage"); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_clear_checks_account_exists(void **state) +{ + stub_cons_show(); + mock_accounts_account_exists(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "clear", "a_account", "a_property", NULL }; + + accounts_account_exists_expect("a_account"); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_clear_shows_message_when_account_doesnt_exist(void **state) +{ + mock_cons_show(); + mock_accounts_account_exists(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "clear", "a_account", "a_property", NULL }; + + accounts_account_exists_return(FALSE); + + expect_cons_show("Account a_account doesn't exist"); + expect_cons_show(""); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); +} + +void cmd_account_clear_shows_message_when_invalid_property(void **state) +{ + mock_cons_show(); + mock_accounts_account_exists(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "clear", "a_account", "badproperty", NULL }; + + accounts_account_exists_return(TRUE); + + expect_cons_show("Invalid property: badproperty"); + expect_cons_show(""); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); + +} diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 7333ad05..dcf1b8ee 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -3,7 +3,7 @@ void cmd_account_shows_account_when_connected_and_no_args(void **state); void cmd_account_list_shows_accounts(void **state); void cmd_account_show_shows_usage_when_no_arg(void **state); void cmd_account_show_shows_message_when_account_does_not_exist(void **state); -void cmd_account_show_shows_message_when_account_exists(void **state); +void cmd_account_show_shows_account_when_exists(void **state); void cmd_account_add_shows_usage_when_no_arg(void **state); void cmd_account_add_adds_account(void **state); void cmd_account_add_shows_message(void **state); @@ -50,3 +50,14 @@ void cmd_account_set_chat_priority_sets_preference(void **state); void cmd_account_set_away_priority_sets_preference(void **state); void cmd_account_set_xa_priority_sets_preference(void **state); void cmd_account_set_dnd_priority_sets_preference(void **state); +void cmd_account_set_online_priority_shows_message(void **state); +void cmd_account_set_priority_too_low_shows_message(void **state); +void cmd_account_set_priority_too_high_shows_message(void **state); +void cmd_account_set_priority_when_not_number_shows_message(void **state); +void cmd_account_set_priority_when_empty_shows_message(void **state); +void cmd_account_set_priority_updates_presence_when_account_connected_with_presence(void **state); +void cmd_account_clear_shows_usage_when_no_args(void **state); +void cmd_account_clear_shows_usage_when_one_arg(void **state); +void cmd_account_clear_checks_account_exists(void **state); +void cmd_account_clear_shows_message_when_account_doesnt_exist(void **state); +void cmd_account_clear_shows_message_when_invalid_property(void **state); diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index 3625a521..d47666ef 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -7,15 +7,24 @@ #include #include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + #include "ui/ui.h" +#include "ui/mock_ui.h" + #include "command/commands.h" +#include "config/accounts.h" +#include "config/mock_accounts.h" + static void test_with_connection_status(jabber_conn_status_t status) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); - will_return(jabber_get_connection_status, status); - expect_string(cons_show, output, "You are either connected already, or a login is in process."); + mock_connection_status(status); + + expect_cons_show("You are either connected already, or a login is in process."); gboolean result = cmd_connect(NULL, *help); assert_true(result); @@ -45,22 +54,22 @@ void cmd_connect_shows_message_when_undefined(void **state) void cmd_connect_when_no_account(void **state) { + mock_cons_show(); + mock_accounts_get_account(); + mock_ui_ask_password(); + mock_jabber_connect_with_details(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_string(accounts_get_account, name, "user@server.org"); - will_return(accounts_get_account, NULL); + accounts_get_account_expect_and_return("user@server.org", NULL); - will_return(ui_ask_password, strdup("password")); + mock_ui_ask_password_returns("password"); - expect_string(cons_show, output, "Connecting as user@server.org"); + expect_cons_show("Connecting as user@server.org"); - expect_string(jabber_connect_with_details, jid, "user@server.org"); - expect_string(jabber_connect_with_details, passwd, "password"); - expect_any(jabber_connect_with_details, altdomain); - will_return(jabber_connect_with_details, JABBER_CONNECTING); + jabber_connect_with_username_password_expect_and_return("user@server.org", "password", JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -70,22 +79,18 @@ void cmd_connect_when_no_account(void **state) void cmd_connect_with_altdomain_when_provided(void **state) { + stub_ui_ask_password(); + stub_cons_show(); + mock_accounts_get_account(); + mock_jabber_connect_with_details(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", "altdomain" }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, NULL); + accounts_get_account_return(NULL); - will_return(ui_ask_password, strdup("password")); - - expect_any(cons_show, output); - - expect_any(jabber_connect_with_details, jid); - expect_any(jabber_connect_with_details, passwd); - expect_string(jabber_connect_with_details, altdomain, "altdomain"); - will_return(jabber_connect_with_details, JABBER_CONNECTING); + jabber_connect_with_altdomain_expect_and_return("altdomain", JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -95,24 +100,21 @@ void cmd_connect_with_altdomain_when_provided(void **state) void cmd_connect_fail_message(void **state) { + stub_cons_show(); + mock_cons_show_error(); + stub_ui_ask_password(); + mock_accounts_get_account(); + mock_jabber_connect_with_details(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, NULL); + accounts_get_account_return(NULL); - will_return(ui_ask_password, strdup("password")); + jabber_connect_with_details_return(JABBER_DISCONNECTED); - expect_any(cons_show, output); - - expect_any(jabber_connect_with_details, jid); - expect_any(jabber_connect_with_details, passwd); - expect_any(jabber_connect_with_details, altdomain); - will_return(jabber_connect_with_details, JABBER_DISCONNECTED); - - expect_string(cons_show_error, output, "Connection attempt for user@server.org failed."); + expect_cons_show_error("Connection attempt for user@server.org failed."); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -122,22 +124,18 @@ void cmd_connect_fail_message(void **state) void cmd_connect_lowercases_argument(void **state) { + stub_cons_show(); + stub_ui_ask_password(); + mock_accounts_get_account(); + mock_jabber_connect_with_details(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "USER@server.ORG", NULL }; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_string(accounts_get_account, name, "user@server.org"); - will_return(accounts_get_account, NULL); + accounts_get_account_expect_and_return("user@server.org", NULL); - will_return(ui_ask_password, strdup("password")); - - expect_any(cons_show, output); - - expect_any(jabber_connect_with_details, jid); - expect_any(jabber_connect_with_details, passwd); - expect_any(jabber_connect_with_details, altdomain); - will_return(jabber_connect_with_details, JABBER_CONNECTING); + jabber_connect_with_details_return(JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -147,26 +145,24 @@ void cmd_connect_lowercases_argument(void **state) void cmd_connect_asks_password_when_not_in_account(void **state) { + stub_cons_show(); + stub_ui_ask_password(); + mock_accounts_get_account(); + mock_accounts_create_full_jid(); + mock_jabber_connect_with_account(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); account->password = NULL; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); + accounts_get_account_return(account); - will_return(accounts_create_full_jid, strdup("user@jabber.org")); + accounts_create_full_jid_return("user@jabber.org"); - will_return(ui_ask_password, strdup("password")); - - expect_any(cons_show, output); - - expect_any(jabber_connect_with_account, account); - will_return(jabber_connect_with_account, JABBER_CONNECTING); - - expect_any(accounts_free_account, account); + jabber_connect_with_account_return(JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -177,25 +173,26 @@ void cmd_connect_asks_password_when_not_in_account(void **state) void cmd_connect_shows_message_when_connecting_with_account(void **state) { + mock_cons_show(); + mock_accounts_get_account(); + mock_accounts_create_full_jid(); + mock_jabber_connect_with_account(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); account->password = "password"; account->name = "jabber_org"; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); + accounts_get_account_return(account); - will_return(accounts_create_full_jid, strdup("user@jabber.org/laptop")); + accounts_create_full_jid_return("user@jabber.org/laptop"); - expect_string(cons_show, output, "Connecting with account jabber_org as user@jabber.org/laptop"); + expect_cons_show("Connecting with account jabber_org as user@jabber.org/laptop"); - expect_any(jabber_connect_with_account, account); - will_return(jabber_connect_with_account, JABBER_CONNECTING); - - expect_any(accounts_free_account, account); + jabber_connect_with_account_return(JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -206,25 +203,24 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) void cmd_connect_connects_with_account(void **state) { + stub_cons_show(); + mock_accounts_get_account(); + mock_accounts_create_full_jid(); + mock_jabber_connect_with_account(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); account->password = "password"; account->name = "jabber_org"; - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); + accounts_get_account_return(account); - will_return(accounts_create_full_jid, strdup("user@jabber.org/laptop")); + accounts_create_full_jid_return("user@jabber.org/laptop"); - expect_any(cons_show, output); - - expect_memory(jabber_connect_with_account, account, account, sizeof(ProfAccount)); - will_return(jabber_connect_with_account, JABBER_CONNECTING); - - expect_any(accounts_free_account, account); + jabber_connect_with_account_expect_and_return(account, JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -235,23 +231,24 @@ void cmd_connect_connects_with_account(void **state) void cmd_connect_frees_account_after_connecting(void **state) { + stub_cons_show(); + mock_accounts_get_account(); + mock_accounts_create_full_jid(); + mock_jabber_connect_with_account(); + mock_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); + accounts_get_account_return(account); - will_return(accounts_create_full_jid, strdup("user@jabber.org/laptop")); + accounts_create_full_jid_return("user@jabber.org/laptop"); - expect_any(cons_show, output); + jabber_connect_with_account_return(JABBER_CONNECTING); - expect_any(jabber_connect_with_account, account); - will_return(jabber_connect_with_account, JABBER_CONNECTING); - - expect_memory(accounts_free_account, account, account, sizeof(ProfAccount)); + accounts_free_account_expect(account); gboolean result = cmd_connect(args, *help); assert_true(result); diff --git a/tests/test_cmd_rooms.c b/tests/test_cmd_rooms.c index e39d9088..bbd05471 100644 --- a/tests/test_cmd_rooms.c +++ b/tests/test_cmd_rooms.c @@ -6,15 +6,23 @@ #include #include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + #include "ui/ui.h" +#include "ui/mock_ui.h" + +#include "config/accounts.h" +#include "config/mock_accounts.h" + #include "command/commands.h" static void test_with_connection_status(jabber_conn_status_t status) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); - will_return(jabber_get_connection_status, status); - expect_string(cons_show, output, "You are not currently connected."); + mock_connection_status(status); + expect_cons_show("You are not currently connected."); gboolean result = cmd_rooms(NULL, *help); assert_true(result); @@ -49,16 +57,18 @@ void cmd_rooms_shows_message_when_undefined(void **state) void cmd_rooms_uses_account_default_when_no_arg(void **state) { + mock_accounts_get_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); ProfAccount *account = malloc(sizeof(ProfAccount)); account->muc_service = "default_conf_server"; gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); - will_return(jabber_get_account_name, "account_name"); - expect_string(accounts_get_account, name, "account_name"); - will_return(accounts_get_account, account); - expect_string(iq_room_list_request, conferencejid, "default_conf_server"); + mock_connection_status(JABBER_CONNECTED); + mock_connection_account_name("account_name"); + + accounts_get_account_return(account); + + expect_room_list_request("default_conf_server"); gboolean result = cmd_rooms(args, *help); @@ -73,8 +83,9 @@ void cmd_rooms_arg_used_when_passed(void **state) CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "conf_server_arg" }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); - expect_string(iq_room_list_request, conferencejid, "conf_server_arg"); + mock_connection_status(JABBER_CONNECTED); + + expect_room_list_request("conf_server_arg"); gboolean result = cmd_rooms(args, *help); diff --git a/tests/test_cmd_sub.c b/tests/test_cmd_sub.c new file mode 100644 index 00000000..d2447a91 --- /dev/null +++ b/tests/test_cmd_sub.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + +#include "ui/ui.h" +#include "ui/mock_ui.h" + +#include "command/commands.h" + +void cmd_sub_shows_message_when_not_connected(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { NULL }; + + mock_connection_status(JABBER_DISCONNECTED); + + expect_cons_show("You are currently not connected."); + + gboolean result = cmd_sub(args, *help); + assert_true(result); + + free(help); +} + +void cmd_sub_shows_usage_when_no_arg(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + help->usage = "Some usage"; + gchar *args[] = { NULL }; + + mock_connection_status(JABBER_CONNECTED); + + expect_cons_show("Usage: Some usage"); + + gboolean result = cmd_sub(args, *help); + assert_true(result); + + free(help); +} diff --git a/tests/test_cmd_sub.h b/tests/test_cmd_sub.h new file mode 100644 index 00000000..6e8addd3 --- /dev/null +++ b/tests/test_cmd_sub.h @@ -0,0 +1,2 @@ +void cmd_sub_shows_message_when_not_connected(void **state); +void cmd_sub_shows_usage_when_no_arg(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index bb3fdbbc..c0e98b23 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -8,6 +8,7 @@ #include "test_cmd_connect.h" #include "test_cmd_account.h" #include "test_cmd_rooms.h" +#include "test_cmd_sub.h" #include "test_history.h" #include "test_jid.h" #include "test_parser.h" @@ -194,7 +195,7 @@ int main(int argc, char* argv[]) { unit_test(cmd_account_list_shows_accounts), unit_test(cmd_account_show_shows_usage_when_no_arg), unit_test(cmd_account_show_shows_message_when_account_does_not_exist), - unit_test(cmd_account_show_shows_message_when_account_exists), + unit_test(cmd_account_show_shows_account_when_exists), unit_test(cmd_account_add_shows_usage_when_no_arg), unit_test(cmd_account_add_adds_account), unit_test(cmd_account_add_shows_message), @@ -241,6 +242,21 @@ int main(int argc, char* argv[]) { unit_test(cmd_account_set_away_priority_sets_preference), unit_test(cmd_account_set_xa_priority_sets_preference), unit_test(cmd_account_set_dnd_priority_sets_preference), + unit_test(cmd_account_set_online_priority_shows_message), + unit_test(cmd_account_set_priority_too_low_shows_message), + unit_test(cmd_account_set_priority_too_high_shows_message), + unit_test(cmd_account_set_priority_when_not_number_shows_message), + unit_test(cmd_account_set_priority_when_empty_shows_message), + unit_test(cmd_account_set_priority_updates_presence_when_account_connected_with_presence), + unit_test(cmd_account_clear_shows_usage_when_no_args), + unit_test(cmd_account_clear_shows_usage_when_one_arg), + unit_test(cmd_account_clear_checks_account_exists), + unit_test(cmd_account_clear_shows_message_when_account_doesnt_exist), + unit_test(cmd_account_clear_shows_message_when_invalid_property), + + unit_test(cmd_sub_shows_message_when_not_connected), + unit_test(cmd_sub_shows_usage_when_no_arg), + }; return run_tests(tests); } diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c index 6e3e190c..83119910 100644 --- a/tests/ui/mock_ui.c +++ b/tests/ui/mock_ui.c @@ -1,5 +1,5 @@ /* - * mock_ui.h + * mock_ui.c * * Copyright (C) 2012, 2013 James Booth * @@ -23,180 +23,14 @@ #include #include #include +#include #include "ui/ui.h" char output[256]; -// ui startup and control -void ui_init(void) {} -void ui_load_colours(void) {} -void ui_refresh(void) {} -void ui_close(void) {} -void ui_resize(const int ch, const char * const input, - const int size) {} - -GSList* ui_get_recipients(void) -{ - return (GSList *)mock(); -} - -void ui_handle_special_keys(const wint_t * const ch, const char * const inp, - const int size) {} -void ui_switch_win(const int i) {} -void ui_next_win(void) {} -void ui_previous_win(void) {} - -unsigned long ui_get_idle_time(void) -{ - return (unsigned long)mock(); -} - -void ui_reset_idle_time(void) {} -void ui_new_chat_win(const char * const to) {} -void ui_print_error_from_recipient(const char * const from, const char *err_msg) {} -void ui_print_system_msg_from_recipient(const char * const from, const char *message) {} -void ui_handle_error_message(const char * const from, const char * const err_msg) {} - -gint ui_unread(void) -{ - return (gint)mock(); -} - -void ui_close_connected_win(int index) {} - -int ui_close_all_wins(void) -{ - return (int)mock(); -} - -int ui_close_read_wins(void) -{ - return (int)mock(); -} - -// current window actions -void ui_close_current(void) {} -void ui_clear_current(void) {} - -win_type_t ui_current_win_type(void) -{ - return (win_type_t)mock(); -} - -int ui_current_win_index(void) -{ - return (int)mock(); -} - -char* ui_current_recipient(void) -{ - return (char *)mock(); -} - -void ui_current_print_line(const char * const msg, ...) {} -void ui_current_error_line(const char * const msg) {} -void ui_current_page_off(void) {} - -win_type_t ui_win_type(int index) -{ - return (win_type_t)mock(); -} - -char * ui_recipient(int index) -{ - return (char *)mock(); -} - -void ui_close_win(int index) {} - -gboolean ui_win_exists(int index) -{ - return (gboolean)mock(); -} - -int ui_win_unread(int index) -{ - return (int)mock(); -} - -// ui events -void ui_contact_typing(const char * const from) {} -void ui_incoming_msg(const char * const from, const char * const message, - GTimeVal *tv_stamp, gboolean priv) {} -void ui_contact_online(const char * const barejid, const char * const resource, - const char * const show, const char * const status, GDateTime *last_activity) {} -void ui_contact_offline(const char * const from, const char * const show, - const char * const status) {} -void ui_disconnected(void) {} -void ui_recipient_gone(const char * const barejid) {} -void ui_outgoing_msg(const char * const from, const char * const to, - const char * const message) {} -void ui_room_join(Jid *jid) {} -void ui_room_roster(const char * const room, GList *roster, const char * const presence) {} -void ui_room_history(const char * const room_jid, const char * const nick, - GTimeVal tv_stamp, const char * const message) {} -void ui_room_message(const char * const room_jid, const char * const nick, - const char * const message) {} -void ui_room_subject(const char * const room_jid, - const char * const subject) {} -void ui_room_broadcast(const char * const room_jid, - const char * const message) {} -void ui_room_member_offline(const char * const room, const char * const nick) {} -void ui_room_member_online(const char * const room, - const char * const nick, const char * const show, const char * const status) {} -void ui_room_member_nick_change(const char * const room, - const char * const old_nick, const char * const nick) {} -void ui_room_nick_change(const char * const room, const char * const nick) {} -void ui_room_member_presence(const char * const room, - const char * const nick, const char * const show, const char * const status) {} -void ui_roster_add(const char * const barejid, const char * const name) {} -void ui_roster_remove(const char * const barejid) {} -void ui_contact_already_in_group(const char * const contact, const char * const group) {} -void ui_contact_not_in_group(const char * const contact, const char * const group) {} -void ui_group_added(const char * const contact, const char * const group) {} -void ui_group_removed(const char * const contact, const char * const group) {} - -// contact status functions -void ui_status_room(const char * const contact) {} -void ui_status(void) {} -void ui_status_private(void) {} - -void ui_create_duck_win(void) {} -void ui_open_duck_win(void) {} -void ui_duck(const char * const query) {} -void ui_duck_result(const char * const result) {} - -gboolean ui_duck_exists(void) -{ - return (gboolean)mock(); -} - -void ui_tidy_wins(void) {} -void ui_prune_wins(void) {} - -char * ui_ask_password(void) -{ - return (char *)mock(); -} - -// create windows -void create_title_bar(void) {} -void create_status_bar(void) {} -void create_input_window(void) {} - -// title bar actions -void title_bar_refresh(void) {} -void title_bar_resize(void) {} -void title_bar_show(const char * const title) {} -void title_bar_title(void) {} -void title_bar_set_status(contact_presence_t status) {} -void title_bar_set_recipient(const char * const from) {} -void title_bar_set_typing(gboolean is_typing) {} -void title_bar_draw(void) {} - -// console window actions -void cons_show(const char * const msg, ...) +static +void _mock_cons_show(const char * const msg, ...) { va_list args; va_start(args, msg); @@ -205,128 +39,121 @@ void cons_show(const char * const msg, ...) va_end(args); } -void cons_about(void) {} -void cons_help(void) {} -void cons_basic_help(void) {} -void cons_settings_help(void) {} -void cons_presence_help(void) {} -void cons_navigation_help(void) {} -void cons_prefs(void) {} -void cons_show_ui_prefs(void) {} -void cons_show_desktop_prefs(void) {} -void cons_show_chat_prefs(void) {} -void cons_show_log_prefs(void) {} -void cons_show_presence_prefs(void) {} -void cons_show_connection_prefs(void) {} - -void cons_show_account(ProfAccount *account) +static +void _stub_cons_show(const char * const msg, ...) { - check_expected(account); } -void cons_debug(const char * const msg, ...) {} -void cons_show_time(void) {} -void cons_show_word(const char * const word) {} - -void cons_show_error(const char * const cmd, ...) +static +void _mock_cons_show_error(const char * const msg, ...) { va_list args; - va_start(args, cmd); - vsnprintf(output, sizeof(output), cmd, args); + va_start(args, msg); + vsnprintf(output, sizeof(output), msg, args); check_expected(output); va_end(args); } -void cons_highlight_show(const char * const cmd) {} -void cons_show_contacts(GSList * list) {} -void cons_show_roster(GSList * list) {} -void cons_show_roster_group(const char * const group, GSList * list) {} -void cons_show_wins(void) {} -void cons_show_status(const char * const barejid) {} -void cons_show_info(PContact pcontact) {} -void cons_show_caps(const char * const contact, Resource *resource) {} -void cons_show_themes(GSList *themes) {} -void cons_show_login_success(ProfAccount *account) {} -void cons_show_software_version(const char * const jid, - const char * const presence, const char * const name, - const char * const version, const char * const os) {} +static +void _mock_cons_show_account(ProfAccount *account) +{ + check_expected(account); +} -void cons_show_account_list(gchar **accounts) +static +void _mock_cons_show_account_list(gchar **accounts) { check_expected(accounts); } -void cons_show_room_list(GSList *room, const char * const conference_node) {} -void cons_show_bookmarks(const GList *list) {} -void cons_show_disco_items(GSList *items, const char * const jid) {} -void cons_show_disco_info(const char *from, GSList *identities, GSList *features) {} -void cons_show_room_invite(const char * const invitor, const char * const room, - const char * const reason) {} -void cons_check_version(gboolean not_available_msg) {} -void cons_show_typing(const char * const barejid) {} -void cons_show_incoming_message(const char * const short_from, const int win_index) {} -void cons_show_room_invites(GSList *invites) {} -void cons_show_received_subs(void) {} -void cons_show_sent_subs(void) {} -void cons_alert(void) {} -void cons_theme_setting(void) {} -void cons_beep_setting(void) {} -void cons_flash_setting(void) {} -void cons_splash_setting(void) {} -void cons_vercheck_setting(void) {} -void cons_mouse_setting(void) {} -void cons_statuses_setting(void) {} -void cons_titlebar_setting(void) {} -void cons_notify_setting(void) {} -void cons_states_setting(void) {} -void cons_outtype_setting(void) {} -void cons_intype_setting(void) {} -void cons_gone_setting(void) {} -void cons_history_setting(void) {} -void cons_log_setting(void) {} -void cons_chlog_setting(void) {} -void cons_grlog_setting(void) {} -void cons_autoaway_setting(void) {} -void cons_reconnect_setting(void) {} -void cons_autoping_setting(void) {} -void cons_priority_setting(void) {} -void cons_autoconnect_setting(void) {} - -// status bar actions -void status_bar_refresh(void) {} -void status_bar_resize(void) {} -void status_bar_clear(void) {} -void status_bar_clear_message(void) {} -void status_bar_get_password(void) {} -void status_bar_print_message(const char * const msg) {} -void status_bar_inactive(const int win) {} -void status_bar_active(const int win) {} -void status_bar_new(const int win) {} -void status_bar_update_time(void) {} -void status_bar_set_all_inactive(void) {} -void status_bar_current(int i) {} - -// input window actions -wint_t inp_get_char(char *input, int *size) +static +char * _mock_ui_ask_password(void) { - return (wint_t)mock(); + return (char *)mock(); } -void inp_win_reset(void) {} -void inp_win_resize(const char * input, const int size) {} -void inp_put_back(void) {} -void inp_non_block(void) {} -void inp_block(void) {} -void inp_get_password(char *passwd) {} -void inp_replace_input(char *input, const char * const new_input, int *size) {} -void notifier_init(void) {} -void notifier_uninit(void) {} +static +char * _stub_ui_ask_password(void) +{ + return NULL; +} -void notify_typing(const char * const handle) {} -void notify_message(const char * const handle, int win) {} -void notify_room_message(const char * const handle, const char * const room, - int win) {} -void notify_remind(void) {} -void notify_invite(const char * const from, const char * const room, - const char * const reason) {} -void notify_subscription(const char * const from) {} +void +mock_cons_show(void) +{ + cons_show = _mock_cons_show; + +} + +void +mock_cons_show_error(void) +{ + cons_show_error = _mock_cons_show_error; +} + +void +mock_cons_show_account(void) +{ + cons_show_account = _mock_cons_show_account; +} + +void +mock_cons_show_account_list(void) +{ + cons_show_account_list = _mock_cons_show_account_list; +} + + +void +mock_ui_ask_password(void) +{ + ui_ask_password = _mock_ui_ask_password; +} + +void +stub_ui_ask_password(void) +{ + ui_ask_password = _stub_ui_ask_password; +} + +void +stub_cons_show(void) +{ + cons_show = _stub_cons_show; +} + +void +expect_cons_show(char *output) +{ + expect_string(_mock_cons_show, output, output); +} + +void +expect_cons_show_calls(int n) +{ + expect_any_count(_mock_cons_show, output, n); +} + +void +expect_cons_show_error(char *output) +{ + expect_string(_mock_cons_show_error, output, output); +} + +void +expect_cons_show_account(ProfAccount *account) +{ + expect_memory(_mock_cons_show_account, account, account, sizeof(ProfAccount)); +} + +void +expect_cons_show_account_list(gchar **accounts) +{ + expect_memory(_mock_cons_show_account_list, accounts, accounts, sizeof(accounts)); +} + +void +mock_ui_ask_password_returns(char *password) +{ + will_return(_mock_ui_ask_password, strdup(password)); +} diff --git a/tests/ui/mock_ui.h b/tests/ui/mock_ui.h new file mode 100644 index 00000000..2833be29 --- /dev/null +++ b/tests/ui/mock_ui.h @@ -0,0 +1,27 @@ +#ifndef MOCK_UI_H +#define MICK_UI_H + +#include +#include +#include + +void stub_cons_show(void); + +void mock_cons_show(void); +void expect_cons_show(char *output); +void expect_cons_show_calls(int n); + +void mock_cons_show_error(void); +void expect_cons_show_error(char *output); + +void mock_cons_show_account(void); +void expect_cons_show_account(ProfAccount *account); + +void mock_cons_show_account_list(void); +void expect_cons_show_account_list(gchar **accounts); + +void stub_ui_ask_password(void); +void mock_ui_ask_password(void); +void mock_ui_ask_password_returns(char *password); + +#endif diff --git a/tests/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c index 8907c13e..70bcbc3b 100644 --- a/tests/xmpp/mock_xmpp.c +++ b/tests/xmpp/mock_xmpp.c @@ -1,35 +1,33 @@ -/* - * mock_xmpp.c - * - * Copyright (C) 2012, 2013 James Booth - * - * This file is part of Profanity. - * - * Profanity is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Profanity is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Profanity. If not, see . - * - */ - -#include +#include +#include #include #include +#include +#include +#include #include "xmpp/xmpp.h" -// connection functions -void jabber_init(const int disable_tls) {} +static jabber_conn_status_t +_mock_jabber_get_connection_status(void) +{ + return (jabber_conn_status_t)mock(); +} -jabber_conn_status_t jabber_connect_with_details(const char * const jid, +static char * +_mock_jabber_get_account_name(void) +{ + return (char *)mock(); +} + +static void +_mock_iq_room_list_request(gchar *conf_server) +{ + check_expected(conf_server); +} + +static jabber_conn_status_t +_mock_jabber_connect_with_details(const char * const jid, const char * const passwd, const char * const altdomain) { check_expected(jid); @@ -38,122 +36,122 @@ jabber_conn_status_t jabber_connect_with_details(const char * const jid, return (jabber_conn_status_t)mock(); } -jabber_conn_status_t jabber_connect_with_account(const ProfAccount * const account) +static jabber_conn_status_t +_mock_jabber_connect_with_account(const ProfAccount * const account) { check_expected(account); return (jabber_conn_status_t)mock(); } -void jabber_disconnect(void) {} -void jabber_shutdown(void) {} -void jabber_process_events(void) {} -const char * jabber_get_fulljid(void) -{ - return (const char *)mock(); -} -const char * jabber_get_domain(void) -{ - return (const char *)mock(); -} - -jabber_conn_status_t jabber_get_connection_status(void) -{ - return (jabber_conn_status_t)mock(); -} - -char * jabber_get_presence_message(void) -{ - return (char *)mock(); -} -void jabber_set_autoping(int seconds) {} - -char* jabber_get_account_name(void) +static char * +_mock_jabber_get_presence_message(void) { return (char *)mock(); } -GList * jabber_get_available_resources(void) +static void +_mock_presence_update(resource_presence_t status, const char * const msg, int idle) { - return (GList *)mock(); + check_expected(status); + check_expected(msg); + check_expected(idle); } -// message functions -void message_send(const char * const msg, const char * const recipient) {} -void message_send_groupchat(const char * const msg, const char * const recipient) {} -void message_send_inactive(const char * const recipient) {} -void message_send_composing(const char * const recipient) {} -void message_send_paused(const char * const recipient) {} -void message_send_gone(const char * const recipient) {} -void message_send_invite(const char * const room, const char * const contact, - const char * const reason) {} -void message_send_duck(const char * const query) {} - -// presence functions -void presence_subscription(const char * const jid, const jabber_subscr_t action) {} - -GSList* presence_get_subscription_requests(void) +void +mock_jabber_connect_with_details(void) { - return (GSList *)mock(); + jabber_connect_with_details = _mock_jabber_connect_with_details; } -gint presence_sub_request_count(void) +void +mock_jabber_connect_with_account(void) { - return (gint)mock(); + jabber_connect_with_account = _mock_jabber_connect_with_account; } -void presence_reset_sub_request_search(void) {} - -char * presence_sub_request_find(char * search_str) +void +mock_presence_update(void) { - return (char *)mock(); + presence_update = _mock_presence_update; } -void presence_join_room(Jid *jid) {} -void presence_change_room_nick(const char * const room, const char * const nick) {} -void presence_leave_chat_room(const char * const room_jid) {} -void presence_update(resource_presence_t status, const char * const msg, - int idle) {} -gboolean presence_sub_request_exists(const char * const bare_jid) +void +mock_connection_status(jabber_conn_status_t status) { - return (gboolean)mock(); + jabber_get_connection_status = _mock_jabber_get_connection_status; + will_return(_mock_jabber_get_connection_status, status); } -// iq functions -void iq_send_software_version(const char * const fulljid) {} - -void iq_room_list_request(gchar *conferencejid) +void +mock_connection_account_name(char *name) { - check_expected(conferencejid); + jabber_get_account_name = _mock_jabber_get_account_name; + will_return(_mock_jabber_get_account_name, name); } -void iq_disco_info_request(gchar *jid) {} -void iq_disco_items_request(gchar *jid) {} - -// caps functions -Capabilities* caps_get(const char * const caps_str) +void +mock_connection_presence_message(char *message) { - return (Capabilities *)mock(); + jabber_get_presence_message = _mock_jabber_get_presence_message; + will_return(_mock_jabber_get_presence_message, message); } -void caps_close(void) {} - -void bookmark_add(const char *jid, const char *nick, gboolean autojoin) {} -void bookmark_remove(const char *jid, gboolean autojoin) {} - -const GList *bookmark_get_list(void) +void +expect_room_list_request(char *conf_server) { - return (const GList *)mock(); + iq_room_list_request = _mock_iq_room_list_request; + expect_string(_mock_iq_room_list_request, conf_server, conf_server); } -char *bookmark_find(char *search_str) +void +jabber_connect_with_username_password_expect_and_return(char *jid, + char *password, jabber_conn_status_t result) { - return (char *)mock(); + expect_string(_mock_jabber_connect_with_details, jid, jid); + expect_string(_mock_jabber_connect_with_details, passwd, password); + expect_any(_mock_jabber_connect_with_details, altdomain); + will_return(_mock_jabber_connect_with_details, result); } -void bookmark_autocomplete_reset(void) {} +void +jabber_connect_with_altdomain_expect_and_return(char *altdomain, + jabber_conn_status_t result) +{ + expect_any(_mock_jabber_connect_with_details, jid); + expect_any(_mock_jabber_connect_with_details, passwd); + expect_string(_mock_jabber_connect_with_details, altdomain, altdomain); + will_return(_mock_jabber_connect_with_details, result); +} -void roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups) {} -void roster_send_add_to_group(const char * const group, PContact contact) {} -void roster_send_remove_from_group(const char * const group, PContact contact) {} -void roster_add_new(const char * const barejid, const char * const name) {} -void roster_send_remove(const char * const barejid) {} +void +jabber_connect_with_details_return(jabber_conn_status_t result) +{ + expect_any(_mock_jabber_connect_with_details, jid); + expect_any(_mock_jabber_connect_with_details, passwd); + expect_any(_mock_jabber_connect_with_details, altdomain); + will_return(_mock_jabber_connect_with_details, result); +} + +void +jabber_connect_with_account_expect_and_return(ProfAccount *account, + jabber_conn_status_t result) +{ + expect_memory(_mock_jabber_connect_with_account, account, account, sizeof(ProfAccount)); + will_return(_mock_jabber_connect_with_account, result); +} + +void +jabber_connect_with_account_return(ProfAccount *account, + jabber_conn_status_t result) +{ + expect_any(_mock_jabber_connect_with_account, account); + will_return(_mock_jabber_connect_with_account, result); +} + +void +presence_update_expect(resource_presence_t presence, char *msg, int idle) +{ + expect_value(_mock_presence_update, status, presence); + expect_string(_mock_presence_update, msg, msg); + expect_value(_mock_presence_update, idle, idle); +} diff --git a/tests/xmpp/mock_xmpp.h b/tests/xmpp/mock_xmpp.h new file mode 100644 index 00000000..c52f5e5f --- /dev/null +++ b/tests/xmpp/mock_xmpp.h @@ -0,0 +1,26 @@ +#ifndef COMMON_MOCKS_H +#define COMMON_MOCKS_H + +#include "xmpp/xmpp.h" + +void mock_connection_status(jabber_conn_status_t status); +void mock_connection_account_name(char *name); +void mock_connection_presence_message(char *message); +void expect_room_list_request(char *conf_server); + +void mock_jabber_connect_with_details(void); +void jabber_connect_with_username_password_expect_and_return(char *jid, + char *password, jabber_conn_status_t result); +void jabber_connect_with_altdomain_expect_and_return(char *altdomain, + jabber_conn_status_t result); +void jabber_connect_with_details_return(jabber_conn_status_t result); + +void mock_jabber_connect_with_account(void); +void jabber_connect_with_account_expect_and_return(ProfAccount *account, + jabber_conn_status_t result); +void jabber_connect_with_account_return(jabber_conn_status_t result); + +void mock_presence_update(void); +void presence_update_expect(resource_presence_t presence, char *msg, int idle); + +#endif