From 81909ef000a923e12c0508696ca10e1482070bf1 Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 18 Dec 2013 20:16:55 +0000 Subject: [PATCH 01/36] Dynamically bind xmpp module api --- src/xmpp/bookmark.c | 25 ++++++----- src/xmpp/capabilities.c | 10 +++-- src/xmpp/connection.c | 66 +++++++++++++++++------------ src/xmpp/iq.c | 20 +++++---- src/xmpp/message.c | 41 +++++++++++------- src/xmpp/presence.c | 51 +++++++++++++--------- src/xmpp/roster.c | 26 +++++++----- src/xmpp/xmpp.h | 94 ++++++++++++++++++++--------------------- 8 files changed, 192 insertions(+), 141 deletions(-) diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c index 0818f9ee..f7ba1c77 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 */ @@ -71,9 +71,10 @@ bookmark_add(const char *jid, const char *nick, gboolean autojoin) autocomplete_remove(bookmark_ac, jid); autocomplete_add(bookmark_ac, jid); } +void (*bookmark_add)(const char *, const char *, gboolean) = _bookmark_add; -void -bookmark_remove(const char *jid, gboolean autojoin) +static void +_bookmark_remove(const char *jid, gboolean autojoin) { /* TODO: manage bookmark_list */ if (autojoin) { @@ -83,26 +84,30 @@ bookmark_remove(const char *jid, gboolean autojoin) autocomplete_remove(bookmark_ac, jid); } } +void (*bookmark_remove)(const char *, gboolean) = _bookmark_remove; -const GList * -bookmark_get_list(void) +static const GList * +_bookmark_get_list(void) { return bookmark_list; } +const GList * (*bookmark_get_list)(void) = _bookmark_get_list; -char * -bookmark_find(char *search_str) +static char * +_bookmark_find(char *search_str) { return autocomplete_complete(bookmark_ac, search_str); } +char * (*bookmark_find)(char *) = _bookmark_find; -void -bookmark_autocomplete_reset(void) +static void +_bookmark_autocomplete_reset(void) { if (bookmark_ac != NULL) { autocomplete_reset(bookmark_ac); } } +void (*bookmark_autocomplete_reset)(void) = _bookmark_autocomplete_reset; static int _bookmark_handle_result(xmpp_conn_t * const conn, diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c index 658be124..dd3feeae 100644 --- a/src/xmpp/capabilities.c +++ b/src/xmpp/capabilities.c @@ -107,11 +107,12 @@ 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); } +Capabilities * (*caps_get)(const char * const) = _caps_get; char * caps_create_sha1_str(xmpp_stanza_t * const query) @@ -303,11 +304,12 @@ 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); } +void (*caps_close)(void) = _caps_close; static void _caps_destroy(Capabilities *caps) diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index a1cb31c4..10fb0dc6 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; @@ -107,9 +107,10 @@ jabber_init(const int disable_tls) (GDestroyNotify)resource_destroy); xmpp_initialize(); } +void (*jabber_init)(const int) = _jabber_init; -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); @@ -127,9 +128,10 @@ jabber_connect_with_account(const ProfAccount * const account) return result; } +jabber_conn_status_t (*jabber_connect_with_account)(const ProfAccount * const) = _jabber_connect_with_account; -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); @@ -159,9 +161,11 @@ jabber_connect_with_details(const char * const jid, log_info("Connecting without account, JID: %s", saved_details.jid); return _jabber_connect(saved_details.jid, passwd, saved_details.altdomain); } +jabber_conn_status_t (*jabber_connect_with_details)(const char * const, + const char * const, const char * const) = _jabber_connect_with_details; -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) { @@ -189,15 +193,17 @@ jabber_disconnect(void) FREE_SET_NULL(jabber_conn.presence_message); FREE_SET_NULL(jabber_conn.domain); } +void (*jabber_disconnect)(void) = _jabber_disconnect; -void -jabber_shutdown(void) +static void +_jabber_shutdown(void) { xmpp_shutdown(); } +void (*jabber_shutdown)(void) = _jabber_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 @@ -216,9 +222,10 @@ jabber_process_events(void) } } +void (*jabber_process_events)(void) = _jabber_process_events; -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); @@ -230,18 +237,21 @@ jabber_set_autoping(const int seconds) } } } +void (*jabber_set_autoping)(const int) = _jabber_set_autoping; -GList * -jabber_get_available_resources(void) +static GList * +_jabber_get_available_resources(void) { return g_hash_table_get_values(available_resources); } +GList * (*jabber_get_available_resources)(void) = _jabber_get_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); } +jabber_conn_status_t (*jabber_get_connection_status)(void) = _jabber_get_connection_status; xmpp_conn_t * connection_get_conn(void) @@ -255,29 +265,33 @@ 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_fulljid)(void) = _jabber_get_fulljid; -const char * -jabber_get_domain(void) +static const char * +_jabber_get_domain(void) { return jabber_conn.domain; } +const char * (*jabber_get_domain)(void) = _jabber_get_domain; -char * -jabber_get_presence_message(void) +static char * +_jabber_get_presence_message(void) { return jabber_conn.presence_message; } +char * (*jabber_get_presence_message)(void) = _jabber_get_presence_message; -char * -jabber_get_account_name(void) +static char * +_jabber_get_account_name(void) { return saved_account.name; } +char * (*jabber_get_account_name)(void) = _jabber_get_account_name; void connection_set_presence_message(const char * const message) diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index fdabe771..b330b591 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(); @@ -84,9 +84,10 @@ iq_room_list_request(gchar *conferencejid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*iq_room_list_request)(gchar *) = _iq_room_list_request; -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(); @@ -94,9 +95,10 @@ iq_disco_info_request(gchar *jid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*iq_disco_info_request)(gchar *) = _iq_disco_info_request; -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(); @@ -104,9 +106,10 @@ iq_disco_items_request(gchar *jid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*iq_disco_items_request)(gchar *) = _iq_disco_items_request; -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(); @@ -114,6 +117,7 @@ iq_send_software_version(const char * const fulljid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*iq_send_software_version)(const char * const) = _iq_send_software_version; static int _iq_handle_error(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, diff --git a/src/xmpp/message.c b/src/xmpp/message.c index a1644587..605461ef 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; @@ -89,9 +89,10 @@ message_send(const char * const msg, const char * const recipient) xmpp_send(conn, message); xmpp_stanza_release(message); } +void (*message_send)(const char * const, const char * const) = _message_send; -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(); @@ -101,9 +102,10 @@ message_send_groupchat(const char * const msg, const char * const recipient) xmpp_send(conn, message); xmpp_stanza_release(message); } +void (*message_send_groupchat)(const char * const, const char * const) = _message_send_groupchat; -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(); @@ -113,9 +115,10 @@ message_send_duck(const char * const query) xmpp_send(conn, message); xmpp_stanza_release(message); } +void (*message_send_duck)(const char * const) = _message_send_duck; -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(); @@ -125,9 +128,11 @@ message_send_invite(const char * const room, const char * const contact, xmpp_send(conn, stanza); xmpp_stanza_release(stanza); } +void (*message_send_invite)(const char * const, const char * const, + const char * const) = _message_send_invite; -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(); @@ -138,9 +143,10 @@ message_send_composing(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } +void (*message_send_composing)(const char * const) = _message_send_composing; -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(); @@ -151,9 +157,10 @@ message_send_paused(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } +void (*message_send_paused)(const char * const) = _message_send_paused; -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(); @@ -164,9 +171,10 @@ message_send_inactive(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } +void (*message_send_inactive)(const char * const) = _message_send_inactive; -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(); @@ -177,6 +185,7 @@ message_send_gone(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } +void (*message_send_gone)(const char * const) = _message_send_gone; static int _conference_message_handler(xmpp_conn_t * const conn, diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index ba9c6c02..8ebcf5cf 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); @@ -121,18 +121,21 @@ presence_subscription(const char * const jid, const jabber_subscr_t action) jid_destroy(jidp); } +void (*presence_subscription)(const char * const, const jabber_subscr_t) = _presence_subscription; -GSList * -presence_get_subscription_requests(void) +static GSList * +_presence_get_subscription_requests(void) { return autocomplete_get_list(sub_requests_ac); } +GSList * (*presence_get_subscription_requests)(void) = _presence_get_subscription_requests; -gint -presence_sub_request_count(void) +static gint +_presence_sub_request_count(void) { return autocomplete_length(sub_requests_ac); } +gint (*presence_sub_request_count)(void) = _presence_sub_request_count; void presence_free_sub_requests(void) @@ -146,14 +149,15 @@ 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); } +char * (*presence_sub_request_find)(char *) = _presence_sub_request_find; -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); @@ -173,15 +177,17 @@ presence_sub_request_exists(const char * const bare_jid) return result; } +gboolean (*presence_sub_request_exists)(const char * const) = _presence_sub_request_exists; -void -presence_reset_sub_request_search(void) +static void +_presence_reset_sub_request_search(void) { autocomplete_reset(sub_requests_ac); } +void (*presence_reset_sub_request_search)(void) = _presence_reset_sub_request_search; -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) { @@ -224,6 +230,8 @@ presence_update(const resource_presence_t presence_type, const char * const msg, } accounts_set_last_presence(jabber_get_account_name(), last); } +void (*presence_update)(const resource_presence_t, const char * const, + const int) = _presence_update; static void _send_room_presence(xmpp_conn_t *conn, xmpp_stanza_t *presence) @@ -252,8 +260,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); @@ -279,9 +287,10 @@ presence_join_room(Jid *jid) muc_join_room(jid->barejid, jid->resourcepart); } +void (*presence_join_room)(Jid *) = _presence_join_room; -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); @@ -309,9 +318,10 @@ presence_change_room_nick(const char * const room, const char * const nick) free(full_room_jid); } +void (*presence_change_room_nick)(const char * const, const char * const) = _presence_change_room_nick; -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); @@ -327,6 +337,7 @@ presence_leave_chat_room(const char * const room_jid) xmpp_stanza_release(presence); } } +void (*presence_leave_chat_room)(const char * const) = _presence_leave_chat_room; static int _unsubscribed_handler(xmpp_conn_t * const conn, diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c index 51c34ea1..c7fc71fe 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(); @@ -90,9 +90,10 @@ roster_add_new(const char * const barejid, const char * const name) xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*roster_add_new)(const char * const, const char * const) = _roster_add_new; -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(); @@ -100,9 +101,10 @@ roster_send_remove(const char * const barejid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*roster_send_remove)(const char * const) = _roster_send_remove; -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(); @@ -111,9 +113,11 @@ roster_send_name_change(const char * const barejid, const char * const new_name, xmpp_send(conn, iq); xmpp_stanza_release(iq); } +void (*roster_send_name_change)(const char * const, const char * const, + GSList *) = _roster_send_name_change; -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; @@ -142,6 +146,7 @@ roster_send_add_to_group(const char * const group, PContact contact) xmpp_stanza_release(iq); free(unique_id); } +void (*roster_send_add_to_group)(const char * const, PContact) = _roster_send_add_to_group; static int _group_add_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, @@ -157,8 +162,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; @@ -189,6 +194,7 @@ roster_send_remove_from_group(const char * const group, PContact contact) xmpp_stanza_release(iq); free(unique_id); } +void (*roster_send_remove_from_group)(const char * const, PContact) = _roster_send_remove_from_group; static int _group_remove_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index 21c25aa4..fe7abda8 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -75,65 +75,65 @@ typedef struct disco_identity_t { } DiscoIdentity; // 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 From 00a475cf55c064f01b9631362e4934affcbf3ea9 Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 18 Dec 2013 22:49:43 +0000 Subject: [PATCH 02/36] Added common mock functions and fixed tests --- Makefile.am | 1 + tests/common_mocks.c | 48 +++++++++ tests/common_mocks.h | 10 ++ tests/test_cmd_account.c | 18 ++-- tests/test_cmd_connect.c | 97 +++++++++++------ tests/test_cmd_rooms.c | 16 +-- tests/xmpp/mock_xmpp.c | 219 +++++++++++++++++++++++++-------------- 7 files changed, 284 insertions(+), 125 deletions(-) create mode 100644 tests/common_mocks.c create mode 100644 tests/common_mocks.h diff --git a/Makefile.am b/Makefile.am index 436d215c..dd4bf83c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -60,6 +60,7 @@ test_sources = \ src/config/accounts.h \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ + tests/common_mocks.c tests/common_mocks.h \ tests/ui/mock_ui.c \ tests/xmpp/mock_xmpp.c \ tests/log/mock_log.c \ diff --git a/tests/common_mocks.c b/tests/common_mocks.c new file mode 100644 index 00000000..ab0f7856 --- /dev/null +++ b/tests/common_mocks.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "xmpp/xmpp.h" + +static jabber_conn_status_t +_mock_jabber_get_connection_status(void) +{ + return (jabber_conn_status_t)mock(); +} + +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); +} + +void +mock_connection_status(jabber_conn_status_t status) +{ + jabber_get_connection_status = _mock_jabber_get_connection_status; + will_return(_mock_jabber_get_connection_status, status); +} + +void +mock_connection_account_name(char *name) +{ + jabber_get_account_name = _mock_jabber_get_account_name; + will_return(_mock_jabber_get_account_name, name); +} + +void +expect_room_list_request(char *conf_server) +{ + iq_room_list_request = _mock_iq_room_list_request; + expect_string(_mock_iq_room_list_request, conf_server, conf_server); +} diff --git a/tests/common_mocks.h b/tests/common_mocks.h new file mode 100644 index 00000000..89096836 --- /dev/null +++ b/tests/common_mocks.h @@ -0,0 +1,10 @@ +#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 expect_room_list_request(char *conf_server); + +#endif diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 6c3f34ff..87194620 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -9,6 +9,7 @@ #include "xmpp/xmpp.h" #include "ui/ui.h" #include "command/commands.h" +#include "common_mocks.h" void cmd_account_shows_usage_when_not_connected_and_no_args(void **state) { @@ -16,7 +17,7 @@ void cmd_account_shows_usage_when_not_connected_and_no_args(void **state) 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"); @@ -32,9 +33,8 @@ void cmd_account_shows_account_when_connected_and_no_args(void **state) ProfAccount *account = malloc(sizeof(ProfAccount)); gchar *args[] = { NULL }; - will_return(jabber_get_connection_status, JABBER_CONNECTED); - - will_return(jabber_get_account_name, "account_name"); + mock_connection_status(JABBER_CONNECTED); + mock_connection_account_name("account_name"); expect_any(accounts_get_account, name); will_return(accounts_get_account, account); @@ -851,7 +851,7 @@ void cmd_account_set_online_priority_sets_preference(void **state) expect_string(accounts_set_priority_online, account_name, "a_account"); expect_value(accounts_set_priority_online, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); expect_any_count(cons_show, output, 2); @@ -872,7 +872,7 @@ void cmd_account_set_chat_priority_sets_preference(void **state) expect_string(accounts_set_priority_chat, account_name, "a_account"); expect_value(accounts_set_priority_chat, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); expect_any_count(cons_show, output, 2); @@ -893,7 +893,7 @@ void cmd_account_set_away_priority_sets_preference(void **state) expect_string(accounts_set_priority_away, account_name, "a_account"); expect_value(accounts_set_priority_away, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); expect_any_count(cons_show, output, 2); @@ -914,7 +914,7 @@ void cmd_account_set_xa_priority_sets_preference(void **state) expect_string(accounts_set_priority_xa, account_name, "a_account"); expect_value(accounts_set_priority_xa, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); expect_any_count(cons_show, output, 2); @@ -935,7 +935,7 @@ void cmd_account_set_dnd_priority_sets_preference(void **state) expect_string(accounts_set_priority_dnd, account_name, "a_account"); expect_value(accounts_set_priority_dnd, value, 10); - will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + mock_connection_status(JABBER_DISCONNECTED); expect_any_count(cons_show, output, 2); diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index 3625a521..ca1ead29 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -10,11 +10,46 @@ #include "ui/ui.h" #include "command/commands.h" +#include "common_mocks.h" + +static jabber_conn_status_t _mock_jabber_connect_with_details_no_altdomain(const char * const jid, + const char * const passwd, const char * const altdomain) +{ + check_expected(jid); + check_expected(passwd); + return (jabber_conn_status_t)mock(); +} + +static jabber_conn_status_t _mock_jabber_connect_with_details_altdomain(const char * const jid, + const char * const passwd, const char * const altdomain) +{ + check_expected(altdomain); + return (jabber_conn_status_t)mock(); +} + +static jabber_conn_status_t _mock_jabber_connect_with_details_result(const char * const jid, + const char * const passwd, const char * const altdomain) +{ + return (jabber_conn_status_t)mock(); +} + +static jabber_conn_status_t _mock_jabber_connect_with_account_result(const ProfAccount * const account) +{ + return (jabber_conn_status_t)mock(); +} + +static jabber_conn_status_t _mock_jabber_connect_with_account_result_check(const ProfAccount * const account) +{ + check_expected(account); + return (jabber_conn_status_t)mock(); +} + static void test_with_connection_status(jabber_conn_status_t status) { CommandHelp *help = malloc(sizeof(CommandHelp)); - will_return(jabber_get_connection_status, status); + mock_connection_status(status); + expect_string(cons_show, output, "You are either connected already, or a login is in process."); gboolean result = cmd_connect(NULL, *help); @@ -48,7 +83,7 @@ void cmd_connect_when_no_account(void **state) 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); @@ -57,10 +92,10 @@ void cmd_connect_when_no_account(void **state) expect_string(cons_show, output, "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_details = _mock_jabber_connect_with_details_no_altdomain; + expect_string(_mock_jabber_connect_with_details_no_altdomain, jid, "user@server.org"); + expect_string(_mock_jabber_connect_with_details_no_altdomain, passwd, "password"); + will_return(_mock_jabber_connect_with_details_no_altdomain, JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -73,7 +108,7 @@ void cmd_connect_with_altdomain_when_provided(void **state) 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); @@ -82,10 +117,9 @@ void cmd_connect_with_altdomain_when_provided(void **state) 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_details = _mock_jabber_connect_with_details_altdomain; + expect_string(_mock_jabber_connect_with_details_altdomain, altdomain, "altdomain"); + will_return(_mock_jabber_connect_with_details_altdomain, JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -98,7 +132,7 @@ void cmd_connect_fail_message(void **state) 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); @@ -107,10 +141,8 @@ void cmd_connect_fail_message(void **state) 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); + jabber_connect_with_details = _mock_jabber_connect_with_details_result; + will_return(_mock_jabber_connect_with_details_result, JABBER_DISCONNECTED); expect_string(cons_show_error, output, "Connection attempt for user@server.org failed."); @@ -125,7 +157,7 @@ void cmd_connect_lowercases_argument(void **state) 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); @@ -134,10 +166,8 @@ void cmd_connect_lowercases_argument(void **state) 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 = _mock_jabber_connect_with_details_result; + will_return(_mock_jabber_connect_with_details_result, JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -152,7 +182,7 @@ void cmd_connect_asks_password_when_not_in_account(void **state) 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); @@ -163,8 +193,8 @@ void cmd_connect_asks_password_when_not_in_account(void **state) expect_any(cons_show, output); - expect_any(jabber_connect_with_account, account); - will_return(jabber_connect_with_account, JABBER_CONNECTING); + jabber_connect_with_account = _mock_jabber_connect_with_account_result; + will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); expect_any(accounts_free_account, account); @@ -183,7 +213,7 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) 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); @@ -192,8 +222,8 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) expect_string(cons_show, output, "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); + jabber_connect_with_account = _mock_jabber_connect_with_account_result; + will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); expect_any(accounts_free_account, account); @@ -212,7 +242,7 @@ void cmd_connect_connects_with_account(void **state) 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); @@ -221,8 +251,9 @@ void cmd_connect_connects_with_account(void **state) expect_any(cons_show, output); - expect_memory(jabber_connect_with_account, account, account, sizeof(ProfAccount)); - will_return(jabber_connect_with_account, JABBER_CONNECTING); + jabber_connect_with_account = _mock_jabber_connect_with_account_result_check; + expect_memory(_mock_jabber_connect_with_account_result_check, account, account, sizeof(ProfAccount)); + will_return(_mock_jabber_connect_with_account_result_check, JABBER_CONNECTING); expect_any(accounts_free_account, account); @@ -239,7 +270,7 @@ void cmd_connect_frees_account_after_connecting(void **state) 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); @@ -248,8 +279,8 @@ void cmd_connect_frees_account_after_connecting(void **state) expect_any(cons_show, output); - expect_any(jabber_connect_with_account, account); - will_return(jabber_connect_with_account, JABBER_CONNECTING); + jabber_connect_with_account = _mock_jabber_connect_with_account_result; + will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); expect_memory(accounts_free_account, account, account, sizeof(ProfAccount)); diff --git a/tests/test_cmd_rooms.c b/tests/test_cmd_rooms.c index e39d9088..b1022a98 100644 --- a/tests/test_cmd_rooms.c +++ b/tests/test_cmd_rooms.c @@ -8,12 +8,13 @@ #include "xmpp/xmpp.h" #include "ui/ui.h" #include "command/commands.h" +#include "common_mocks.h" static void test_with_connection_status(jabber_conn_status_t status) { CommandHelp *help = malloc(sizeof(CommandHelp)); - will_return(jabber_get_connection_status, status); + mock_connection_status(status); expect_string(cons_show, output, "You are not currently connected."); gboolean result = cmd_rooms(NULL, *help); @@ -54,11 +55,13 @@ void cmd_rooms_uses_account_default_when_no_arg(void **state) 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"); + mock_connection_status(JABBER_CONNECTED); + mock_connection_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"); + + expect_room_list_request("default_conf_server"); gboolean result = cmd_rooms(args, *help); @@ -73,8 +76,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/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c index 8907c13e..7d3031c9 100644 --- a/tests/xmpp/mock_xmpp.c +++ b/tests/xmpp/mock_xmpp.c @@ -27,133 +27,198 @@ #include "xmpp/xmpp.h" // connection functions -void jabber_init(const int disable_tls) {} +static void _jabber_init(const int disable_tls) {} +void (*jabber_init)(const int disable_tls) = _jabber_init; -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) { - check_expected(jid); - check_expected(passwd); - check_expected(altdomain); - return (jabber_conn_status_t)mock(); + return JABBER_DISCONNECTED; } +jabber_conn_status_t (*jabber_connect_with_details)(const char * const, + const char * const, const char * const) = _jabber_connect_with_details; -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) { - check_expected(account); - return (jabber_conn_status_t)mock(); + return JABBER_DISCONNECTED; } +jabber_conn_status_t (*jabber_connect_with_account)(const ProfAccount * const) = _jabber_connect_with_account; -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(); -} +static void _jabber_disconnect(void) {} +void (*jabber_disconnect)(void) = _jabber_disconnect; -jabber_conn_status_t jabber_get_connection_status(void) -{ - return (jabber_conn_status_t)mock(); -} +static void _jabber_shutdown(void) {} +void (*jabber_shutdown)(void) = _jabber_shutdown; -char * jabber_get_presence_message(void) -{ - return (char *)mock(); -} -void jabber_set_autoping(int seconds) {} +static void _jabber_process_events(void) {} +void (*jabber_process_events)(void) = _jabber_process_events; -char* jabber_get_account_name(void) +static const char * _jabber_get_fulljid(void) { - return (char *)mock(); + return NULL; } +const char * (*jabber_get_fulljid)(void) = _jabber_get_fulljid; -GList * jabber_get_available_resources(void) +static const char * _jabber_get_domain(void) { - return (GList *)mock(); + return NULL; } +const char * (*jabber_get_domain)(void) = _jabber_get_domain; + +static jabber_conn_status_t _jabber_get_connection_status(void) +{ + return JABBER_DISCONNECTED; +} +jabber_conn_status_t (*jabber_get_connection_status)(void) = _jabber_get_connection_status; + +static char * _jabber_get_presence_message(void) +{ + return NULL; +} +char * (*jabber_get_presence_message)(void) = _jabber_get_presence_message; + +static void _jabber_set_autoping(int seconds) {} +void (*jabber_set_autoping)(int) = _jabber_set_autoping; + +static char * _jabber_get_account_name(void) +{ + return NULL; +} +char * (*jabber_get_account_name)(void) = _jabber_get_account_name; + +static GList * _jabber_get_available_resources(void) +{ + return NULL; +} +GList * (*jabber_get_available_resources)(void) = _jabber_get_available_resources; // 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, +static void _message_send(const char * const msg, const char * const recipient) {} +void (*message_send)(const char * const, const char * const) = _message_send; + +static void _message_send_groupchat(const char * const msg, const char * const recipient) {} +void (*message_send_groupchat)(const char * const, const char * const) = _message_send_groupchat; + +static void _message_send_inactive(const char * const recipient) {} +void (*message_send_inactive)(const char * const) = _message_send_inactive; + +static void _message_send_composing(const char * const recipient) {} +void (*message_send_composing)(const char * const) = _message_send_composing; + +static void _message_send_paused(const char * const recipient) {} +void (*message_send_paused)(const char * const) = _message_send_paused; + +static void _message_send_gone(const char * const recipient) {} +void (*message_send_gone)(const char * const) = _message_send_gone; + +static 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_invite)(const char * const, const char * const, + const char * const) = _message_send_invite; + +static void _message_send_duck(const char * const query) {} +void (*message_send_duck)(const char * const) = _message_send_duck; // presence functions -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) {} +void (*presence_subscription)(const char * const, const jabber_subscr_t) = _presence_subscription; -GSList* presence_get_subscription_requests(void) +static GSList* _presence_get_subscription_requests(void) { - return (GSList *)mock(); + return NULL; } +GSList* (*presence_get_subscription_requests)(void) = _presence_get_subscription_requests; -gint presence_sub_request_count(void) +static gint _presence_sub_request_count(void) { - return (gint)mock(); + return 0; } +gint (*presence_sub_request_count)(void) = _presence_sub_request_count; -void presence_reset_sub_request_search(void) {} +static void _presence_reset_sub_request_search(void) {} +void (*presence_reset_sub_request_search)(void) = _presence_reset_sub_request_search; -char * presence_sub_request_find(char * search_str) +static char * _presence_sub_request_find(char * search_str) { - return (char *)mock(); + return NULL; } +char * (*presence_sub_request_find)(char *) = _presence_sub_request_find; -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, +static void _presence_join_room(Jid *jid) {} +void (*presence_join_room)(Jid *) = _presence_join_room; + +static void _presence_change_room_nick(const char * const room, const char * const nick) {} +void (*presence_change_room_nick)(const char * const, const char * const) = _presence_change_room_nick; + +static void _presence_leave_chat_room(const char * const room_jid) {} +void (*presence_leave_chat_room)(const char * const) = _presence_leave_chat_room; + +static void _presence_update(resource_presence_t status, const char * const msg, int idle) {} -gboolean presence_sub_request_exists(const char * const bare_jid) +void (*presence_update)(resource_presence_t, const char * const, + int) = _presence_update; + +static gboolean _presence_sub_request_exists(const char * const bare_jid) { - return (gboolean)mock(); + return FALSE; } +gboolean (*presence_sub_request_exists)(const char * const bare_jid) = _presence_sub_request_exists; // iq functions -void iq_send_software_version(const char * const fulljid) {} +static void _iq_send_software_version(const char * const fulljid) {} +void (*iq_send_software_version)(const char * const) = _iq_send_software_version; -void iq_room_list_request(gchar *conferencejid) -{ - check_expected(conferencejid); -} +static void _iq_room_list_request(gchar *conferencejid) {} +void (*iq_room_list_request)(gchar *) = _iq_room_list_request; -void iq_disco_info_request(gchar *jid) {} -void iq_disco_items_request(gchar *jid) {} +static void _iq_disco_info_request(gchar *jid) {} +void (*iq_disco_info_request)(gchar *) = _iq_disco_info_request; + +static void _iq_disco_items_request(gchar *jid) {} +void (*iq_disco_items_request)(gchar *) = _iq_disco_items_request; // caps functions -Capabilities* caps_get(const char * const caps_str) +static Capabilities* _caps_get(const char * const caps_str) { - return (Capabilities *)mock(); + return NULL; } +Capabilities* (*caps_get)(const char * const) = _caps_get; -void caps_close(void) {} +static void _caps_close(void) {} +void (*caps_close)(void) = _caps_close; -void bookmark_add(const char *jid, const char *nick, gboolean autojoin) {} -void bookmark_remove(const char *jid, gboolean autojoin) {} +static void _bookmark_add(const char *jid, const char *nick, gboolean autojoin) {} +void (*bookmark_add)(const char *, const char *, gboolean) = _bookmark_add; -const GList *bookmark_get_list(void) +static void _bookmark_remove(const char *jid, gboolean autojoin) {} +void (*bookmark_remove)(const char *, gboolean) = _bookmark_remove; + +static const GList* _bookmark_get_list(void) { - return (const GList *)mock(); + return NULL; } +const GList* (*bookmark_get_list)(void) = _bookmark_get_list; -char *bookmark_find(char *search_str) +static char* _bookmark_find(char *search_str) { - return (char *)mock(); + return NULL; } +char* (*bookmark_find)(char *) = _bookmark_find; -void bookmark_autocomplete_reset(void) {} +static void _bookmark_autocomplete_reset(void) {} +void (*bookmark_autocomplete_reset)(void) = _bookmark_autocomplete_reset; -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) {} +static void _roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups) {} +void (*roster_send_name_change)(const char * const, const char * const, GSList *) = _roster_send_name_change; + +static void _roster_send_add_to_group(const char * const group, PContact contact) {} +void (*roster_send_add_to_group)(const char * const, PContact) = _roster_send_add_to_group; + +static void _roster_send_remove_from_group(const char * const group, PContact contact) {} +void (*roster_send_remove_from_group)(const char * const, PContact) = _roster_send_remove_from_group; + +static void _roster_add_new(const char * const barejid, const char * const name) {} +void (*roster_add_new)(const char * const, const char * const) = _roster_add_new; + +static void _roster_send_remove(const char * const barejid) {} +void (*roster_send_remove)(const char * const) = _roster_send_remove; From b27c5d0f5baa7161231642b14106db2e96065f95 Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 18 Dec 2013 23:06:43 +0000 Subject: [PATCH 03/36] Replaced old mock_xmpp --- Makefile.am | 3 +- tests/common_mocks.c | 48 ----- tests/test_cmd_account.c | 4 +- tests/test_cmd_connect.c | 4 +- tests/test_cmd_rooms.c | 4 +- tests/xmpp/mock_xmpp.c | 228 +++------------------ tests/{common_mocks.h => xmpp/mock_xmpp.h} | 0 7 files changed, 36 insertions(+), 255 deletions(-) delete mode 100644 tests/common_mocks.c rename tests/{common_mocks.h => xmpp/mock_xmpp.h} (100%) diff --git a/Makefile.am b/Makefile.am index dd4bf83c..2148fd3f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -60,9 +60,8 @@ test_sources = \ src/config/accounts.h \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ - tests/common_mocks.c tests/common_mocks.h \ + tests/xmpp/mock_xmpp.h tests/xmpp/mock_xmpp.c \ tests/ui/mock_ui.c \ - tests/xmpp/mock_xmpp.c \ tests/log/mock_log.c \ tests/config/mock_accounts.c \ tests/test_autocomplete.c \ diff --git a/tests/common_mocks.c b/tests/common_mocks.c deleted file mode 100644 index ab0f7856..00000000 --- a/tests/common_mocks.c +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "xmpp/xmpp.h" - -static jabber_conn_status_t -_mock_jabber_get_connection_status(void) -{ - return (jabber_conn_status_t)mock(); -} - -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); -} - -void -mock_connection_status(jabber_conn_status_t status) -{ - jabber_get_connection_status = _mock_jabber_get_connection_status; - will_return(_mock_jabber_get_connection_status, status); -} - -void -mock_connection_account_name(char *name) -{ - jabber_get_account_name = _mock_jabber_get_account_name; - will_return(_mock_jabber_get_account_name, name); -} - -void -expect_room_list_request(char *conf_server) -{ - iq_room_list_request = _mock_iq_room_list_request; - expect_string(_mock_iq_room_list_request, conf_server, conf_server); -} diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 87194620..b44b2ea1 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -7,9 +7,11 @@ #include #include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + #include "ui/ui.h" + #include "command/commands.h" -#include "common_mocks.h" void cmd_account_shows_usage_when_not_connected_and_no_args(void **state) { diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index ca1ead29..b0d1f3c9 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -7,10 +7,12 @@ #include #include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + #include "ui/ui.h" + #include "command/commands.h" -#include "common_mocks.h" static jabber_conn_status_t _mock_jabber_connect_with_details_no_altdomain(const char * const jid, const char * const passwd, const char * const altdomain) diff --git a/tests/test_cmd_rooms.c b/tests/test_cmd_rooms.c index b1022a98..a31f67f3 100644 --- a/tests/test_cmd_rooms.c +++ b/tests/test_cmd_rooms.c @@ -6,9 +6,11 @@ #include #include "xmpp/xmpp.h" +#include "xmpp/mock_xmpp.h" + #include "ui/ui.h" + #include "command/commands.h" -#include "common_mocks.h" static void test_with_connection_status(jabber_conn_status_t status) { diff --git a/tests/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c index 7d3031c9..ab0f7856 100644 --- a/tests/xmpp/mock_xmpp.c +++ b/tests/xmpp/mock_xmpp.c @@ -1,224 +1,48 @@ -/* - * 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 -static void _jabber_init(const int disable_tls) {} -void (*jabber_init)(const int disable_tls) = _jabber_init; - -static jabber_conn_status_t _jabber_connect_with_details(const char * const jid, - const char * const passwd, const char * const altdomain) +static jabber_conn_status_t +_mock_jabber_get_connection_status(void) { - return JABBER_DISCONNECTED; + return (jabber_conn_status_t)mock(); } -jabber_conn_status_t (*jabber_connect_with_details)(const char * const, - const char * const, const char * const) = _jabber_connect_with_details; -static jabber_conn_status_t _jabber_connect_with_account(const ProfAccount * const account) +static char * +_mock_jabber_get_account_name(void) { - return JABBER_DISCONNECTED; + return (char *)mock(); } -jabber_conn_status_t (*jabber_connect_with_account)(const ProfAccount * const) = _jabber_connect_with_account; -static void _jabber_disconnect(void) {} -void (*jabber_disconnect)(void) = _jabber_disconnect; - -static void _jabber_shutdown(void) {} -void (*jabber_shutdown)(void) = _jabber_shutdown; - -static void _jabber_process_events(void) {} -void (*jabber_process_events)(void) = _jabber_process_events; - -static const char * _jabber_get_fulljid(void) +static void +_mock_iq_room_list_request(gchar *conf_server) { - return NULL; + check_expected(conf_server); } -const char * (*jabber_get_fulljid)(void) = _jabber_get_fulljid; -static const char * _jabber_get_domain(void) +void +mock_connection_status(jabber_conn_status_t status) { - return NULL; + jabber_get_connection_status = _mock_jabber_get_connection_status; + will_return(_mock_jabber_get_connection_status, status); } -const char * (*jabber_get_domain)(void) = _jabber_get_domain; -static jabber_conn_status_t _jabber_get_connection_status(void) +void +mock_connection_account_name(char *name) { - return JABBER_DISCONNECTED; + jabber_get_account_name = _mock_jabber_get_account_name; + will_return(_mock_jabber_get_account_name, name); } -jabber_conn_status_t (*jabber_get_connection_status)(void) = _jabber_get_connection_status; -static char * _jabber_get_presence_message(void) +void +expect_room_list_request(char *conf_server) { - return NULL; + iq_room_list_request = _mock_iq_room_list_request; + expect_string(_mock_iq_room_list_request, conf_server, conf_server); } -char * (*jabber_get_presence_message)(void) = _jabber_get_presence_message; - -static void _jabber_set_autoping(int seconds) {} -void (*jabber_set_autoping)(int) = _jabber_set_autoping; - -static char * _jabber_get_account_name(void) -{ - return NULL; -} -char * (*jabber_get_account_name)(void) = _jabber_get_account_name; - -static GList * _jabber_get_available_resources(void) -{ - return NULL; -} -GList * (*jabber_get_available_resources)(void) = _jabber_get_available_resources; - -// message functions -static void _message_send(const char * const msg, const char * const recipient) {} -void (*message_send)(const char * const, const char * const) = _message_send; - -static void _message_send_groupchat(const char * const msg, const char * const recipient) {} -void (*message_send_groupchat)(const char * const, const char * const) = _message_send_groupchat; - -static void _message_send_inactive(const char * const recipient) {} -void (*message_send_inactive)(const char * const) = _message_send_inactive; - -static void _message_send_composing(const char * const recipient) {} -void (*message_send_composing)(const char * const) = _message_send_composing; - -static void _message_send_paused(const char * const recipient) {} -void (*message_send_paused)(const char * const) = _message_send_paused; - -static void _message_send_gone(const char * const recipient) {} -void (*message_send_gone)(const char * const) = _message_send_gone; - -static void _message_send_invite(const char * const room, const char * const contact, - const char * const reason) {} -void (*message_send_invite)(const char * const, const char * const, - const char * const) = _message_send_invite; - -static void _message_send_duck(const char * const query) {} -void (*message_send_duck)(const char * const) = _message_send_duck; - -// presence functions -static void _presence_subscription(const char * const jid, const jabber_subscr_t action) {} -void (*presence_subscription)(const char * const, const jabber_subscr_t) = _presence_subscription; - -static GSList* _presence_get_subscription_requests(void) -{ - return NULL; -} -GSList* (*presence_get_subscription_requests)(void) = _presence_get_subscription_requests; - -static gint _presence_sub_request_count(void) -{ - return 0; -} -gint (*presence_sub_request_count)(void) = _presence_sub_request_count; - -static void _presence_reset_sub_request_search(void) {} -void (*presence_reset_sub_request_search)(void) = _presence_reset_sub_request_search; - -static char * _presence_sub_request_find(char * search_str) -{ - return NULL; -} -char * (*presence_sub_request_find)(char *) = _presence_sub_request_find; - -static void _presence_join_room(Jid *jid) {} -void (*presence_join_room)(Jid *) = _presence_join_room; - -static void _presence_change_room_nick(const char * const room, const char * const nick) {} -void (*presence_change_room_nick)(const char * const, const char * const) = _presence_change_room_nick; - -static void _presence_leave_chat_room(const char * const room_jid) {} -void (*presence_leave_chat_room)(const char * const) = _presence_leave_chat_room; - -static void _presence_update(resource_presence_t status, const char * const msg, - int idle) {} -void (*presence_update)(resource_presence_t, const char * const, - int) = _presence_update; - -static gboolean _presence_sub_request_exists(const char * const bare_jid) -{ - return FALSE; -} -gboolean (*presence_sub_request_exists)(const char * const bare_jid) = _presence_sub_request_exists; - -// iq functions -static void _iq_send_software_version(const char * const fulljid) {} -void (*iq_send_software_version)(const char * const) = _iq_send_software_version; - -static void _iq_room_list_request(gchar *conferencejid) {} -void (*iq_room_list_request)(gchar *) = _iq_room_list_request; - -static void _iq_disco_info_request(gchar *jid) {} -void (*iq_disco_info_request)(gchar *) = _iq_disco_info_request; - -static void _iq_disco_items_request(gchar *jid) {} -void (*iq_disco_items_request)(gchar *) = _iq_disco_items_request; - -// caps functions -static Capabilities* _caps_get(const char * const caps_str) -{ - return NULL; -} -Capabilities* (*caps_get)(const char * const) = _caps_get; - -static void _caps_close(void) {} -void (*caps_close)(void) = _caps_close; - -static void _bookmark_add(const char *jid, const char *nick, gboolean autojoin) {} -void (*bookmark_add)(const char *, const char *, gboolean) = _bookmark_add; - -static void _bookmark_remove(const char *jid, gboolean autojoin) {} -void (*bookmark_remove)(const char *, gboolean) = _bookmark_remove; - -static const GList* _bookmark_get_list(void) -{ - return NULL; -} -const GList* (*bookmark_get_list)(void) = _bookmark_get_list; - -static char* _bookmark_find(char *search_str) -{ - return NULL; -} -char* (*bookmark_find)(char *) = _bookmark_find; - -static void _bookmark_autocomplete_reset(void) {} -void (*bookmark_autocomplete_reset)(void) = _bookmark_autocomplete_reset; - -static void _roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups) {} -void (*roster_send_name_change)(const char * const, const char * const, GSList *) = _roster_send_name_change; - -static void _roster_send_add_to_group(const char * const group, PContact contact) {} -void (*roster_send_add_to_group)(const char * const, PContact) = _roster_send_add_to_group; - -static void _roster_send_remove_from_group(const char * const group, PContact contact) {} -void (*roster_send_remove_from_group)(const char * const, PContact) = _roster_send_remove_from_group; - -static void _roster_add_new(const char * const barejid, const char * const name) {} -void (*roster_add_new)(const char * const, const char * const) = _roster_add_new; - -static void _roster_send_remove(const char * const barejid) {} -void (*roster_send_remove)(const char * const) = _roster_send_remove; diff --git a/tests/common_mocks.h b/tests/xmpp/mock_xmpp.h similarity index 100% rename from tests/common_mocks.h rename to tests/xmpp/mock_xmpp.h From d56f6dc39b002e16966354b0ad98cf7801260e0c Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 19 Dec 2013 21:05:39 +0000 Subject: [PATCH 04/36] Added mocks and stubs for cons_show --- Makefile.am | 2 +- src/ui/console.c | 5 +- src/ui/ui.h | 2 +- tests/test_cmd_account.c | 195 +++++++++++++++++++++------------------ tests/test_cmd_account.h | 2 +- tests/test_cmd_connect.c | 28 +++--- tests/test_cmd_rooms.c | 4 +- tests/testsuite.c | 2 +- tests/ui/mock_ui.c | 51 ++++++++-- tests/ui/mock_ui.h | 14 +++ 10 files changed, 183 insertions(+), 122 deletions(-) create mode 100644 tests/ui/mock_ui.h diff --git a/Makefile.am b/Makefile.am index 2148fd3f..f3634606 100644 --- a/Makefile.am +++ b/Makefile.am @@ -61,7 +61,7 @@ test_sources = \ src/config/preferences.c src/config/preferences.h \ src/config/theme.c src/config/theme.h \ tests/xmpp/mock_xmpp.h tests/xmpp/mock_xmpp.c \ - tests/ui/mock_ui.c \ + tests/ui/mock_ui.h tests/ui/mock_ui.c \ tests/log/mock_log.c \ tests/config/mock_accounts.c \ tests/test_autocomplete.c \ diff --git a/src/ui/console.c b/src/ui/console.c index 00e891db..43313dd1 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -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; @@ -99,6 +99,7 @@ cons_show(const char * const msg, ...) va_end(arg); wins_refresh_console(); } +void (*cons_show)(const char * const, ...) = _cons_show; void cons_show_error(const char * const msg, ...) diff --git a/src/ui/ui.h b/src/ui/ui.h index f6bb98ac..539146b7 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -149,7 +149,7 @@ 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_show)(const char * const msg, ...); void cons_about(void); void cons_help(void); void cons_basic_help(void); diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index b44b2ea1..0ef3c0ee 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -10,18 +10,20 @@ #include "xmpp/mock_xmpp.h" #include "ui/ui.h" +#include "ui/mock_ui.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 }; 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); @@ -75,11 +77,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); @@ -89,14 +92,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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "show", "account_name", NULL }; expect_any(accounts_get_account, name); will_return(accounts_get_account, 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); @@ -104,7 +108,7 @@ 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) { CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "show", "account_name", NULL }; @@ -125,11 +129,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); @@ -139,13 +144,12 @@ void cmd_account_add_shows_usage_when_no_arg(void **state) void cmd_account_add_adds_account(void **state) { + stub_cons_show(); 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -154,13 +158,14 @@ void cmd_account_add_adds_account(void **state) void cmd_account_add_shows_message(void **state) { + mock_cons_show(); 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); @@ -170,11 +175,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); @@ -184,14 +190,13 @@ void cmd_account_enable_shows_usage_when_no_arg(void **state) void cmd_account_enable_enables_account(void **state) { + stub_cons_show(); 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -200,14 +205,15 @@ void cmd_account_enable_enables_account(void **state) void cmd_account_enable_shows_message_when_enabled(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "enable", "account_name", NULL }; expect_any(accounts_enable, name); will_return(accounts_enable, 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); @@ -217,14 +223,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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "enable", "account_name", NULL }; expect_any(accounts_enable, name); will_return(accounts_enable, 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); @@ -234,11 +241,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); @@ -248,14 +256,13 @@ void cmd_account_disable_shows_usage_when_no_arg(void **state) void cmd_account_disable_disables_account(void **state) { + stub_cons_show(); 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -264,14 +271,15 @@ void cmd_account_disable_disables_account(void **state) void cmd_account_disable_shows_message_when_disabled(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "disable", "account_name", NULL }; expect_any(accounts_disable, name); will_return(accounts_disable, 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); @@ -281,14 +289,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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "disable", "account_name", NULL }; expect_any(accounts_disable, name); will_return(accounts_disable, 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); @@ -298,11 +307,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); @@ -312,11 +322,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); @@ -326,6 +337,7 @@ void cmd_account_rename_shows_usage_when_one_arg(void **state) void cmd_account_rename_renames_account(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "rename", "original_name", "new_name", NULL }; @@ -333,8 +345,6 @@ void cmd_account_rename_renames_account(void **state) expect_string(accounts_rename, new_name, "new_name"); will_return(accounts_rename, TRUE); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -343,6 +353,7 @@ void cmd_account_rename_renames_account(void **state) void cmd_account_rename_shows_message_when_renamed(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "rename", "original_name", "new_name", NULL }; @@ -350,8 +361,8 @@ void cmd_account_rename_shows_message_when_renamed(void **state) expect_any(accounts_rename, new_name); will_return(accounts_rename, 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); @@ -361,6 +372,7 @@ void cmd_account_rename_shows_message_when_renamed(void **state) void cmd_account_rename_shows_message_when_not_renamed(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "rename", "original_name", "new_name", NULL }; @@ -368,8 +380,8 @@ void cmd_account_rename_shows_message_when_not_renamed(void **state) expect_any(accounts_rename, new_name); will_return(accounts_rename, 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); @@ -379,11 +391,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); @@ -393,11 +406,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); @@ -407,11 +421,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); @@ -421,14 +436,13 @@ void cmd_account_set_shows_usage_when_two_args(void **state) void cmd_account_set_checks_account_exists(void **state) { + stub_cons_show(); 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -437,14 +451,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(); 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); - 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); @@ -454,13 +469,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(); 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); - expect_string(cons_show, output, "Malformed jid: @malformed"); + expect_cons_show("Malformed jid: @malformed"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -470,6 +486,7 @@ void cmd_account_set_jid_shows_message_for_malformed_jid(void **state) void cmd_account_set_jid_sets_barejid(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "jid", "a_local@a_domain/a_resource", NULL }; @@ -479,13 +496,12 @@ void cmd_account_set_jid_sets_barejid(void **state) expect_string(accounts_set_jid, account_name, "a_account"); expect_string(accounts_set_jid, value, "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); @@ -495,6 +511,7 @@ void cmd_account_set_jid_sets_barejid(void **state) void cmd_account_set_jid_sets_resource(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "jid", "a_local@a_domain/a_resource", NULL }; @@ -504,13 +521,13 @@ void cmd_account_set_jid_sets_resource(void **state) expect_any(accounts_set_jid, account_name); expect_any(accounts_set_jid, value); - expect_any(cons_show, output); + expect_cons_show_calls(1); 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); @@ -520,6 +537,7 @@ void cmd_account_set_jid_sets_resource(void **state) void cmd_account_set_server_sets_server(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "server", "a_server", NULL }; @@ -529,8 +547,6 @@ void cmd_account_set_server_sets_server(void **state) expect_string(accounts_set_server, account_name, "a_account"); expect_string(accounts_set_server, value, "a_server"); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -539,6 +555,7 @@ void cmd_account_set_server_sets_server(void **state) void cmd_account_set_server_shows_message(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "server", "a_server", NULL }; @@ -548,8 +565,8 @@ void cmd_account_set_server_shows_message(void **state) 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); @@ -559,6 +576,7 @@ void cmd_account_set_server_shows_message(void **state) void cmd_account_set_resource_sets_resource(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "resource", "a_resource", NULL }; @@ -568,8 +586,6 @@ void cmd_account_set_resource_sets_resource(void **state) expect_string(accounts_set_resource, account_name, "a_account"); expect_string(accounts_set_resource, value, "a_resource"); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -578,6 +594,7 @@ void cmd_account_set_resource_sets_resource(void **state) void cmd_account_set_resource_shows_message(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "resource", "a_resource", NULL }; @@ -587,8 +604,8 @@ void cmd_account_set_resource_shows_message(void **state) 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); @@ -598,6 +615,7 @@ void cmd_account_set_resource_shows_message(void **state) void cmd_account_set_password_sets_password(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "password", "a_password", NULL }; @@ -607,8 +625,6 @@ void cmd_account_set_password_sets_password(void **state) expect_string(accounts_set_password, account_name, "a_account"); expect_string(accounts_set_password, value, "a_password"); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -617,6 +633,7 @@ void cmd_account_set_password_sets_password(void **state) void cmd_account_set_password_shows_message(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "password", "a_password", NULL }; @@ -626,8 +643,8 @@ void cmd_account_set_password_shows_message(void **state) 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); @@ -637,6 +654,7 @@ void cmd_account_set_password_shows_message(void **state) void cmd_account_set_muc_sets_muc(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "muc", "a_muc", NULL }; @@ -646,8 +664,6 @@ void cmd_account_set_muc_sets_muc(void **state) 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -656,6 +672,7 @@ void cmd_account_set_muc_sets_muc(void **state) void cmd_account_set_muc_shows_message(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "muc", "a_muc", NULL }; @@ -665,8 +682,8 @@ void cmd_account_set_muc_shows_message(void **state) 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); @@ -676,6 +693,7 @@ void cmd_account_set_muc_shows_message(void **state) void cmd_account_set_nick_sets_nick(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "nick", "a_nick", NULL }; @@ -685,8 +703,6 @@ void cmd_account_set_nick_sets_nick(void **state) 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -695,6 +711,7 @@ void cmd_account_set_nick_sets_nick(void **state) void cmd_account_set_nick_shows_message(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "nick", "a_nick", NULL }; @@ -704,8 +721,8 @@ void cmd_account_set_nick_shows_message(void **state) 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); @@ -715,14 +732,15 @@ void cmd_account_set_nick_shows_message(void **state) void cmd_account_set_status_shows_message_when_invalid_status(void **state) { + mock_cons_show(); 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); - 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); @@ -732,6 +750,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "away", NULL }; @@ -741,8 +760,6 @@ void cmd_account_set_status_sets_status_when_valid(void **state) 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -751,6 +768,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "last", NULL }; @@ -760,8 +778,6 @@ void cmd_account_set_status_sets_status_when_last(void **state) 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); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -770,6 +786,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "away", NULL }; @@ -779,8 +796,8 @@ void cmd_account_set_status_shows_message_when_set_valid(void **state) 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); @@ -790,6 +807,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "status", "last", NULL }; @@ -799,8 +817,8 @@ void cmd_account_set_status_shows_message_when_set_last(void **state) 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); @@ -810,14 +828,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(); 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); - 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); @@ -827,14 +846,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(); 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); - 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); @@ -844,6 +864,7 @@ void cmd_account_set_last_priority_shows_message(void **state) void cmd_account_set_online_priority_sets_preference(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "online", "10", NULL }; @@ -855,8 +876,6 @@ void cmd_account_set_online_priority_sets_preference(void **state) mock_connection_status(JABBER_DISCONNECTED); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -865,6 +884,7 @@ void cmd_account_set_online_priority_sets_preference(void **state) void cmd_account_set_chat_priority_sets_preference(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "chat", "10", NULL }; @@ -876,8 +896,6 @@ void cmd_account_set_chat_priority_sets_preference(void **state) mock_connection_status(JABBER_DISCONNECTED); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -886,6 +904,7 @@ void cmd_account_set_chat_priority_sets_preference(void **state) void cmd_account_set_away_priority_sets_preference(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "away", "10", NULL }; @@ -897,8 +916,6 @@ void cmd_account_set_away_priority_sets_preference(void **state) mock_connection_status(JABBER_DISCONNECTED); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -907,6 +924,7 @@ void cmd_account_set_away_priority_sets_preference(void **state) void cmd_account_set_xa_priority_sets_preference(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "xa", "10", NULL }; @@ -918,8 +936,6 @@ void cmd_account_set_xa_priority_sets_preference(void **state) mock_connection_status(JABBER_DISCONNECTED); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -928,6 +944,7 @@ void cmd_account_set_xa_priority_sets_preference(void **state) void cmd_account_set_dnd_priority_sets_preference(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "set", "a_account", "dnd", "10", NULL }; @@ -939,8 +956,6 @@ void cmd_account_set_dnd_priority_sets_preference(void **state) mock_connection_status(JABBER_DISCONNECTED); - expect_any_count(cons_show, output, 2); - gboolean result = cmd_account(args, *help); assert_true(result); diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 7333ad05..8d63dcbc 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); diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index b0d1f3c9..f4545fb2 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -10,6 +10,7 @@ #include "xmpp/mock_xmpp.h" #include "ui/ui.h" +#include "ui/mock_ui.h" #include "command/commands.h" @@ -48,11 +49,12 @@ static jabber_conn_status_t _mock_jabber_connect_with_account_result_check(const static void test_with_connection_status(jabber_conn_status_t status) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); mock_connection_status(status); - expect_string(cons_show, output, "You are either connected already, or a login is in process."); + expect_cons_show("You are either connected already, or a login is in process."); gboolean result = cmd_connect(NULL, *help); assert_true(result); @@ -82,6 +84,7 @@ void cmd_connect_shows_message_when_undefined(void **state) void cmd_connect_when_no_account(void **state) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; @@ -92,7 +95,7 @@ void cmd_connect_when_no_account(void **state) will_return(ui_ask_password, strdup("password")); - expect_string(cons_show, output, "Connecting as user@server.org"); + expect_cons_show("Connecting as user@server.org"); jabber_connect_with_details = _mock_jabber_connect_with_details_no_altdomain; expect_string(_mock_jabber_connect_with_details_no_altdomain, jid, "user@server.org"); @@ -107,6 +110,7 @@ void cmd_connect_when_no_account(void **state) void cmd_connect_with_altdomain_when_provided(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", "altdomain" }; @@ -117,8 +121,6 @@ void cmd_connect_with_altdomain_when_provided(void **state) will_return(ui_ask_password, strdup("password")); - expect_any(cons_show, output); - jabber_connect_with_details = _mock_jabber_connect_with_details_altdomain; expect_string(_mock_jabber_connect_with_details_altdomain, altdomain, "altdomain"); will_return(_mock_jabber_connect_with_details_altdomain, JABBER_CONNECTING); @@ -131,6 +133,7 @@ void cmd_connect_with_altdomain_when_provided(void **state) void cmd_connect_fail_message(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; @@ -141,8 +144,6 @@ void cmd_connect_fail_message(void **state) will_return(ui_ask_password, strdup("password")); - expect_any(cons_show, output); - jabber_connect_with_details = _mock_jabber_connect_with_details_result; will_return(_mock_jabber_connect_with_details_result, JABBER_DISCONNECTED); @@ -156,6 +157,7 @@ void cmd_connect_fail_message(void **state) void cmd_connect_lowercases_argument(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "USER@server.ORG", NULL }; @@ -166,8 +168,6 @@ void cmd_connect_lowercases_argument(void **state) will_return(ui_ask_password, strdup("password")); - expect_any(cons_show, output); - jabber_connect_with_details = _mock_jabber_connect_with_details_result; will_return(_mock_jabber_connect_with_details_result, JABBER_CONNECTING); @@ -179,6 +179,7 @@ void cmd_connect_lowercases_argument(void **state) void cmd_connect_asks_password_when_not_in_account(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -193,8 +194,6 @@ void cmd_connect_asks_password_when_not_in_account(void **state) will_return(ui_ask_password, strdup("password")); - expect_any(cons_show, output); - jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); @@ -209,6 +208,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -222,7 +222,7 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) will_return(accounts_create_full_jid, strdup("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"); jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); @@ -238,6 +238,7 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) void cmd_connect_connects_with_account(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -251,8 +252,6 @@ void cmd_connect_connects_with_account(void **state) will_return(accounts_create_full_jid, strdup("user@jabber.org/laptop")); - expect_any(cons_show, output); - jabber_connect_with_account = _mock_jabber_connect_with_account_result_check; expect_memory(_mock_jabber_connect_with_account_result_check, account, account, sizeof(ProfAccount)); will_return(_mock_jabber_connect_with_account_result_check, JABBER_CONNECTING); @@ -268,6 +267,7 @@ void cmd_connect_connects_with_account(void **state) void cmd_connect_frees_account_after_connecting(void **state) { + stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -279,8 +279,6 @@ void cmd_connect_frees_account_after_connecting(void **state) will_return(accounts_create_full_jid, strdup("user@jabber.org/laptop")); - expect_any(cons_show, output); - jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); diff --git a/tests/test_cmd_rooms.c b/tests/test_cmd_rooms.c index a31f67f3..01aeecbe 100644 --- a/tests/test_cmd_rooms.c +++ b/tests/test_cmd_rooms.c @@ -9,15 +9,17 @@ #include "xmpp/mock_xmpp.h" #include "ui/ui.h" +#include "ui/mock_ui.h" #include "command/commands.h" static void test_with_connection_status(jabber_conn_status_t status) { + mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); mock_connection_status(status); - expect_string(cons_show, output, "You are not currently connected."); + expect_cons_show("You are not currently connected."); gboolean result = cmd_rooms(NULL, *help); assert_true(result); diff --git a/tests/testsuite.c b/tests/testsuite.c index bb3fdbbc..2e8c2e30 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -194,7 +194,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), diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c index 6e3e190c..c70fbcf4 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 * @@ -28,6 +28,46 @@ char output[256]; +static +void _mock_cons_show(const char * const msg, ...) +{ + va_list args; + va_start(args, msg); + vsnprintf(output, sizeof(output), msg, args); + check_expected(output); + va_end(args); +} + +static +void _stub_cons_show(const char * const msg, ...) +{ +} + +void +mock_cons_show(void) +{ + cons_show = _mock_cons_show; + +} + +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); +} + // ui startup and control void ui_init(void) {} void ui_load_colours(void) {} @@ -196,15 +236,6 @@ void title_bar_set_typing(gboolean is_typing) {} void title_bar_draw(void) {} // console window actions -void cons_show(const char * const msg, ...) -{ - va_list args; - va_start(args, msg); - vsnprintf(output, sizeof(output), msg, args); - check_expected(output); - va_end(args); -} - void cons_about(void) {} void cons_help(void) {} void cons_basic_help(void) {} diff --git a/tests/ui/mock_ui.h b/tests/ui/mock_ui.h new file mode 100644 index 00000000..76d15614 --- /dev/null +++ b/tests/ui/mock_ui.h @@ -0,0 +1,14 @@ +#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); + +#endif From 5a5b1340aa799ee1d56961123a4770ebadb287bc Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 22:14:15 +0000 Subject: [PATCH 05/36] Dynamically load UI functions, fixed tests --- src/command/command.c | 44 ++--- src/command/commands.h | 2 +- src/ui/console.c | 303 +++++++++++++++++++------------- src/ui/core.c | 352 +++++++++++++++++++++++--------------- src/ui/inputwin.c | 45 +++-- src/ui/notifier.c | 42 +++-- src/ui/statusbar.c | 60 ++++--- src/ui/titlebar.c | 45 +++-- src/ui/ui.h | 339 ++++++++++++++++++------------------ tests/test_cmd_account.c | 9 +- tests/test_cmd_connect.c | 18 +- tests/ui/mock_ui.c | 360 +++++++++------------------------------ tests/ui/mock_ui.h | 13 ++ 13 files changed, 810 insertions(+), 822 deletions(-) diff --git a/src/command/command.c b/src/command/command.c index a13687a3..e37331ce 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -435,7 +435,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", "------------", @@ -445,7 +445,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", "------------------", @@ -470,7 +470,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", "-------------", @@ -480,7 +480,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", "--------------", @@ -488,7 +488,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", "--------------", @@ -496,7 +496,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]", "------------------------------", @@ -517,7 +517,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", "-------------------------", @@ -526,7 +526,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", "-------------", @@ -539,7 +539,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/chlog", - cmd_chlog, parse_args, 1, 1, cons_chlog_setting, + cmd_chlog, parse_args, 1, 1, &cons_chlog_setting, { "/chlog on|off", "Chat logging to file", { "/chlog on|off", "-------------", @@ -550,7 +550,7 @@ static struct cmd_t command_defs[] = NULL } } }, { "/grlog", - cmd_grlog, parse_args, 1, 1, cons_grlog_setting, + cmd_grlog, parse_args, 1, 1, &cons_grlog_setting, { "/grlog on|off", "Chat logging of chat rooms to file", { "/grlog on|off", "-------------", @@ -559,7 +559,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", "--------------", @@ -568,7 +568,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", "---------------", @@ -577,7 +577,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", "-------------", @@ -588,7 +588,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", "---------------", @@ -597,7 +597,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", "------------------", @@ -606,7 +606,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", "------------------", @@ -615,7 +615,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", "-----------------", @@ -624,7 +624,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", "-----------------------", @@ -645,7 +645,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", "---------------", @@ -714,7 +714,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]", "---------------------------", @@ -730,7 +730,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", "----------------", @@ -1086,7 +1086,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.h b/src/command/commands.h index aee74849..27a02249 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/ui/console.c b/src/ui/console.c index 43313dd1..57e5eb73 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -47,24 +47,26 @@ 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_time)(void) = _cons_show_time; -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_show_word)(const char * const) = _cons_show_word; -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) { @@ -84,6 +86,7 @@ cons_debug(const char * const msg, ...) ui_refresh(); } } +void (*cons_debug)(const char * const, ...) = _cons_debug; static void _cons_show(const char * const msg, ...) @@ -101,8 +104,8 @@ _cons_show(const char * const msg, ...) } void (*cons_show)(const char * const, ...) = _cons_show; -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,9 +122,10 @@ cons_show_error(const char * const msg, ...) wins_refresh_console(); cons_alert(); } +void (*cons_show_error)(const char * const, ...) = _cons_show_error; -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,9 +141,10 @@ cons_show_typing(const char * const barejid) wins_refresh_console(); cons_alert(); } +void (*cons_show_typing)(const char * const) = _cons_show_typing; -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,9 +160,10 @@ cons_show_incoming_message(const char * const short_from, const int win_index) wins_refresh_console(); cons_alert(); } +void (*cons_show_incoming_message)(const char * const, const int) = _cons_show_incoming_message; -void -cons_about(void) +static void +_cons_about(void) { ProfWin *console = wins_get_console(); int rows, cols; @@ -207,9 +213,10 @@ cons_about(void) wins_refresh_console(); cons_alert(); } +void (*cons_about)(void) = _cons_about; -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,9 +245,10 @@ cons_check_version(gboolean not_available_msg) } } } +void (*cons_check_version)(gboolean) = _cons_check_version; -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,9 +266,10 @@ cons_show_login_success(ProfAccount *account) wins_refresh_console(); cons_alert(); } +void (*cons_show_login_success)(ProfAccount*) = _cons_show_login_success; -void -cons_show_wins(void) +static void +_cons_show_wins(void) { ProfWin *console = wins_get_console(); cons_show(""); @@ -279,9 +288,10 @@ cons_show_wins(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_wins)(void) = _cons_show_wins; -void -cons_show_room_invites(GSList *invites) +static void +_cons_show_room_invites(GSList *invites) { cons_show(""); if (invites == NULL) { @@ -297,9 +307,10 @@ cons_show_room_invites(GSList *invites) wins_refresh_console(); cons_alert(); } +void (*cons_show_room_invites)(GSList*) = _cons_show_room_invites; -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,9 +441,10 @@ cons_show_info(PContact pcontact) wins_refresh_console(); cons_alert(); } +void (*cons_show_info)(PContact) = _cons_show_info; -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,9 +517,10 @@ cons_show_caps(const char * const contact, Resource *resource) wins_refresh_console(); cons_alert(); } +void (*cons_show_caps)(const char * const, Resource*) = _cons_show_caps; -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,9 +545,12 @@ cons_show_software_version(const char * const jid, const char * const presence, wins_refresh_console(); cons_alert(); } +void (*cons_show_software_version)(const char * const, const char * const, + const char * const, const char * const, + const char * const) = _cons_show_software_version; -void -cons_show_received_subs(void) +static void +_cons_show_received_subs(void) { GSList *received = presence_get_subscription_requests(); if (received == NULL) { @@ -552,9 +568,10 @@ cons_show_received_subs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_received_subs)(void) = _cons_show_received_subs; -void -cons_show_sent_subs(void) +static void +_cons_show_sent_subs(void) { if (roster_has_pending_subscriptions()) { GSList *contacts = roster_get_contacts(); @@ -574,9 +591,10 @@ cons_show_sent_subs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_sent_subs)(void) = _cons_show_sent_subs; -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,9 +616,10 @@ cons_show_room_list(GSList *rooms, const char * const conference_node) wins_refresh_console(); cons_alert(); } +void (*cons_show_room_list)(GSList*, const char * const) = _cons_show_room_list; -void -cons_show_bookmarks(const GList *list) +static void +_cons_show_bookmarks(const GList *list) { Bookmark *item; @@ -628,9 +647,10 @@ cons_show_bookmarks(const GList *list) wins_refresh_console(); cons_alert(); } +void (*cons_show_bookmarks)(const GList*) = _cons_show_bookmarks; -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,9 +691,10 @@ cons_show_disco_info(const char *jid, GSList *identities, GSList *features) cons_alert(); } } +void (*cons_show_disco_info)(const char*, GSList*, GSList*) = _cons_show_disco_info; -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,9 +717,10 @@ cons_show_disco_items(GSList *items, const char * const jid) wins_refresh_console(); cons_alert(); } +void (*cons_show_disco_items)(GSList*, const char * const) = _cons_show_disco_items; -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,9 +733,10 @@ cons_show_status(const char * const barejid) wins_refresh_console(); cons_alert(); } +void (*cons_show_status)(const char * const) = _cons_show_status; -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,9 +771,11 @@ cons_show_room_invite(const char * const invitor, const char * const room, wins_refresh_console(); cons_alert(); } +void (*cons_show_room_invite)(const char * const, const char * const, + const char * const) = _cons_show_room_invite; -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,9 +803,10 @@ cons_show_account_list(gchar **accounts) wins_refresh_console(); cons_alert(); } +void (*cons_show_account_list)(gchar**) = _cons_show_account_list; -void -cons_show_account(ProfAccount *account) +static void +_cons_show_account(ProfAccount *account) { ProfWin *console = wins_get_console(); cons_show(""); @@ -901,9 +927,10 @@ cons_show_account(ProfAccount *account) wins_refresh_console(); cons_alert(); } +void (*cons_show_account)(ProfAccount*) = _cons_show_account; -void -cons_theme_setting(void) +static void +_cons_theme_setting(void) { gchar *theme = prefs_get_string(PREF_THEME); if (theme == NULL) { @@ -912,72 +939,80 @@ cons_theme_setting(void) cons_show("Theme (/theme) : %s", theme); } } +void (*cons_theme_setting)(void) = _cons_theme_setting; -void -cons_beep_setting(void) +static void +_cons_beep_setting(void) { if (prefs_get_boolean(PREF_BEEP)) cons_show("Terminal beep (/beep) : ON"); else cons_show("Terminal beep (/beep) : OFF"); } +void (*cons_beep_setting)(void) = _cons_beep_setting; -void -cons_flash_setting(void) +static void +_cons_flash_setting(void) { if (prefs_get_boolean(PREF_FLASH)) cons_show("Terminal flash (/flash) : ON"); else cons_show("Terminal flash (/flash) : OFF"); } +void (*cons_flash_setting)(void) = _cons_flash_setting; -void -cons_splash_setting(void) +static void +_cons_splash_setting(void) { if (prefs_get_boolean(PREF_SPLASH)) cons_show("Splash screen (/splash) : ON"); else cons_show("Splash screen (/splash) : OFF"); } +void (*cons_splash_setting)(void) = _cons_splash_setting; -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)); else cons_show("Autoconnect (/autoconnect) : OFF"); } +void (*cons_autoconnect_setting)(void) = _cons_autoconnect_setting; -void -cons_vercheck_setting(void) +static void +_cons_vercheck_setting(void) { if (prefs_get_boolean(PREF_VERCHECK)) cons_show("Version checking (/vercheck) : ON"); else cons_show("Version checking (/vercheck) : OFF"); } +void (*cons_vercheck_setting)(void) = _cons_vercheck_setting; -void -cons_mouse_setting(void) +static void +_cons_mouse_setting(void) { if (prefs_get_boolean(PREF_MOUSE)) cons_show("Mouse handling (/mouse) : ON"); else cons_show("Mouse handling (/mouse) : OFF"); } +void (*cons_mouse_setting)(void) = _cons_mouse_setting; -void -cons_statuses_setting(void) +static void +_cons_statuses_setting(void) { if (prefs_get_boolean(PREF_STATUSES)) cons_show("Status (/statuses) : ON"); else cons_show("Status (/statuses) : OFF"); } +void (*cons_statuses_setting)(void) = _cons_statuses_setting; -void -cons_titlebar_setting(void) +static void +_cons_titlebar_setting(void) { if (prefs_get_boolean(PREF_TITLEBARVERSION)) { cons_show("Titlebar display (/titlebar) : version"); @@ -985,9 +1020,10 @@ cons_titlebar_setting(void) cons_show("Titlebar display (/titlebar) : NONE"); } } +void (*cons_titlebar_setting)(void) = _cons_titlebar_setting; -void -cons_show_ui_prefs(void) +static void +_cons_show_ui_prefs(void) { cons_show("UI preferences:"); cons_show(""); @@ -1003,9 +1039,10 @@ cons_show_ui_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_ui_prefs)(void) = _cons_show_ui_prefs; -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,9 +1073,10 @@ cons_notify_setting(void) cons_show("Reminder period (/notify remind) : %d seconds", remind_period); } } +void (*cons_notify_setting)(void) = _cons_notify_setting; -void -cons_show_desktop_prefs(void) +static void +_cons_show_desktop_prefs(void) { cons_show("Desktop notification preferences:"); cons_show(""); @@ -1047,36 +1085,40 @@ cons_show_desktop_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_desktop_prefs)(void) = _cons_show_desktop_prefs; -void -cons_states_setting(void) +static void +_cons_states_setting(void) { if (prefs_get_boolean(PREF_STATES)) cons_show("Send chat states (/states) : ON"); else cons_show("Send chat states (/states) : OFF"); } +void (*cons_states_setting)(void) = _cons_states_setting; -void -cons_outtype_setting(void) +static void +_cons_outtype_setting(void) { if (prefs_get_boolean(PREF_OUTTYPE)) cons_show("Send composing (/outtype) : ON"); else cons_show("Send composing (/outtype) : OFF"); } +void (*cons_outtype_setting)(void) = _cons_outtype_setting; -void -cons_intype_setting(void) +static void +_cons_intype_setting(void) { if (prefs_get_boolean(PREF_INTYPE)) cons_show("Show typing (/intype) : ON"); else cons_show("Show typing (/intype) : OFF"); } +void (*cons_intype_setting)(void) = _cons_intype_setting; -void -cons_gone_setting(void) +static void +_cons_gone_setting(void) { gint gone_time = prefs_get_gone(); if (gone_time == 0) { @@ -1087,18 +1129,20 @@ cons_gone_setting(void) cons_show("Leave conversation (/gone) : %d minutes", gone_time); } } +void (*cons_gone_setting)(void) = _cons_gone_setting; -void -cons_history_setting(void) +static void +_cons_history_setting(void) { if (prefs_get_boolean(PREF_HISTORY)) cons_show("Chat history (/history) : ON"); else cons_show("Chat history (/history) : OFF"); } +void (*cons_history_setting)(void) = _cons_history_setting; -void -cons_show_chat_prefs(void) +static void +_cons_show_chat_prefs(void) { cons_show("Chat preferences:"); cons_show(""); @@ -1111,33 +1155,37 @@ cons_show_chat_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_chat_prefs)(void) = _cons_show_chat_prefs; -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_log_setting)(void) = _cons_log_setting; -void -cons_chlog_setting(void) +static void +_cons_chlog_setting(void) { if (prefs_get_boolean(PREF_CHLOG)) cons_show("Chat logging (/chlog) : ON"); else cons_show("Chat logging (/chlog) : OFF"); } +void (*cons_chlog_setting)(void) = _cons_chlog_setting; -void -cons_grlog_setting(void) +static void +_cons_grlog_setting(void) { if (prefs_get_boolean(PREF_GRLOG)) cons_show("Groupchat logging (/grlog) : ON"); else cons_show("Groupchat logging (/grlog) : OFF"); } +void (*cons_grlog_setting)(void) = _cons_grlog_setting; -void -cons_show_log_prefs(void) +static void +_cons_show_log_prefs(void) { cons_show("Logging preferences:"); cons_show(""); @@ -1148,9 +1196,10 @@ cons_show_log_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_log_prefs)(void) = _cons_show_log_prefs; -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,9 +1222,10 @@ cons_autoaway_setting(void) cons_show("Autoaway check (/autoaway check) : OFF"); } } +void (*cons_autoaway_setting)(void) = _cons_autoaway_setting; -void -cons_show_presence_prefs(void) +static void +_cons_show_presence_prefs(void) { cons_show("Presence preferences:"); cons_show(""); @@ -1184,9 +1234,10 @@ cons_show_presence_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_presence_prefs)(void) = _cons_show_presence_prefs; -void -cons_reconnect_setting(void) +static void +_cons_reconnect_setting(void) { gint reconnect_interval = prefs_get_reconnect(); if (reconnect_interval == 0) { @@ -1197,9 +1248,10 @@ cons_reconnect_setting(void) cons_show("Reconnect interval (/reconnect) : %d seconds", reconnect_interval); } } +void (*cons_reconnect_setting)(void) = _cons_reconnect_setting; -void -cons_autoping_setting(void) +static void +_cons_autoping_setting(void) { gint autoping_interval = prefs_get_autoping(); if (autoping_interval == 0) { @@ -1210,16 +1262,18 @@ cons_autoping_setting(void) cons_show("Autoping interval (/autoping) : %d seconds", autoping_interval); } } +void (*cons_autoping_setting)(void) = _cons_autoping_setting; -void -cons_priority_setting(void) +static void +_cons_priority_setting(void) { gint priority = prefs_get_priority(); cons_show("Priority (/priority) : %d", priority); } +void (*cons_priority_setting)(void) = _cons_priority_setting; -void -cons_show_connection_prefs(void) +static void +_cons_show_connection_prefs(void) { cons_show("Connection preferences:"); cons_show(""); @@ -1230,9 +1284,10 @@ cons_show_connection_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_show_connection_prefs)(void) = _cons_show_connection_prefs; -void -cons_show_themes(GSList *themes) +static void +_cons_show_themes(GSList *themes) { cons_show(""); @@ -1249,9 +1304,10 @@ cons_show_themes(GSList *themes) wins_refresh_console(); cons_alert(); } +void (*cons_show_themes)(GSList*) = _cons_show_themes; -void -cons_prefs(void) +static void +_cons_prefs(void) { cons_show(""); cons_show_ui_prefs(); @@ -1270,9 +1326,10 @@ cons_prefs(void) wins_refresh_console(); cons_alert(); } +void (*cons_prefs)(void) = _cons_prefs; -void -cons_help(void) +static void +_cons_help(void) { cons_show(""); cons_show("Choose a help option:"); @@ -1293,9 +1350,10 @@ cons_help(void) wins_refresh_console(); cons_alert(); } +void (*cons_help)(void) = _cons_help; -void -cons_navigation_help(void) +static void +_cons_navigation_help(void) { cons_show(""); cons_show("Navigation:"); @@ -1317,9 +1375,10 @@ cons_navigation_help(void) wins_refresh_console(); cons_alert(); } +void (*cons_navigation_help)(void) = _cons_navigation_help; -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,9 +1392,10 @@ cons_show_roster_group(const char * const group, GSList *list) wins_refresh_console(); cons_alert(); } +void (*cons_show_roster_group)(const char * const, GSList*) = _cons_show_roster_group; -void -cons_show_roster(GSList *list) +static void +_cons_show_roster(GSList *list) { cons_show(""); cons_show("Roster:"); @@ -1344,9 +1404,10 @@ cons_show_roster(GSList *list) wins_refresh_console(); cons_alert(); } +void (*cons_show_roster)(GSList*) = _cons_show_roster; -void -cons_show_contacts(GSList *list) +static void +_cons_show_contacts(GSList *list) { ProfWin *console = wins_get_console(); GSList *curr = list; @@ -1363,14 +1424,16 @@ cons_show_contacts(GSList *list) wins_refresh_console(); cons_alert(); } +void (*cons_show_contacts)(GSList*) = _cons_show_contacts; -void -cons_alert(void) +static void +_cons_alert(void) { if (ui_current_win_type() != WIN_CONSOLE) { status_bar_new(1); } } +void (*cons_alert)(void) = _cons_alert; static void _cons_splash_logo(void) diff --git a/src/ui/core.c b/src/ui/core.c index 1ff41b7d..b68d2edc 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(); @@ -95,18 +95,20 @@ ui_init(void) ui_idle_time = g_timer_new(); wins_refresh_current(); } +void (*ui_init)(void) = _ui_init; -void -ui_refresh(void) +static void +_ui_refresh(void) { _ui_draw_win_title(); title_bar_refresh(); status_bar_refresh(); inp_put_back(); } +void (*ui_refresh)(void) = _ui_refresh; -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 @@ -123,23 +125,26 @@ ui_get_idle_time(void) unsigned long ms_elapsed = seconds_elapsed * 1000.0; return ms_elapsed; } +unsigned long (*ui_get_idle_time)(void) = _ui_get_idle_time; -void -ui_reset_idle_time(void) +static void +_ui_reset_idle_time(void) { g_timer_start(ui_idle_time); } +void (*ui_reset_idle_time)(void) = _ui_reset_idle_time; -void -ui_close(void) +static void +_ui_close(void) { notifier_uninit(); wins_destroy(); endwin(); } +void (*ui_close)(void) = _ui_close; -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(); @@ -148,9 +153,10 @@ ui_resize(const int ch, const char * const input, const int size) inp_win_resize(input, size); wins_refresh_current(); } +void (*ui_resize)(const int, const char * const, const int) = _ui_resize; -void -ui_load_colours(void) +static void +_ui_load_colours(void) { if (has_colors()) { use_default_colors(); @@ -158,22 +164,25 @@ ui_load_colours(void) theme_init_colours(); } } +void (*ui_load_colours)(void) = _ui_load_colours; -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_win_exists)(int) = _ui_win_exists; -gboolean -ui_duck_exists(void) +static gboolean +_ui_duck_exists(void) { return wins_duck_exists(); } +gboolean (*ui_duck_exists)(void) = _ui_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); @@ -209,16 +218,18 @@ ui_contact_typing(const char * const barejid) notify_typing(display_usr); } } +void (*ui_contact_typing)(const char * const) = _ui_contact_typing; -GSList * -ui_get_recipients(void) +static GSList * +_ui_get_recipients(void) { GSList *recipients = wins_get_chat_recipients(); return recipients; } +GSList * (*ui_get_recipients)(void) = _ui_get_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; @@ -293,9 +304,11 @@ ui_incoming_msg(const char * const from, const char * const message, free(display_from); } +void (*ui_incoming_msg)(const char * const, const char * const, + GTimeVal*, gboolean) = _ui_incoming_msg; -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); @@ -303,39 +316,45 @@ ui_roster_add(const char * const barejid, const char * const name) cons_show("Roster item added: %s", barejid); } } +void (*ui_roster_add)(const char * const, const char * const) = _ui_roster_add; -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_roster_remove)(const char * const) = _ui_roster_remove; -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_already_in_group)(const char * const, const char * const) = _ui_contact_already_in_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_contact_not_in_group)(const char * const, const char * const) = _ui_contact_not_in_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_added)(const char * const, const char * const) = _ui_group_added; -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_group_removed)(const char * const, const char * const) = _ui_group_removed; -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."); @@ -349,9 +368,11 @@ ui_handle_error_message(const char * const from, const char * const err_msg) ui_print_error_from_recipient(from, err_msg); } +void (*ui_handle_error_message)(const char * const, + const char * const) = _ui_handle_error_message; -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); @@ -375,9 +396,11 @@ ui_contact_online(const char * const barejid, const char * const resource, wins_refresh_current(); } } +void (*ui_contact_online)(const char * const, const char * const, + const char * const, const char * const, GDateTime*) = _ui_contact_online; -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); @@ -403,18 +426,21 @@ ui_contact_offline(const char * const from, const char * const show, wins_refresh_current(); } } +void (*ui_contact_offline)(const char * const, const char * const, + const char * const) = _ui_contact_offline; -void -ui_disconnected(void) +static void +_ui_disconnected(void) { wins_lost_connection(); title_bar_set_status(CONTACT_OFFLINE); status_bar_clear_message(); status_bar_refresh(); } +void (*ui_disconnected)(void) = _ui_disconnected; -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); @@ -424,9 +450,11 @@ ui_handle_special_keys(const wint_t * const ch, const char * const inp, } } +void (*ui_handle_special_keys)(const wint_t * const, const char * const, + const int) = _ui_handle_special_keys; -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) { @@ -446,9 +474,10 @@ ui_close_connected_win(int index) } } } +void (*ui_close_connected_win)(int index) = _ui_close_connected_win; -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(); @@ -473,9 +502,10 @@ ui_close_all_wins(void) return count; } +int (*ui_close_all_wins)(void) = _ui_close_all_wins; -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(); @@ -500,9 +530,10 @@ ui_close_read_wins(void) return count; } +int (*ui_close_read_wins)(void) = _ui_close_read_wins; -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); @@ -534,9 +565,10 @@ ui_switch_win(const int i) wins_refresh_current(); } } +void (*ui_switch_win)(const int) = _ui_switch_win; -void -ui_next_win(void) +static void +_ui_next_win(void) { ui_current_page_off(); ProfWin *new_current = wins_get_next(); @@ -567,9 +599,10 @@ ui_next_win(void) } wins_refresh_current(); } +void (*ui_next_win)(void) = _ui_next_win; -void -ui_previous_win(void) +static void +_ui_previous_win(void) { ui_current_page_off(); ProfWin *new_current = wins_get_previous(); @@ -600,15 +633,17 @@ ui_previous_win(void) } wins_refresh_current(); } +void (*ui_previous_win)(void) = _ui_previous_win; -void -ui_clear_current(void) +static void +_ui_clear_current(void) { wins_clear_current(); } +void (*ui_clear_current)(void) = _ui_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); @@ -617,9 +652,10 @@ ui_close_current(void) status_bar_active(1); title_bar_title(); } +void (*ui_close_current)(void) = _ui_close_current; -void -ui_close_win(int index) +static void +_ui_close_win(int index) { wins_close_by_num(index); status_bar_current(1); @@ -628,9 +664,10 @@ ui_close_win(int index) wins_refresh_current(); } +void (*ui_close_win)(int) = _ui_close_win; -void -ui_tidy_wins(void) +static void +_ui_tidy_wins(void) { gboolean tidied = wins_tidy(); @@ -640,9 +677,10 @@ ui_tidy_wins(void) cons_show("No tidy needed."); } } +void (*ui_tidy_wins)(void) = _ui_tidy_wins; -void -ui_prune_wins(void) +static void +_ui_prune_wins(void) { jabber_conn_status_t conn_status = jabber_get_connection_status(); gboolean pruned = FALSE; @@ -685,43 +723,49 @@ ui_prune_wins(void) cons_show("No prune needed."); } } +void (*ui_prune_wins)(void) = _ui_prune_wins; -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; } +win_type_t (*ui_current_win_type)(void) = _ui_current_win_type; -int -ui_current_win_index(void) +static int +_ui_current_win_index(void) { return wins_get_current_num(); } +int (*ui_current_win_index)(void) = _ui_current_win_index; -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; } +win_type_t (*ui_win_type)(int index) = _ui_win_type; -char * -ui_recipient(int index) +static char * +_ui_recipient(int index) { ProfWin *window = wins_get_by_num(index); return window->from; } +char * (*ui_recipient)(int) = _ui_recipient; -char * -ui_current_recipient(void) +static char * +_ui_current_recipient(void) { ProfWin *current = wins_get_current(); return current->from; } +char* (*ui_current_recipient)(void) = _ui_current_recipient; -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; @@ -730,25 +774,28 @@ ui_current_print_line(const char * const msg, ...) va_end(arg); win_refresh(current); } +void (*ui_current_print_line)(const char * const, ...) = _ui_current_print_line; -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_error_line)(const char * const) = _ui_current_error_line; -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_current_page_off)(void) = _ui_current_page_off; -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; @@ -761,9 +808,10 @@ ui_print_error_from_recipient(const char * const from, const char *err_msg) } } } +void (*ui_print_error_from_recipient)(const char * const, const char *) = _ui_print_error_from_recipient; -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]; @@ -796,9 +844,11 @@ ui_print_system_msg_from_recipient(const char * const from, const char *message) wins_refresh_current(); } } +void (*ui_print_system_msg_from_recipient)(const char * const, + const char *) = _ui_print_system_msg_from_recipient; -void -ui_recipient_gone(const char * const barejid) +static void +_ui_recipient_gone(const char * const barejid) { if (barejid == NULL) return; @@ -819,9 +869,10 @@ ui_recipient_gone(const char * const barejid) } } } +void (*ui_recipient_gone)(const char * const) = _ui_recipient_gone; -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); @@ -858,18 +909,20 @@ ui_new_chat_win(const char * const to) ui_switch_win(num); } +void (*ui_new_chat_win)(const char * const) = _ui_new_chat_win; -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); ui_switch_win(num); win_print_line(window, '-', 0, "Type ':help' to find out more."); } +void (*ui_create_duck_win)(void) = _ui_create_duck_win; -void -ui_open_duck_win(void) +static void +_ui_open_duck_win(void) { ProfWin *window = wins_get_by_recipient("DuckDuckGo search"); if (window != NULL) { @@ -877,9 +930,10 @@ ui_open_duck_win(void) ui_switch_win(num); } } +void (*ui_open_duck_win)(void) = _ui_open_duck_win; -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) { @@ -893,9 +947,10 @@ ui_duck(const char * const query) wprintw(window->win, "\n"); } } +void (*ui_duck)(const char * const) = _ui_duck; -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"); @@ -926,9 +981,10 @@ ui_duck_result(const char * const result) wprintw(window->win, "\n"); } } +void (*ui_duck_result)(const char * const) = _ui_duck_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); @@ -978,9 +1034,11 @@ ui_outgoing_msg(const char * const from, const char * const to, } ui_switch_win(num); } +void (*ui_outgoing_msg)(const char * const, const char * const, + const char * const) = _ui_outgoing_msg; -void -ui_room_join(Jid *jid) +static void +_ui_room_join(Jid *jid) { ProfWin *window = wins_get_by_recipient(jid->barejid); int num = 0; @@ -993,9 +1051,10 @@ ui_room_join(Jid *jid) num = wins_get_num(window); ui_switch_win(num); } +void (*ui_room_join)(Jid *) = _ui_room_join; -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); @@ -1048,9 +1107,10 @@ ui_room_roster(const char * const room, GList *roster, const char * const presen wins_refresh_current(); } } +void (*ui_room_roster)(const char * const, GList*, const char * const) = _ui_room_roster; -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); @@ -1063,9 +1123,10 @@ ui_room_member_offline(const char * const room, const char * const nick) wins_refresh_current(); } } +void (*ui_room_member_offline)(const char * const, const char * const) = _ui_room_member_offline; -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); @@ -1079,9 +1140,11 @@ ui_room_member_online(const char * const room, const char * const nick, wins_refresh_current(); } } +void (*ui_room_member_online)(const char * const, const char * const, + const char * const, const char * const) = _ui_room_member_online; -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); @@ -1094,9 +1157,11 @@ ui_room_member_presence(const char * const room, const char * const nick, wins_refresh_current(); } } +void (*ui_room_member_presence)(const char * const, const char * const, + const char * const, const char * const) = _ui_room_member_presence; -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); @@ -1110,9 +1175,11 @@ ui_room_member_nick_change(const char * const room, wins_refresh_current(); } } +void (*ui_room_member_nick_change)(const char * const, + const char * const, const char * const) = _ui_room_member_nick_change; -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); @@ -1125,9 +1192,10 @@ ui_room_nick_change(const char * const room, const char * const nick) wins_refresh_current(); } } +void (*ui_room_nick_change)(const char * const, const char * const) = _ui_room_nick_change; -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); @@ -1151,9 +1219,11 @@ ui_room_history(const char * const room_jid, const char * const nick, wins_refresh_current(); } } +void (*ui_room_history)(const char * const, const char * const, + GTimeVal, const char * const) = _ui_room_history; -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); @@ -1223,9 +1293,11 @@ ui_room_message(const char * const room_jid, const char * const nick, } } } +void (*ui_room_message)(const char * const, const char * const, + const char * const) = _ui_room_message; -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); @@ -1246,9 +1318,10 @@ ui_room_subject(const char * const room_jid, const char * const subject) status_bar_new(num); } } +void (*ui_room_subject)(const char * const, const char * const) = _ui_room_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); @@ -1269,9 +1342,10 @@ ui_room_broadcast(const char * const room_jid, const char * const message) status_bar_new(num); } } +void (*ui_room_broadcast)(const char * const, const char * const) = _ui_room_broadcast; -void -ui_status(void) +static void +_ui_status(void) { char *recipient = ui_current_recipient(); PContact pcontact = roster_get_contact(recipient); @@ -1283,9 +1357,10 @@ ui_status(void) win_print_line(current, '-', 0, "Error getting contact info."); } } +void (*ui_status)(void) = _ui_status; -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); @@ -1299,9 +1374,10 @@ ui_status_private(void) jid_destroy(jid); } +void (*ui_status_private)(void) = _ui_status_private; -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(); @@ -1312,15 +1388,17 @@ ui_status_room(const char * const contact) win_print_line(current, '-', 0, "No such participant \"%s\" in room.", contact); } } +void (*ui_status_room)(const char * const) = _ui_status_room; -gint -ui_unread(void) +static gint +_ui_unread(void) { return wins_get_total_unread(); } +gint (*ui_unread)(void) = _ui_unread; -int -ui_win_unread(int index) +static int +_ui_win_unread(int index) { ProfWin *window = wins_get_by_num(index); if (window != NULL) { @@ -1329,9 +1407,10 @@ ui_win_unread(int index) return 0; } } +int (*ui_win_unread)(int) = _ui_win_unread; -char * -ui_ask_password(void) +static char * +_ui_ask_password(void) { char *passwd = malloc(sizeof(char) * (MAX_PASSWORD_SIZE + 1)); status_bar_get_password(); @@ -1342,6 +1421,7 @@ ui_ask_password(void) return passwd; } +char * (*ui_ask_password)(void) = _ui_ask_password; static void _ui_draw_win_title(void) diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 3306a246..040e87b2 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); @@ -73,9 +73,10 @@ create_input_window(void) wmove(inp_win, 0, 0); _inp_win_refresh(); } +void (*create_input_window)(void) = _create_input_window; -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); @@ -91,21 +92,24 @@ inp_win_resize(const char * const input, const int size) _inp_win_refresh(); } +void (*inp_win_resize)(const char * const, const int) = _inp_win_resize; -void -inp_non_block(void) +static void +_inp_non_block(void) { wtimeout(inp_win, 20); } +void (*inp_non_block)(void) = _inp_non_block; -void -inp_block(void) +static void +_inp_block(void) { wtimeout(inp_win, -1); } +void (*inp_block)(void) = _inp_block; -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; @@ -202,9 +206,10 @@ inp_get_char(char *input, int *size) return ch; } +wint_t (*inp_get_char)(char*, int*) = _inp_get_char; -void -inp_get_password(char *passwd) +static void +_inp_get_password(char *passwd) { _clear_input(); _inp_win_refresh(); @@ -214,15 +219,17 @@ inp_get_password(char *passwd) echo(); status_bar_clear(); } +void (*inp_get_password)(char*) = _inp_get_password; -void -inp_put_back(void) +static void +_inp_put_back(void) { _inp_win_refresh(); } +void (*inp_put_back)(void) = _inp_put_back; -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); @@ -233,14 +240,16 @@ inp_replace_input(char *input, const char * const new_input, int *size) waddstr(inp_win, input); _go_to_end(display_size); } +void (*inp_replace_input)(char*, const char * const, int*) = _inp_replace_input; -void -inp_win_reset(void) +static void +_inp_win_reset(void) { _clear_input(); pad_start = 0; _inp_win_refresh(); } +void (*inp_win_reset)(void) = _inp_win_reset; static void _clear_input(void) diff --git a/src/ui/notifier.c b/src/ui/notifier.c index 403c215e..d0319cb9 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -39,16 +39,17 @@ 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_init)(void) = _notifier_init; -void -notifier_uninit(void) +static void +_notifier_uninit(void) { #ifdef HAVE_LIBNOTIFY if (notify_is_initted()) { @@ -56,18 +57,20 @@ notifier_uninit(void) } #endif } +void (*notifier_uninit)(void) = _notifier_uninit; -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); _notify(message, 10000, "Incoming message"); } +void (*notify_typing)(const char * const) = _notify_typing; -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: "); @@ -82,18 +85,21 @@ notify_invite(const char * const from, const char * const room, g_string_free(message, TRUE); } +void (*notify_invite)(const char * const, const char * const, + const char * const) = _notify_invite; -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); _notify(message, 10000, "incoming message"); } +void (*notify_message)(const char * const, int) = _notify_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(""); @@ -104,18 +110,21 @@ notify_room_message(const char * const handle, const char * const room, int win) g_string_free(text, TRUE); } +void (*notify_room_message)(const char * const, const char * const, + int) = _notify_room_message; -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); _notify(message->str, 10000, "Incomming message"); g_string_free(message, TRUE); } +void (*notify_subscription)(const char * const) = _notify_subscription; -void -notify_remind(void) +static void +_notify_remind(void) { gint unread = ui_unread(); gint open = muc_invite_count(); @@ -158,6 +167,7 @@ notify_remind(void) g_string_free(text, TRUE); } +void (*notify_remind)(void) = _notify_remind; static void _notify(const char * const message, int timeout, diff --git a/src/ui/statusbar.c b/src/ui/statusbar.c index 16bd31c9..8a578a56 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); @@ -83,9 +83,10 @@ create_status_bar(void) dirty = TRUE; } +void (*create_status_bar)(void) = _create_status_bar; -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); @@ -107,9 +108,10 @@ status_bar_refresh(void) g_date_time_unref(now_time); } +void (*status_bar_refresh)(void) = _status_bar_refresh; -void -status_bar_resize(void) +static void +_status_bar_resize(void) { int rows, cols; getmaxyx(stdscr, rows, cols); @@ -133,9 +135,10 @@ status_bar_resize(void) last_time = g_date_time_new_now_local(); dirty = TRUE; } +void (*status_bar_resize)(void) = _status_bar_resize; -void -status_bar_set_all_inactive(void) +static void +_status_bar_set_all_inactive(void) { int i = 0; for (i = 0; i < 12; i++) { @@ -147,9 +150,10 @@ status_bar_set_all_inactive(void) g_hash_table_remove_all(remaining_active); g_hash_table_remove_all(remaining_new); } +void (*status_bar_set_all_inactive)(void) = _status_bar_set_all_inactive; -void -status_bar_current(int i) +static void +_status_bar_current(int i) { if (i == 0) { current = 10; @@ -164,9 +168,10 @@ status_bar_current(int i) mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, COLOUR_STATUS_BRACKET); } +void (*status_bar_current)(int) = _status_bar_current; -void -status_bar_inactive(const int win) +static void +_status_bar_inactive(const int win) { int true_win = win; if (true_win == 0) { @@ -204,9 +209,10 @@ status_bar_inactive(const int win) _mark_inactive(true_win); } } +void (*status_bar_inactive)(const int) = _status_bar_inactive; -void -status_bar_active(const int win) +static void +_status_bar_active(const int win) { int true_win = win; if (true_win == 0) { @@ -238,9 +244,10 @@ status_bar_active(const int win) _mark_active(true_win); } } +void (*status_bar_active)(const int) = _status_bar_active; -void -status_bar_new(const int win) +static void +_status_bar_new(const int win) { int true_win = win; if (true_win == 0) { @@ -261,16 +268,18 @@ status_bar_new(const int win) _mark_new(true_win); } } +void (*status_bar_new)(const int) = _status_bar_new; -void -status_bar_get_password(void) +static void +_status_bar_get_password(void) { status_bar_print_message("Enter password:"); dirty = TRUE; } +void (*status_bar_get_password)(void) = _status_bar_get_password; -void -status_bar_print_message(const char * const msg) +static void +_status_bar_print_message(const char * const msg) { werase(status_bar); @@ -291,9 +300,10 @@ status_bar_print_message(const char * const msg) _update_win_statuses(); dirty = TRUE; } +void (*status_bar_print_message)(const char * const) = _status_bar_print_message; -void -status_bar_clear(void) +static void +_status_bar_clear(void) { if (message != NULL) { free(message); @@ -319,9 +329,10 @@ status_bar_clear(void) dirty = TRUE; } +void (*status_bar_clear)(void) = _status_bar_clear; -void -status_bar_clear_message(void) +static void +_status_bar_clear_message(void) { if (message != NULL) { free(message); @@ -340,6 +351,7 @@ status_bar_clear_message(void) _update_win_statuses(); dirty = TRUE; } +void (*status_bar_clear_message)(void) = _status_bar_clear_message; static void _status_bar_update_time(void) diff --git a/src/ui/titlebar.c b/src/ui/titlebar.c index 791a5fbe..79baae1d 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); @@ -48,9 +48,10 @@ create_title_bar(void) title_bar_set_status(CONTACT_OFFLINE); dirty = TRUE; } +void (*create_title_bar)(void) = _create_title_bar; -void -title_bar_title(void) +static void +_title_bar_title(void) { werase(title_bar); recipient = NULL; @@ -59,9 +60,10 @@ title_bar_title(void) _title_bar_draw_status(); dirty = TRUE; } +void (*title_bar_title)(void) = _title_bar_title; -void -title_bar_resize(void) +static void +_title_bar_resize(void) { int cols = getmaxx(stdscr); @@ -72,9 +74,10 @@ title_bar_resize(void) _title_bar_draw_status(); dirty = TRUE; } +void (*title_bar_resize)(void) = _title_bar_resize; -void -title_bar_refresh(void) +static void +_title_bar_refresh(void) { if (recipient != NULL) { @@ -106,9 +109,10 @@ title_bar_refresh(void) dirty = FALSE; } } +void (*title_bar_refresh)(void) = _title_bar_refresh; -void -title_bar_show(const char * const title) +static void +_title_bar_show(const char * const title) { if (current_title != NULL) free(current_title); @@ -117,16 +121,18 @@ title_bar_show(const char * const title) strcpy(current_title, title); _title_bar_draw_title(); } +void (*title_bar_show)(const char * const) = _title_bar_show; -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_status)(contact_presence_t) = _title_bar_set_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); @@ -143,9 +149,10 @@ title_bar_set_recipient(const char * const from) dirty = TRUE; } +void (*title_bar_set_recipient)(const char * const) = _title_bar_set_recipient; -void -title_bar_set_typing(gboolean is_typing) +static void +_title_bar_set_typing(gboolean is_typing) { if (is_typing) { if (typing_elapsed != NULL) { @@ -169,14 +176,16 @@ title_bar_set_typing(gboolean is_typing) dirty = TRUE; } +void (*title_bar_set_typing)(gboolean) = _title_bar_set_typing; -void -title_bar_draw(void) +static void +_title_bar_draw(void) { werase(title_bar); _title_bar_draw_status(); _title_bar_draw_title(); } +void (*title_bar_draw)(void) = _title_bar_draw; static void _title_bar_draw_status(void) diff --git a/src/ui/ui.h b/src/ui/ui.h index 539146b7..482d8735 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -42,218 +42,213 @@ #define INP_WIN_MAX 1000 // 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_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/tests/test_cmd_account.c b/tests/test_cmd_account.c index 0ef3c0ee..b2650d8e 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -33,6 +33,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); ProfAccount *account = malloc(sizeof(ProfAccount)); gchar *args[] = { NULL }; @@ -43,7 +44,7 @@ void cmd_account_shows_account_when_connected_and_no_args(void **state) expect_any(accounts_get_account, name); will_return(accounts_get_account, account); - expect_memory(cons_show_account, account, account, sizeof(ProfAccount)); + expect_cons_show_account(account); expect_any(accounts_free_account, account); @@ -56,6 +57,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "list", NULL }; @@ -67,7 +69,7 @@ void cmd_account_list_shows_accounts(void **state) will_return(accounts_get_list, 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); @@ -110,6 +112,7 @@ void cmd_account_show_shows_message_when_account_does_not_exist(void **state) void cmd_account_show_shows_account_when_exists(void **state) { + mock_cons_show_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "show", "account_name", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -117,7 +120,7 @@ void cmd_account_show_shows_account_when_exists(void **state) expect_any(accounts_get_account, name); will_return(accounts_get_account, account); - expect_memory(cons_show_account, account, account, sizeof(ProfAccount)); + expect_cons_show_account(account); expect_any(accounts_free_account, account); diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index f4545fb2..0095d144 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -85,6 +85,7 @@ void cmd_connect_shows_message_when_undefined(void **state) void cmd_connect_when_no_account(void **state) { mock_cons_show(); + mock_ui_ask_password(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; @@ -93,7 +94,7 @@ void cmd_connect_when_no_account(void **state) expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); - will_return(ui_ask_password, strdup("password")); + mock_ui_ask_password_returns("password"); expect_cons_show("Connecting as user@server.org"); @@ -110,6 +111,7 @@ void cmd_connect_when_no_account(void **state) void cmd_connect_with_altdomain_when_provided(void **state) { + stub_ui_ask_password(); stub_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", "altdomain" }; @@ -119,8 +121,6 @@ void cmd_connect_with_altdomain_when_provided(void **state) expect_any(accounts_get_account, name); will_return(accounts_get_account, NULL); - will_return(ui_ask_password, strdup("password")); - jabber_connect_with_details = _mock_jabber_connect_with_details_altdomain; expect_string(_mock_jabber_connect_with_details_altdomain, altdomain, "altdomain"); will_return(_mock_jabber_connect_with_details_altdomain, JABBER_CONNECTING); @@ -134,6 +134,8 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; @@ -142,12 +144,10 @@ void cmd_connect_fail_message(void **state) expect_any(accounts_get_account, name); will_return(accounts_get_account, NULL); - will_return(ui_ask_password, strdup("password")); - jabber_connect_with_details = _mock_jabber_connect_with_details_result; will_return(_mock_jabber_connect_with_details_result, 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); @@ -158,6 +158,7 @@ void cmd_connect_fail_message(void **state) void cmd_connect_lowercases_argument(void **state) { stub_cons_show(); + stub_ui_ask_password(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "USER@server.ORG", NULL }; @@ -166,8 +167,6 @@ void cmd_connect_lowercases_argument(void **state) expect_string(accounts_get_account, name, "user@server.org"); will_return(accounts_get_account, NULL); - will_return(ui_ask_password, strdup("password")); - jabber_connect_with_details = _mock_jabber_connect_with_details_result; will_return(_mock_jabber_connect_with_details_result, JABBER_CONNECTING); @@ -180,6 +179,7 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -192,8 +192,6 @@ void cmd_connect_asks_password_when_not_in_account(void **state) will_return(accounts_create_full_jid, strdup("user@jabber.org")); - will_return(ui_ask_password, strdup("password")); - jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c index c70fbcf4..83119910 100644 --- a/tests/ui/mock_ui.c +++ b/tests/ui/mock_ui.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "ui/ui.h" @@ -43,6 +44,40 @@ void _stub_cons_show(const char * const msg, ...) { } +static +void _mock_cons_show_error(const char * const msg, ...) +{ + va_list args; + va_start(args, msg); + vsnprintf(output, sizeof(output), msg, args); + check_expected(output); + va_end(args); +} + +static +void _mock_cons_show_account(ProfAccount *account) +{ + check_expected(account); +} + +static +void _mock_cons_show_account_list(gchar **accounts) +{ + check_expected(accounts); +} + +static +char * _mock_ui_ask_password(void) +{ + return (char *)mock(); +} + +static +char * _stub_ui_ask_password(void) +{ + return NULL; +} + void mock_cons_show(void) { @@ -50,6 +85,37 @@ mock_cons_show(void) } +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) { @@ -68,296 +134,26 @@ expect_cons_show_calls(int n) expect_any_count(_mock_cons_show, output, n); } -// 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) +void +expect_cons_show_error(char *output) { - return (GSList *)mock(); + expect_string(_mock_cons_show_error, output, output); } -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 +expect_cons_show_account(ProfAccount *account) { - return (unsigned long)mock(); + expect_memory(_mock_cons_show_account, account, account, sizeof(ProfAccount)); } -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 +expect_cons_show_account_list(gchar **accounts) { - return (gint)mock(); + expect_memory(_mock_cons_show_account_list, accounts, accounts, sizeof(accounts)); } -void ui_close_connected_win(int index) {} - -int ui_close_all_wins(void) +void +mock_ui_ask_password_returns(char *password) { - return (int)mock(); + will_return(_mock_ui_ask_password, strdup(password)); } - -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_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) -{ - 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, ...) -{ - va_list args; - va_start(args, cmd); - vsnprintf(output, sizeof(output), cmd, 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) {} - -void 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) -{ - return (wint_t)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) {} - -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) {} diff --git a/tests/ui/mock_ui.h b/tests/ui/mock_ui.h index 76d15614..2833be29 100644 --- a/tests/ui/mock_ui.h +++ b/tests/ui/mock_ui.h @@ -11,4 +11,17 @@ 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 From 581f58e47f0b52b60b0aa7ec6746c7bd1d24e6ee Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:07:41 +0000 Subject: [PATCH 06/36] Bind jabber functions in main.c --- src/main.c | 9 +++++++++ src/ui/core.c | 1 + src/xmpp/connection.c | 31 +++++++++++++++++-------------- src/xmpp/xmpp.h | 2 ++ 4 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/main.c b/src/main.c index c3065bd3..4c733daf 100644 --- a/src/main.c +++ b/src/main.c @@ -29,11 +29,19 @@ #include "profanity.h" +#include "xmpp/xmpp.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(); +} + int main(int argc, char **argv) { @@ -79,6 +87,7 @@ main(int argc, char **argv) return 0; } + _init_modules(); prof_run(disable_tls, log, account_name); return 0; diff --git a/src/ui/core.c b/src/ui/core.c index b68d2edc..241814bd 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -125,6 +125,7 @@ _ui_get_idle_time(void) unsigned long ms_elapsed = seconds_elapsed * 1000.0; return ms_elapsed; } +//unsigned long (*ui_get_idle_time)(void) = _ui_get_idle_time; unsigned long (*ui_get_idle_time)(void) = _ui_get_idle_time; static void diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index 10fb0dc6..f38da800 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -107,7 +107,6 @@ _jabber_init(const int disable_tls) (GDestroyNotify)resource_destroy); xmpp_initialize(); } -void (*jabber_init)(const int) = _jabber_init; static jabber_conn_status_t _jabber_connect_with_account(const ProfAccount * const account) @@ -128,7 +127,6 @@ _jabber_connect_with_account(const ProfAccount * const account) return result; } -jabber_conn_status_t (*jabber_connect_with_account)(const ProfAccount * const) = _jabber_connect_with_account; static jabber_conn_status_t _jabber_connect_with_details(const char * const jid, @@ -161,8 +159,6 @@ _jabber_connect_with_details(const char * const jid, log_info("Connecting without account, JID: %s", saved_details.jid); return _jabber_connect(saved_details.jid, passwd, saved_details.altdomain); } -jabber_conn_status_t (*jabber_connect_with_details)(const char * const, - const char * const, const char * const) = _jabber_connect_with_details; static void _jabber_disconnect(void) @@ -193,14 +189,12 @@ _jabber_disconnect(void) FREE_SET_NULL(jabber_conn.presence_message); FREE_SET_NULL(jabber_conn.domain); } -void (*jabber_disconnect)(void) = _jabber_disconnect; static void _jabber_shutdown(void) { xmpp_shutdown(); } -void (*jabber_shutdown)(void) = _jabber_shutdown; static void _jabber_process_events(void) @@ -222,7 +216,6 @@ _jabber_process_events(void) } } -void (*jabber_process_events)(void) = _jabber_process_events; static void _jabber_set_autoping(const int seconds) @@ -237,21 +230,18 @@ _jabber_set_autoping(const int seconds) } } } -void (*jabber_set_autoping)(const int) = _jabber_set_autoping; static GList * _jabber_get_available_resources(void) { return g_hash_table_get_values(available_resources); } -GList * (*jabber_get_available_resources)(void) = _jabber_get_available_resources; static jabber_conn_status_t _jabber_get_connection_status(void) { return (jabber_conn.conn_status); } -jabber_conn_status_t (*jabber_get_connection_status)(void) = _jabber_get_connection_status; xmpp_conn_t * connection_get_conn(void) @@ -270,28 +260,24 @@ _jabber_get_fulljid(void) { return xmpp_conn_get_jid(jabber_conn.conn); } -const char * (*jabber_get_fulljid)(void) = _jabber_get_fulljid; static const char * _jabber_get_domain(void) { return jabber_conn.domain; } -const char * (*jabber_get_domain)(void) = _jabber_get_domain; static char * _jabber_get_presence_message(void) { return jabber_conn.presence_message; } -char * (*jabber_get_presence_message)(void) = _jabber_get_presence_message; static char * _jabber_get_account_name(void) { return saved_account.name; } -char * (*jabber_get_account_name)(void) = _jabber_get_account_name; void connection_set_presence_message(const char * const message) @@ -629,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/xmpp.h b/src/xmpp/xmpp.h index fe7abda8..c4dd9cf4 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -74,6 +74,8 @@ typedef struct disco_identity_t { char *category; } DiscoIdentity; +void jabber_init_module(void); + // connection functions void (*jabber_init)(const int disable_tls); jabber_conn_status_t (*jabber_connect_with_details)(const char * const jid, From c001f0e7cb844086be6e7d5be1c7aae26f9855b1 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:13:34 +0000 Subject: [PATCH 07/36] Bind bookmark functions in main.c --- src/main.c | 1 + src/xmpp/bookmark.c | 15 ++++++++++----- src/xmpp/xmpp.h | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index 4c733daf..3ee3c428 100644 --- a/src/main.c +++ b/src/main.c @@ -40,6 +40,7 @@ static void _init_modules(void) { jabber_init_module(); + bookmark_init_module(); } int diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c index f7ba1c77..4516454f 100644 --- a/src/xmpp/bookmark.c +++ b/src/xmpp/bookmark.c @@ -71,7 +71,6 @@ _bookmark_add(const char *jid, const char *nick, gboolean autojoin) autocomplete_remove(bookmark_ac, jid); autocomplete_add(bookmark_ac, jid); } -void (*bookmark_add)(const char *, const char *, gboolean) = _bookmark_add; static void _bookmark_remove(const char *jid, gboolean autojoin) @@ -84,21 +83,18 @@ _bookmark_remove(const char *jid, gboolean autojoin) autocomplete_remove(bookmark_ac, jid); } } -void (*bookmark_remove)(const char *, gboolean) = _bookmark_remove; static const GList * _bookmark_get_list(void) { return bookmark_list; } -const GList * (*bookmark_get_list)(void) = _bookmark_get_list; static char * _bookmark_find(char *search_str) { return autocomplete_complete(bookmark_ac, search_str); } -char * (*bookmark_find)(char *) = _bookmark_find; static void _bookmark_autocomplete_reset(void) @@ -107,7 +103,6 @@ _bookmark_autocomplete_reset(void) autocomplete_reset(bookmark_ac); } } -void (*bookmark_autocomplete_reset)(void) = _bookmark_autocomplete_reset; static int _bookmark_handle_result(xmpp_conn_t * const conn, @@ -248,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/xmpp.h b/src/xmpp/xmpp.h index c4dd9cf4..124ed7a7 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -75,6 +75,7 @@ typedef struct disco_identity_t { } DiscoIdentity; void jabber_init_module(void); +void bookmark_init_module(void); // connection functions void (*jabber_init)(const int disable_tls); From e818a6772b830255f1bd21845197413b00646f99 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:16:19 +0000 Subject: [PATCH 08/36] Bind capabilities functions in main.c --- src/main.c | 1 + src/xmpp/capabilities.c | 9 +++++++-- src/xmpp/xmpp.h | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 3ee3c428..2fea7ba0 100644 --- a/src/main.c +++ b/src/main.c @@ -41,6 +41,7 @@ _init_modules(void) { jabber_init_module(); bookmark_init_module(); + capabilities_init_module(); } int diff --git a/src/xmpp/capabilities.c b/src/xmpp/capabilities.c index dd3feeae..fc71ae54 100644 --- a/src/xmpp/capabilities.c +++ b/src/xmpp/capabilities.c @@ -112,7 +112,6 @@ _caps_get(const char * const caps_str) { return g_hash_table_lookup(capabilities, caps_str); } -Capabilities * (*caps_get)(const char * const) = _caps_get; char * caps_create_sha1_str(xmpp_stanza_t * const query) @@ -309,7 +308,6 @@ _caps_close(void) { g_hash_table_destroy(capabilities); } -void (*caps_close)(void) = _caps_close; static void _caps_destroy(Capabilities *caps) @@ -328,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/xmpp.h b/src/xmpp/xmpp.h index 124ed7a7..c8c33c12 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -76,6 +76,7 @@ typedef struct disco_identity_t { void jabber_init_module(void); void bookmark_init_module(void); +void capabilities_init_module(void); // connection functions void (*jabber_init)(const int disable_tls); From 90e7ce1c56a2ec90896c845337a9a2bccc216d56 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:19:20 +0000 Subject: [PATCH 09/36] Bind iq functions in main.c --- src/main.c | 1 + src/xmpp/iq.c | 13 +++++++++---- src/xmpp/xmpp.h | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 2fea7ba0..d933a03c 100644 --- a/src/main.c +++ b/src/main.c @@ -42,6 +42,7 @@ _init_modules(void) jabber_init_module(); bookmark_init_module(); capabilities_init_module(); + iq_init_module(); } int diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index b330b591..369d7f7e 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -84,7 +84,6 @@ _iq_room_list_request(gchar *conferencejid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*iq_room_list_request)(gchar *) = _iq_room_list_request; static void _iq_disco_info_request(gchar *jid) @@ -95,7 +94,6 @@ _iq_disco_info_request(gchar *jid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*iq_disco_info_request)(gchar *) = _iq_disco_info_request; static void _iq_disco_items_request(gchar *jid) @@ -106,7 +104,6 @@ _iq_disco_items_request(gchar *jid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*iq_disco_items_request)(gchar *) = _iq_disco_items_request; static void _iq_send_software_version(const char * const fulljid) @@ -117,7 +114,6 @@ _iq_send_software_version(const char * const fulljid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*iq_send_software_version)(const char * const) = _iq_send_software_version; static int _iq_handle_error(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, @@ -571,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/xmpp.h b/src/xmpp/xmpp.h index c8c33c12..1ad5d8ff 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -77,6 +77,7 @@ typedef struct disco_identity_t { void jabber_init_module(void); void bookmark_init_module(void); void capabilities_init_module(void); +void iq_init_module(void); // connection functions void (*jabber_init)(const int disable_tls); From 74e8a405d6f5574e4e0e5d08e89ad1931a33ba6d Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:25:30 +0000 Subject: [PATCH 10/36] Bind message functions in main.c --- src/main.c | 1 + src/xmpp/message.c | 22 +++++++++++++--------- src/xmpp/xmpp.h | 1 + 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main.c b/src/main.c index d933a03c..e2366cfc 100644 --- a/src/main.c +++ b/src/main.c @@ -43,6 +43,7 @@ _init_modules(void) bookmark_init_module(); capabilities_init_module(); iq_init_module(); + message_init_module(); } int diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 605461ef..482a3965 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -89,7 +89,6 @@ _message_send(const char * const msg, const char * const recipient) xmpp_send(conn, message); xmpp_stanza_release(message); } -void (*message_send)(const char * const, const char * const) = _message_send; static void _message_send_groupchat(const char * const msg, const char * const recipient) @@ -102,7 +101,6 @@ _message_send_groupchat(const char * const msg, const char * const recipient) xmpp_send(conn, message); xmpp_stanza_release(message); } -void (*message_send_groupchat)(const char * const, const char * const) = _message_send_groupchat; static void _message_send_duck(const char * const query) @@ -115,7 +113,6 @@ _message_send_duck(const char * const query) xmpp_send(conn, message); xmpp_stanza_release(message); } -void (*message_send_duck)(const char * const) = _message_send_duck; static void _message_send_invite(const char * const room, const char * const contact, @@ -128,8 +125,6 @@ _message_send_invite(const char * const room, const char * const contact, xmpp_send(conn, stanza); xmpp_stanza_release(stanza); } -void (*message_send_invite)(const char * const, const char * const, - const char * const) = _message_send_invite; static void _message_send_composing(const char * const recipient) @@ -143,7 +138,6 @@ _message_send_composing(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } -void (*message_send_composing)(const char * const) = _message_send_composing; static void _message_send_paused(const char * const recipient) @@ -157,7 +151,6 @@ _message_send_paused(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } -void (*message_send_paused)(const char * const) = _message_send_paused; static void _message_send_inactive(const char * const recipient) @@ -171,7 +164,6 @@ _message_send_inactive(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } -void (*message_send_inactive)(const char * const) = _message_send_inactive; static void _message_send_gone(const char * const recipient) @@ -185,7 +177,6 @@ _message_send_gone(const char * const recipient) xmpp_stanza_release(stanza); chat_session_set_sent(recipient); } -void (*message_send_gone)(const char * const) = _message_send_gone; static int _conference_message_handler(xmpp_conn_t * const conn, @@ -448,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/xmpp.h b/src/xmpp/xmpp.h index 1ad5d8ff..29668403 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -78,6 +78,7 @@ 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); // connection functions void (*jabber_init)(const int disable_tls); From 4e169689f6ae60eb30837f53dca8269b74540e50 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:31:49 +0000 Subject: [PATCH 11/36] Bind presence functions in main.c --- src/main.c | 1 + src/xmpp/presence.c | 26 +++++++++++++++----------- src/xmpp/xmpp.h | 1 + 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main.c b/src/main.c index e2366cfc..b27240fa 100644 --- a/src/main.c +++ b/src/main.c @@ -44,6 +44,7 @@ _init_modules(void) capabilities_init_module(); iq_init_module(); message_init_module(); + presence_init_module(); } int diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index 8ebcf5cf..5698b520 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -121,21 +121,18 @@ _presence_subscription(const char * const jid, const jabber_subscr_t action) jid_destroy(jidp); } -void (*presence_subscription)(const char * const, const jabber_subscr_t) = _presence_subscription; static GSList * _presence_get_subscription_requests(void) { return autocomplete_get_list(sub_requests_ac); } -GSList * (*presence_get_subscription_requests)(void) = _presence_get_subscription_requests; static gint _presence_sub_request_count(void) { return autocomplete_length(sub_requests_ac); } -gint (*presence_sub_request_count)(void) = _presence_sub_request_count; void presence_free_sub_requests(void) @@ -154,7 +151,6 @@ _presence_sub_request_find(char * search_str) { return autocomplete_complete(sub_requests_ac, search_str); } -char * (*presence_sub_request_find)(char *) = _presence_sub_request_find; static gboolean _presence_sub_request_exists(const char * const bare_jid) @@ -177,14 +173,12 @@ _presence_sub_request_exists(const char * const bare_jid) return result; } -gboolean (*presence_sub_request_exists)(const char * const) = _presence_sub_request_exists; static void _presence_reset_sub_request_search(void) { autocomplete_reset(sub_requests_ac); } -void (*presence_reset_sub_request_search)(void) = _presence_reset_sub_request_search; static void _presence_update(const resource_presence_t presence_type, const char * const msg, @@ -230,8 +224,6 @@ _presence_update(const resource_presence_t presence_type, const char * const msg } accounts_set_last_presence(jabber_get_account_name(), last); } -void (*presence_update)(const resource_presence_t, const char * const, - const int) = _presence_update; static void _send_room_presence(xmpp_conn_t *conn, xmpp_stanza_t *presence) @@ -287,7 +279,6 @@ _presence_join_room(Jid *jid) muc_join_room(jid->barejid, jid->resourcepart); } -void (*presence_join_room)(Jid *) = _presence_join_room; static void _presence_change_room_nick(const char * const room, const char * const nick) @@ -318,7 +309,6 @@ _presence_change_room_nick(const char * const room, const char * const nick) free(full_room_jid); } -void (*presence_change_room_nick)(const char * const, const char * const) = _presence_change_room_nick; static void _presence_leave_chat_room(const char * const room_jid) @@ -337,7 +327,6 @@ _presence_leave_chat_room(const char * const room_jid) xmpp_stanza_release(presence); } } -void (*presence_leave_chat_room)(const char * const) = _presence_leave_chat_room; static int _unsubscribed_handler(xmpp_conn_t * const conn, @@ -697,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/xmpp.h b/src/xmpp/xmpp.h index 29668403..9817cc1f 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -79,6 +79,7 @@ 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); // connection functions void (*jabber_init)(const int disable_tls); From 6a9bb8ea1102e85a9dc77947ac3b10375a551bb1 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:34:44 +0000 Subject: [PATCH 12/36] Bind roster functions in main.c --- src/main.c | 1 + src/xmpp/roster.c | 17 +++++++++++------ src/xmpp/xmpp.h | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index b27240fa..d1a99556 100644 --- a/src/main.c +++ b/src/main.c @@ -45,6 +45,7 @@ _init_modules(void) iq_init_module(); message_init_module(); presence_init_module(); + roster_init_module(); } int diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c index c7fc71fe..7d4b0efe 100644 --- a/src/xmpp/roster.c +++ b/src/xmpp/roster.c @@ -90,7 +90,6 @@ _roster_add_new(const char * const barejid, const char * const name) xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*roster_add_new)(const char * const, const char * const) = _roster_add_new; static void _roster_send_remove(const char * const barejid) @@ -101,7 +100,6 @@ _roster_send_remove(const char * const barejid) xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*roster_send_remove)(const char * const) = _roster_send_remove; static void _roster_send_name_change(const char * const barejid, const char * const new_name, GSList *groups) @@ -113,8 +111,6 @@ _roster_send_name_change(const char * const barejid, const char * const new_name xmpp_send(conn, iq); xmpp_stanza_release(iq); } -void (*roster_send_name_change)(const char * const, const char * const, - GSList *) = _roster_send_name_change; static void _roster_send_add_to_group(const char * const group, PContact contact) @@ -146,7 +142,6 @@ _roster_send_add_to_group(const char * const group, PContact contact) xmpp_stanza_release(iq); free(unique_id); } -void (*roster_send_add_to_group)(const char * const, PContact) = _roster_send_add_to_group; static int _group_add_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, @@ -194,7 +189,6 @@ _roster_send_remove_from_group(const char * const group, PContact contact) xmpp_stanza_release(iq); free(unique_id); } -void (*roster_send_remove_from_group)(const char * const, PContact) = _roster_send_remove_from_group; static int _group_remove_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, @@ -329,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 9817cc1f..90b17e59 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -80,6 +80,7 @@ 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); From a6859354b453dad686f6ed570c28a4870733dd08 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 22 Dec 2013 23:54:22 +0000 Subject: [PATCH 13/36] Bind ui core functions in main.c --- src/main.c | 3 + src/ui/core.c | 154 ++++++++++++++++++++++++-------------------------- src/ui/ui.h | 2 + 3 files changed, 78 insertions(+), 81 deletions(-) diff --git a/src/main.c b/src/main.c index d1a99556..2ca76de3 100644 --- a/src/main.c +++ b/src/main.c @@ -30,6 +30,7 @@ #include "profanity.h" #include "xmpp/xmpp.h" +#include "ui/ui.h" static gboolean disable_tls = FALSE; static gboolean version = FALSE; @@ -46,6 +47,8 @@ _init_modules(void) message_init_module(); presence_init_module(); roster_init_module(); + + ui_init_module(); } int diff --git a/src/ui/core.c b/src/ui/core.c index 241814bd..c5636d3a 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -95,7 +95,6 @@ _ui_init(void) ui_idle_time = g_timer_new(); wins_refresh_current(); } -void (*ui_init)(void) = _ui_init; static void _ui_refresh(void) @@ -105,7 +104,6 @@ _ui_refresh(void) status_bar_refresh(); inp_put_back(); } -void (*ui_refresh)(void) = _ui_refresh; static unsigned long _ui_get_idle_time(void) @@ -125,15 +123,12 @@ _ui_get_idle_time(void) unsigned long ms_elapsed = seconds_elapsed * 1000.0; return ms_elapsed; } -//unsigned long (*ui_get_idle_time)(void) = _ui_get_idle_time; -unsigned long (*ui_get_idle_time)(void) = _ui_get_idle_time; static void _ui_reset_idle_time(void) { g_timer_start(ui_idle_time); } -void (*ui_reset_idle_time)(void) = _ui_reset_idle_time; static void _ui_close(void) @@ -142,7 +137,6 @@ _ui_close(void) wins_destroy(); endwin(); } -void (*ui_close)(void) = _ui_close; static void _ui_resize(const int ch, const char * const input, const int size) @@ -154,7 +148,6 @@ _ui_resize(const int ch, const char * const input, const int size) inp_win_resize(input, size); wins_refresh_current(); } -void (*ui_resize)(const int, const char * const, const int) = _ui_resize; static void _ui_load_colours(void) @@ -165,7 +158,6 @@ _ui_load_colours(void) theme_init_colours(); } } -void (*ui_load_colours)(void) = _ui_load_colours; static gboolean _ui_win_exists(int index) @@ -173,14 +165,12 @@ _ui_win_exists(int index) ProfWin *window = wins_get_by_num(index); return (window != NULL); } -gboolean (*ui_win_exists)(int) = _ui_win_exists; static gboolean _ui_duck_exists(void) { return wins_duck_exists(); } -gboolean (*ui_duck_exists)(void) = _ui_duck_exists; static void _ui_contact_typing(const char * const barejid) @@ -219,7 +209,6 @@ _ui_contact_typing(const char * const barejid) notify_typing(display_usr); } } -void (*ui_contact_typing)(const char * const) = _ui_contact_typing; static GSList * _ui_get_recipients(void) @@ -227,7 +216,6 @@ _ui_get_recipients(void) GSList *recipients = wins_get_chat_recipients(); return recipients; } -GSList * (*ui_get_recipients)(void) = _ui_get_recipients; static void _ui_incoming_msg(const char * const from, const char * const message, @@ -305,8 +293,6 @@ _ui_incoming_msg(const char * const from, const char * const message, free(display_from); } -void (*ui_incoming_msg)(const char * const, const char * const, - GTimeVal*, gboolean) = _ui_incoming_msg; static void _ui_roster_add(const char * const barejid, const char * const name) @@ -317,42 +303,36 @@ _ui_roster_add(const char * const barejid, const char * const name) cons_show("Roster item added: %s", barejid); } } -void (*ui_roster_add)(const char * const, const char * const) = _ui_roster_add; static void _ui_roster_remove(const char * const barejid) { cons_show("Roster item removed: %s", barejid); } -void (*ui_roster_remove)(const char * const) = _ui_roster_remove; 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_already_in_group)(const char * const, const char * const) = _ui_contact_already_in_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_contact_not_in_group)(const char * const, const char * const) = _ui_contact_not_in_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_added)(const char * const, const char * const) = _ui_group_added; static void _ui_group_removed(const char * const contact, const char * const group) { cons_show("%s removed from group %s", contact, group); } -void (*ui_group_removed)(const char * const, const char * const) = _ui_group_removed; static void _ui_handle_error_message(const char * const from, const char * const err_msg) @@ -369,8 +349,6 @@ _ui_handle_error_message(const char * const from, const char * const err_msg) ui_print_error_from_recipient(from, err_msg); } -void (*ui_handle_error_message)(const char * const, - const char * const) = _ui_handle_error_message; static void _ui_contact_online(const char * const barejid, const char * const resource, @@ -397,8 +375,6 @@ _ui_contact_online(const char * const barejid, const char * const resource, wins_refresh_current(); } } -void (*ui_contact_online)(const char * const, const char * const, - const char * const, const char * const, GDateTime*) = _ui_contact_online; static void _ui_contact_offline(const char * const from, const char * const show, @@ -427,8 +403,6 @@ _ui_contact_offline(const char * const from, const char * const show, wins_refresh_current(); } } -void (*ui_contact_offline)(const char * const, const char * const, - const char * const) = _ui_contact_offline; static void _ui_disconnected(void) @@ -438,7 +412,6 @@ _ui_disconnected(void) status_bar_clear_message(); status_bar_refresh(); } -void (*ui_disconnected)(void) = _ui_disconnected; static void _ui_handle_special_keys(const wint_t * const ch, const char * const inp, @@ -451,8 +424,6 @@ _ui_handle_special_keys(const wint_t * const ch, const char * const inp, } } -void (*ui_handle_special_keys)(const wint_t * const, const char * const, - const int) = _ui_handle_special_keys; static void _ui_close_connected_win(int index) @@ -475,7 +446,6 @@ _ui_close_connected_win(int index) } } } -void (*ui_close_connected_win)(int index) = _ui_close_connected_win; static int _ui_close_all_wins(void) @@ -503,7 +473,6 @@ _ui_close_all_wins(void) return count; } -int (*ui_close_all_wins)(void) = _ui_close_all_wins; static int _ui_close_read_wins(void) @@ -531,7 +500,6 @@ _ui_close_read_wins(void) return count; } -int (*ui_close_read_wins)(void) = _ui_close_read_wins; static void _ui_switch_win(const int i) @@ -566,7 +534,6 @@ _ui_switch_win(const int i) wins_refresh_current(); } } -void (*ui_switch_win)(const int) = _ui_switch_win; static void _ui_next_win(void) @@ -600,7 +567,6 @@ _ui_next_win(void) } wins_refresh_current(); } -void (*ui_next_win)(void) = _ui_next_win; static void _ui_previous_win(void) @@ -634,14 +600,12 @@ _ui_previous_win(void) } wins_refresh_current(); } -void (*ui_previous_win)(void) = _ui_previous_win; static void _ui_clear_current(void) { wins_clear_current(); } -void (*ui_clear_current)(void) = _ui_clear_current; static void _ui_close_current(void) @@ -653,7 +617,6 @@ _ui_close_current(void) status_bar_active(1); title_bar_title(); } -void (*ui_close_current)(void) = _ui_close_current; static void _ui_close_win(int index) @@ -665,7 +628,6 @@ _ui_close_win(int index) wins_refresh_current(); } -void (*ui_close_win)(int) = _ui_close_win; static void _ui_tidy_wins(void) @@ -678,7 +640,6 @@ _ui_tidy_wins(void) cons_show("No tidy needed."); } } -void (*ui_tidy_wins)(void) = _ui_tidy_wins; static void _ui_prune_wins(void) @@ -724,7 +685,6 @@ _ui_prune_wins(void) cons_show("No prune needed."); } } -void (*ui_prune_wins)(void) = _ui_prune_wins; static win_type_t _ui_current_win_type(void) @@ -732,14 +692,12 @@ _ui_current_win_type(void) ProfWin *current = wins_get_current(); return current->type; } -win_type_t (*ui_current_win_type)(void) = _ui_current_win_type; static int _ui_current_win_index(void) { return wins_get_current_num(); } -int (*ui_current_win_index)(void) = _ui_current_win_index; static win_type_t _ui_win_type(int index) @@ -747,7 +705,6 @@ _ui_win_type(int index) ProfWin *window = wins_get_by_num(index); return window->type; } -win_type_t (*ui_win_type)(int index) = _ui_win_type; static char * _ui_recipient(int index) @@ -755,7 +712,6 @@ _ui_recipient(int index) ProfWin *window = wins_get_by_num(index); return window->from; } -char * (*ui_recipient)(int) = _ui_recipient; static char * _ui_current_recipient(void) @@ -763,7 +719,6 @@ _ui_current_recipient(void) ProfWin *current = wins_get_current(); return current->from; } -char* (*ui_current_recipient)(void) = _ui_current_recipient; static void _ui_current_print_line(const char * const msg, ...) @@ -775,7 +730,6 @@ _ui_current_print_line(const char * const msg, ...) va_end(arg); win_refresh(current); } -void (*ui_current_print_line)(const char * const, ...) = _ui_current_print_line; static void _ui_current_error_line(const char * const msg) @@ -784,7 +738,6 @@ _ui_current_error_line(const char * const msg) win_print_line(current, '-', COLOUR_ERROR, msg); win_refresh(current); } -void (*ui_current_error_line)(const char * const) = _ui_current_error_line; static void _ui_current_page_off(void) @@ -793,7 +746,6 @@ _ui_current_page_off(void) win_page_off(current); win_refresh(current); } -void (*ui_current_page_off)(void) = _ui_current_page_off; static void _ui_print_error_from_recipient(const char * const from, const char *err_msg) @@ -809,7 +761,6 @@ _ui_print_error_from_recipient(const char * const from, const char *err_msg) } } } -void (*ui_print_error_from_recipient)(const char * const, const char *) = _ui_print_error_from_recipient; static void _ui_print_system_msg_from_recipient(const char * const from, const char *message) @@ -845,8 +796,6 @@ _ui_print_system_msg_from_recipient(const char * const from, const char *message wins_refresh_current(); } } -void (*ui_print_system_msg_from_recipient)(const char * const, - const char *) = _ui_print_system_msg_from_recipient; static void _ui_recipient_gone(const char * const barejid) @@ -870,7 +819,6 @@ _ui_recipient_gone(const char * const barejid) } } } -void (*ui_recipient_gone)(const char * const) = _ui_recipient_gone; static void _ui_new_chat_win(const char * const to) @@ -910,7 +858,6 @@ _ui_new_chat_win(const char * const to) ui_switch_win(num); } -void (*ui_new_chat_win)(const char * const) = _ui_new_chat_win; static void _ui_create_duck_win(void) @@ -920,7 +867,6 @@ _ui_create_duck_win(void) ui_switch_win(num); win_print_line(window, '-', 0, "Type ':help' to find out more."); } -void (*ui_create_duck_win)(void) = _ui_create_duck_win; static void _ui_open_duck_win(void) @@ -931,7 +877,6 @@ _ui_open_duck_win(void) ui_switch_win(num); } } -void (*ui_open_duck_win)(void) = _ui_open_duck_win; static void _ui_duck(const char * const query) @@ -948,7 +893,6 @@ _ui_duck(const char * const query) wprintw(window->win, "\n"); } } -void (*ui_duck)(const char * const) = _ui_duck; static void _ui_duck_result(const char * const result) @@ -982,7 +926,6 @@ _ui_duck_result(const char * const result) wprintw(window->win, "\n"); } } -void (*ui_duck_result)(const char * const) = _ui_duck_result; static void _ui_outgoing_msg(const char * const from, const char * const to, @@ -1035,8 +978,6 @@ _ui_outgoing_msg(const char * const from, const char * const to, } ui_switch_win(num); } -void (*ui_outgoing_msg)(const char * const, const char * const, - const char * const) = _ui_outgoing_msg; static void _ui_room_join(Jid *jid) @@ -1052,7 +993,6 @@ _ui_room_join(Jid *jid) num = wins_get_num(window); ui_switch_win(num); } -void (*ui_room_join)(Jid *) = _ui_room_join; static void _ui_room_roster(const char * const room, GList *roster, const char * const presence) @@ -1108,7 +1048,6 @@ _ui_room_roster(const char * const room, GList *roster, const char * const prese wins_refresh_current(); } } -void (*ui_room_roster)(const char * const, GList*, const char * const) = _ui_room_roster; static void _ui_room_member_offline(const char * const room, const char * const nick) @@ -1124,7 +1063,6 @@ _ui_room_member_offline(const char * const room, const char * const nick) wins_refresh_current(); } } -void (*ui_room_member_offline)(const char * const, const char * const) = _ui_room_member_offline; static void _ui_room_member_online(const char * const room, const char * const nick, @@ -1141,8 +1079,6 @@ _ui_room_member_online(const char * const room, const char * const nick, wins_refresh_current(); } } -void (*ui_room_member_online)(const char * const, const char * const, - const char * const, const char * const) = _ui_room_member_online; static void _ui_room_member_presence(const char * const room, const char * const nick, @@ -1158,8 +1094,6 @@ _ui_room_member_presence(const char * const room, const char * const nick, wins_refresh_current(); } } -void (*ui_room_member_presence)(const char * const, const char * const, - const char * const, const char * const) = _ui_room_member_presence; static void _ui_room_member_nick_change(const char * const room, @@ -1176,8 +1110,6 @@ _ui_room_member_nick_change(const char * const room, wins_refresh_current(); } } -void (*ui_room_member_nick_change)(const char * const, - const char * const, const char * const) = _ui_room_member_nick_change; static void _ui_room_nick_change(const char * const room, const char * const nick) @@ -1193,7 +1125,6 @@ _ui_room_nick_change(const char * const room, const char * const nick) wins_refresh_current(); } } -void (*ui_room_nick_change)(const char * const, const char * const) = _ui_room_nick_change; static void _ui_room_history(const char * const room_jid, const char * const nick, @@ -1220,8 +1151,6 @@ _ui_room_history(const char * const room_jid, const char * const nick, wins_refresh_current(); } } -void (*ui_room_history)(const char * const, const char * const, - GTimeVal, const char * const) = _ui_room_history; static void _ui_room_message(const char * const room_jid, const char * const nick, @@ -1294,8 +1223,6 @@ _ui_room_message(const char * const room_jid, const char * const nick, } } } -void (*ui_room_message)(const char * const, const char * const, - const char * const) = _ui_room_message; static void _ui_room_subject(const char * const room_jid, const char * const subject) @@ -1319,7 +1246,6 @@ _ui_room_subject(const char * const room_jid, const char * const subject) status_bar_new(num); } } -void (*ui_room_subject)(const char * const, const char * const) = _ui_room_subject; static void _ui_room_broadcast(const char * const room_jid, const char * const message) @@ -1343,7 +1269,6 @@ _ui_room_broadcast(const char * const room_jid, const char * const message) status_bar_new(num); } } -void (*ui_room_broadcast)(const char * const, const char * const) = _ui_room_broadcast; static void _ui_status(void) @@ -1358,7 +1283,6 @@ _ui_status(void) win_print_line(current, '-', 0, "Error getting contact info."); } } -void (*ui_status)(void) = _ui_status; static void _ui_status_private(void) @@ -1375,7 +1299,6 @@ _ui_status_private(void) jid_destroy(jid); } -void (*ui_status_private)(void) = _ui_status_private; static void _ui_status_room(const char * const contact) @@ -1389,14 +1312,12 @@ _ui_status_room(const char * const contact) win_print_line(current, '-', 0, "No such participant \"%s\" in room.", contact); } } -void (*ui_status_room)(const char * const) = _ui_status_room; static gint _ui_unread(void) { return wins_get_total_unread(); } -gint (*ui_unread)(void) = _ui_unread; static int _ui_win_unread(int index) @@ -1408,7 +1329,6 @@ _ui_win_unread(int index) return 0; } } -int (*ui_win_unread)(int) = _ui_win_unread; static char * _ui_ask_password(void) @@ -1422,7 +1342,6 @@ _ui_ask_password(void) return passwd; } -char * (*ui_ask_password)(void) = _ui_ask_password; static void _ui_draw_win_title(void) @@ -1618,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/ui.h b/src/ui/ui.h index 482d8735..36bb1ff6 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -41,6 +41,8 @@ #define INP_WIN_MAX 1000 +void ui_init_module(void); + // ui startup and control void (*ui_init)(void); void (*ui_load_colours)(void); From 7fe8f61b9b43357c145ab28ab2f09bd9d870a16e Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 23 Dec 2013 00:08:45 +0000 Subject: [PATCH 14/36] Bind console functions in main.c --- src/main.c | 1 + src/ui/console.c | 130 ++++++++++++++++++++++++----------------------- src/ui/ui.h | 1 + 3 files changed, 68 insertions(+), 64 deletions(-) diff --git a/src/main.c b/src/main.c index 2ca76de3..9b3f54b6 100644 --- a/src/main.c +++ b/src/main.c @@ -49,6 +49,7 @@ _init_modules(void) roster_init_module(); ui_init_module(); + console_init_module(); } int diff --git a/src/ui/console.c b/src/ui/console.c index 57e5eb73..bb6c4a38 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -54,7 +54,6 @@ _cons_show_time(void) win_print_time(console, '-'); wins_refresh_console(); } -void (*cons_show_time)(void) = _cons_show_time; static void _cons_show_word(const char * const word) @@ -63,7 +62,6 @@ _cons_show_word(const char * const word) wprintw(console->win, "%s", word); wins_refresh_console(); } -void (*cons_show_word)(const char * const) = _cons_show_word; static void _cons_debug(const char * const msg, ...) @@ -86,7 +84,6 @@ _cons_debug(const char * const msg, ...) ui_refresh(); } } -void (*cons_debug)(const char * const, ...) = _cons_debug; static void _cons_show(const char * const msg, ...) @@ -102,7 +99,6 @@ _cons_show(const char * const msg, ...) va_end(arg); wins_refresh_console(); } -void (*cons_show)(const char * const, ...) = _cons_show; static void _cons_show_error(const char * const msg, ...) @@ -122,7 +118,6 @@ _cons_show_error(const char * const msg, ...) wins_refresh_console(); cons_alert(); } -void (*cons_show_error)(const char * const, ...) = _cons_show_error; static void _cons_show_typing(const char * const barejid) @@ -141,7 +136,6 @@ _cons_show_typing(const char * const barejid) wins_refresh_console(); cons_alert(); } -void (*cons_show_typing)(const char * const) = _cons_show_typing; static void _cons_show_incoming_message(const char * const short_from, const int win_index) @@ -160,7 +154,6 @@ _cons_show_incoming_message(const char * const short_from, const int win_index) wins_refresh_console(); cons_alert(); } -void (*cons_show_incoming_message)(const char * const, const int) = _cons_show_incoming_message; static void _cons_about(void) @@ -213,7 +206,6 @@ _cons_about(void) wins_refresh_console(); cons_alert(); } -void (*cons_about)(void) = _cons_about; static void _cons_check_version(gboolean not_available_msg) @@ -245,7 +237,6 @@ _cons_check_version(gboolean not_available_msg) } } } -void (*cons_check_version)(gboolean) = _cons_check_version; static void _cons_show_login_success(ProfAccount *account) @@ -266,7 +257,6 @@ _cons_show_login_success(ProfAccount *account) wins_refresh_console(); cons_alert(); } -void (*cons_show_login_success)(ProfAccount*) = _cons_show_login_success; static void _cons_show_wins(void) @@ -288,7 +278,6 @@ _cons_show_wins(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_wins)(void) = _cons_show_wins; static void _cons_show_room_invites(GSList *invites) @@ -307,7 +296,6 @@ _cons_show_room_invites(GSList *invites) wins_refresh_console(); cons_alert(); } -void (*cons_show_room_invites)(GSList*) = _cons_show_room_invites; static void _cons_show_info(PContact pcontact) @@ -441,7 +429,6 @@ _cons_show_info(PContact pcontact) wins_refresh_console(); cons_alert(); } -void (*cons_show_info)(PContact) = _cons_show_info; static void _cons_show_caps(const char * const contact, Resource *resource) @@ -517,7 +504,6 @@ _cons_show_caps(const char * const contact, Resource *resource) wins_refresh_console(); cons_alert(); } -void (*cons_show_caps)(const char * const, Resource*) = _cons_show_caps; static void _cons_show_software_version(const char * const jid, const char * const presence, @@ -545,9 +531,6 @@ _cons_show_software_version(const char * const jid, const char * const presence wins_refresh_console(); cons_alert(); } -void (*cons_show_software_version)(const char * const, const char * const, - const char * const, const char * const, - const char * const) = _cons_show_software_version; static void _cons_show_received_subs(void) @@ -568,7 +551,6 @@ _cons_show_received_subs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_received_subs)(void) = _cons_show_received_subs; static void _cons_show_sent_subs(void) @@ -591,7 +573,6 @@ _cons_show_sent_subs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_sent_subs)(void) = _cons_show_sent_subs; static void _cons_show_room_list(GSList *rooms, const char * const conference_node) @@ -616,7 +597,6 @@ _cons_show_room_list(GSList *rooms, const char * const conference_node) wins_refresh_console(); cons_alert(); } -void (*cons_show_room_list)(GSList*, const char * const) = _cons_show_room_list; static void _cons_show_bookmarks(const GList *list) @@ -647,7 +627,6 @@ _cons_show_bookmarks(const GList *list) wins_refresh_console(); cons_alert(); } -void (*cons_show_bookmarks)(const GList*) = _cons_show_bookmarks; static void _cons_show_disco_info(const char *jid, GSList *identities, GSList *features) @@ -691,7 +670,6 @@ _cons_show_disco_info(const char *jid, GSList *identities, GSList *features) cons_alert(); } } -void (*cons_show_disco_info)(const char*, GSList*, GSList*) = _cons_show_disco_info; static void _cons_show_disco_items(GSList *items, const char * const jid) @@ -717,7 +695,6 @@ _cons_show_disco_items(GSList *items, const char * const jid) wins_refresh_console(); cons_alert(); } -void (*cons_show_disco_items)(GSList*, const char * const) = _cons_show_disco_items; static void _cons_show_status(const char * const barejid) @@ -733,7 +710,6 @@ _cons_show_status(const char * const barejid) wins_refresh_console(); cons_alert(); } -void (*cons_show_status)(const char * const) = _cons_show_status; static void _cons_show_room_invite(const char * const invitor, const char * const room, @@ -771,8 +747,6 @@ _cons_show_room_invite(const char * const invitor, const char * const room, wins_refresh_console(); cons_alert(); } -void (*cons_show_room_invite)(const char * const, const char * const, - const char * const) = _cons_show_room_invite; static void _cons_show_account_list(gchar **accounts) @@ -803,7 +777,6 @@ _cons_show_account_list(gchar **accounts) wins_refresh_console(); cons_alert(); } -void (*cons_show_account_list)(gchar**) = _cons_show_account_list; static void _cons_show_account(ProfAccount *account) @@ -927,7 +900,6 @@ _cons_show_account(ProfAccount *account) wins_refresh_console(); cons_alert(); } -void (*cons_show_account)(ProfAccount*) = _cons_show_account; static void _cons_theme_setting(void) @@ -939,7 +911,6 @@ _cons_theme_setting(void) cons_show("Theme (/theme) : %s", theme); } } -void (*cons_theme_setting)(void) = _cons_theme_setting; static void _cons_beep_setting(void) @@ -949,7 +920,6 @@ _cons_beep_setting(void) else cons_show("Terminal beep (/beep) : OFF"); } -void (*cons_beep_setting)(void) = _cons_beep_setting; static void _cons_flash_setting(void) @@ -959,7 +929,6 @@ _cons_flash_setting(void) else cons_show("Terminal flash (/flash) : OFF"); } -void (*cons_flash_setting)(void) = _cons_flash_setting; static void _cons_splash_setting(void) @@ -969,7 +938,6 @@ _cons_splash_setting(void) else cons_show("Splash screen (/splash) : OFF"); } -void (*cons_splash_setting)(void) = _cons_splash_setting; static void _cons_autoconnect_setting(void) @@ -979,7 +947,6 @@ _cons_autoconnect_setting(void) else cons_show("Autoconnect (/autoconnect) : OFF"); } -void (*cons_autoconnect_setting)(void) = _cons_autoconnect_setting; static void _cons_vercheck_setting(void) @@ -989,7 +956,6 @@ _cons_vercheck_setting(void) else cons_show("Version checking (/vercheck) : OFF"); } -void (*cons_vercheck_setting)(void) = _cons_vercheck_setting; static void _cons_mouse_setting(void) @@ -999,7 +965,6 @@ _cons_mouse_setting(void) else cons_show("Mouse handling (/mouse) : OFF"); } -void (*cons_mouse_setting)(void) = _cons_mouse_setting; static void _cons_statuses_setting(void) @@ -1009,7 +974,6 @@ _cons_statuses_setting(void) else cons_show("Status (/statuses) : OFF"); } -void (*cons_statuses_setting)(void) = _cons_statuses_setting; static void _cons_titlebar_setting(void) @@ -1020,7 +984,6 @@ _cons_titlebar_setting(void) cons_show("Titlebar display (/titlebar) : NONE"); } } -void (*cons_titlebar_setting)(void) = _cons_titlebar_setting; static void _cons_show_ui_prefs(void) @@ -1039,7 +1002,6 @@ _cons_show_ui_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_ui_prefs)(void) = _cons_show_ui_prefs; static void _cons_notify_setting(void) @@ -1073,7 +1035,6 @@ _cons_notify_setting(void) cons_show("Reminder period (/notify remind) : %d seconds", remind_period); } } -void (*cons_notify_setting)(void) = _cons_notify_setting; static void _cons_show_desktop_prefs(void) @@ -1085,7 +1046,6 @@ _cons_show_desktop_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_desktop_prefs)(void) = _cons_show_desktop_prefs; static void _cons_states_setting(void) @@ -1095,7 +1055,6 @@ _cons_states_setting(void) else cons_show("Send chat states (/states) : OFF"); } -void (*cons_states_setting)(void) = _cons_states_setting; static void _cons_outtype_setting(void) @@ -1105,7 +1064,6 @@ _cons_outtype_setting(void) else cons_show("Send composing (/outtype) : OFF"); } -void (*cons_outtype_setting)(void) = _cons_outtype_setting; static void _cons_intype_setting(void) @@ -1115,7 +1073,6 @@ _cons_intype_setting(void) else cons_show("Show typing (/intype) : OFF"); } -void (*cons_intype_setting)(void) = _cons_intype_setting; static void _cons_gone_setting(void) @@ -1129,7 +1086,6 @@ _cons_gone_setting(void) cons_show("Leave conversation (/gone) : %d minutes", gone_time); } } -void (*cons_gone_setting)(void) = _cons_gone_setting; static void _cons_history_setting(void) @@ -1139,7 +1095,6 @@ _cons_history_setting(void) else cons_show("Chat history (/history) : OFF"); } -void (*cons_history_setting)(void) = _cons_history_setting; static void _cons_show_chat_prefs(void) @@ -1155,14 +1110,12 @@ _cons_show_chat_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_chat_prefs)(void) = _cons_show_chat_prefs; static void _cons_log_setting(void) { cons_show("Max log size (/log maxsize) : %d bytes", prefs_get_max_log_size()); } -void (*cons_log_setting)(void) = _cons_log_setting; static void _cons_chlog_setting(void) @@ -1172,7 +1125,6 @@ _cons_chlog_setting(void) else cons_show("Chat logging (/chlog) : OFF"); } -void (*cons_chlog_setting)(void) = _cons_chlog_setting; static void _cons_grlog_setting(void) @@ -1182,7 +1134,6 @@ _cons_grlog_setting(void) else cons_show("Groupchat logging (/grlog) : OFF"); } -void (*cons_grlog_setting)(void) = _cons_grlog_setting; static void _cons_show_log_prefs(void) @@ -1196,7 +1147,6 @@ _cons_show_log_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_log_prefs)(void) = _cons_show_log_prefs; static void _cons_autoaway_setting(void) @@ -1222,7 +1172,6 @@ _cons_autoaway_setting(void) cons_show("Autoaway check (/autoaway check) : OFF"); } } -void (*cons_autoaway_setting)(void) = _cons_autoaway_setting; static void _cons_show_presence_prefs(void) @@ -1234,7 +1183,6 @@ _cons_show_presence_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_presence_prefs)(void) = _cons_show_presence_prefs; static void _cons_reconnect_setting(void) @@ -1248,7 +1196,6 @@ _cons_reconnect_setting(void) cons_show("Reconnect interval (/reconnect) : %d seconds", reconnect_interval); } } -void (*cons_reconnect_setting)(void) = _cons_reconnect_setting; static void _cons_autoping_setting(void) @@ -1262,7 +1209,6 @@ _cons_autoping_setting(void) cons_show("Autoping interval (/autoping) : %d seconds", autoping_interval); } } -void (*cons_autoping_setting)(void) = _cons_autoping_setting; static void _cons_priority_setting(void) @@ -1270,7 +1216,6 @@ _cons_priority_setting(void) gint priority = prefs_get_priority(); cons_show("Priority (/priority) : %d", priority); } -void (*cons_priority_setting)(void) = _cons_priority_setting; static void _cons_show_connection_prefs(void) @@ -1284,7 +1229,6 @@ _cons_show_connection_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_show_connection_prefs)(void) = _cons_show_connection_prefs; static void _cons_show_themes(GSList *themes) @@ -1304,7 +1248,6 @@ _cons_show_themes(GSList *themes) wins_refresh_console(); cons_alert(); } -void (*cons_show_themes)(GSList*) = _cons_show_themes; static void _cons_prefs(void) @@ -1326,7 +1269,6 @@ _cons_prefs(void) wins_refresh_console(); cons_alert(); } -void (*cons_prefs)(void) = _cons_prefs; static void _cons_help(void) @@ -1350,7 +1292,6 @@ _cons_help(void) wins_refresh_console(); cons_alert(); } -void (*cons_help)(void) = _cons_help; static void _cons_navigation_help(void) @@ -1375,7 +1316,6 @@ _cons_navigation_help(void) wins_refresh_console(); cons_alert(); } -void (*cons_navigation_help)(void) = _cons_navigation_help; static void _cons_show_roster_group(const char * const group, GSList *list) @@ -1392,7 +1332,6 @@ _cons_show_roster_group(const char * const group, GSList *list) wins_refresh_console(); cons_alert(); } -void (*cons_show_roster_group)(const char * const, GSList*) = _cons_show_roster_group; static void _cons_show_roster(GSList *list) @@ -1404,7 +1343,6 @@ _cons_show_roster(GSList *list) wins_refresh_console(); cons_alert(); } -void (*cons_show_roster)(GSList*) = _cons_show_roster; static void _cons_show_contacts(GSList *list) @@ -1424,7 +1362,6 @@ _cons_show_contacts(GSList *list) wins_refresh_console(); cons_alert(); } -void (*cons_show_contacts)(GSList*) = _cons_show_contacts; static void _cons_alert(void) @@ -1433,7 +1370,6 @@ _cons_alert(void) status_bar_new(1); } } -void (*cons_alert)(void) = _cons_alert; static void _cons_splash_logo(void) @@ -1566,3 +1502,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/ui.h b/src/ui/ui.h index 36bb1ff6..9b5e5079 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -42,6 +42,7 @@ #define INP_WIN_MAX 1000 void ui_init_module(void); +void console_init_module(void); // ui startup and control void (*ui_init)(void); From b83b262d47ea62330e1e1a21e3da12aef08e981d Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 23 Dec 2013 00:23:22 +0000 Subject: [PATCH 15/36] Bind remaining ui functions in main.c --- src/main.c | 4 ++++ src/ui/inputwin.c | 23 ++++++++++++++--------- src/ui/notifier.c | 24 ++++++++++++++---------- src/ui/statusbar.c | 29 +++++++++++++++++------------ src/ui/titlebar.c | 23 ++++++++++++++--------- src/ui/ui.h | 4 ++++ 6 files changed, 67 insertions(+), 40 deletions(-) diff --git a/src/main.c b/src/main.c index 9b3f54b6..233feb6a 100644 --- a/src/main.c +++ b/src/main.c @@ -50,6 +50,10 @@ _init_modules(void) ui_init_module(); console_init_module(); + inputwin_init_module(); + notifier_init_module(); + statusbar_init_module(); + titlebar_init_module(); } int diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 040e87b2..dd02ed70 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -73,7 +73,6 @@ _create_input_window(void) wmove(inp_win, 0, 0); _inp_win_refresh(); } -void (*create_input_window)(void) = _create_input_window; static void _inp_win_resize(const char * const input, const int size) @@ -92,21 +91,18 @@ _inp_win_resize(const char * const input, const int size) _inp_win_refresh(); } -void (*inp_win_resize)(const char * const, const int) = _inp_win_resize; static void _inp_non_block(void) { wtimeout(inp_win, 20); } -void (*inp_non_block)(void) = _inp_non_block; static void _inp_block(void) { wtimeout(inp_win, -1); } -void (*inp_block)(void) = _inp_block; static wint_t _inp_get_char(char *input, int *size) @@ -206,7 +202,6 @@ _inp_get_char(char *input, int *size) return ch; } -wint_t (*inp_get_char)(char*, int*) = _inp_get_char; static void _inp_get_password(char *passwd) @@ -219,14 +214,12 @@ _inp_get_password(char *passwd) echo(); status_bar_clear(); } -void (*inp_get_password)(char*) = _inp_get_password; static void _inp_put_back(void) { _inp_win_refresh(); } -void (*inp_put_back)(void) = _inp_put_back; static void _inp_replace_input(char *input, const char * const new_input, int *size) @@ -240,7 +233,6 @@ _inp_replace_input(char *input, const char * const new_input, int *size) waddstr(inp_win, input); _go_to_end(display_size); } -void (*inp_replace_input)(char*, const char * const, int*) = _inp_replace_input; static void _inp_win_reset(void) @@ -249,7 +241,6 @@ _inp_win_reset(void) pad_start = 0; _inp_win_refresh(); } -void (*inp_win_reset)(void) = _inp_win_reset; static void _clear_input(void) @@ -712,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 d0319cb9..ebc61e0d 100644 --- a/src/ui/notifier.c +++ b/src/ui/notifier.c @@ -46,7 +46,6 @@ _notifier_init(void) notify_init("Profanity"); #endif } -void (*notifier_init)(void) = _notifier_init; static void _notifier_uninit(void) @@ -57,7 +56,6 @@ _notifier_uninit(void) } #endif } -void (*notifier_uninit)(void) = _notifier_uninit; static void _notify_typing(const char * const handle) @@ -67,7 +65,6 @@ _notify_typing(const char * const handle) _notify(message, 10000, "Incoming message"); } -void (*notify_typing)(const char * const) = _notify_typing; static void _notify_invite(const char * const from, const char * const room, @@ -85,8 +82,6 @@ _notify_invite(const char * const from, const char * const room, g_string_free(message, TRUE); } -void (*notify_invite)(const char * const, const char * const, - const char * const) = _notify_invite; static void _notify_message(const char * const handle, int win) @@ -96,7 +91,6 @@ _notify_message(const char * const handle, int win) _notify(message, 10000, "incoming message"); } -void (*notify_message)(const char * const, int) = _notify_message; static void _notify_room_message(const char * const handle, const char * const room, int win) @@ -110,8 +104,6 @@ _notify_room_message(const char * const handle, const char * const room, int win g_string_free(text, TRUE); } -void (*notify_room_message)(const char * const, const char * const, - int) = _notify_room_message; static void _notify_subscription(const char * const from) @@ -121,7 +113,6 @@ _notify_subscription(const char * const from) _notify(message->str, 10000, "Incomming message"); g_string_free(message, TRUE); } -void (*notify_subscription)(const char * const) = _notify_subscription; static void _notify_remind(void) @@ -167,7 +158,6 @@ _notify_remind(void) g_string_free(text, TRUE); } -void (*notify_remind)(void) = _notify_remind; static void _notify(const char * const message, int timeout, @@ -216,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 8a578a56..4d0ab7ef 100644 --- a/src/ui/statusbar.c +++ b/src/ui/statusbar.c @@ -83,7 +83,6 @@ _create_status_bar(void) dirty = TRUE; } -void (*create_status_bar)(void) = _create_status_bar; static void _status_bar_refresh(void) @@ -108,7 +107,6 @@ _status_bar_refresh(void) g_date_time_unref(now_time); } -void (*status_bar_refresh)(void) = _status_bar_refresh; static void _status_bar_resize(void) @@ -135,7 +133,6 @@ _status_bar_resize(void) last_time = g_date_time_new_now_local(); dirty = TRUE; } -void (*status_bar_resize)(void) = _status_bar_resize; static void _status_bar_set_all_inactive(void) @@ -150,7 +147,6 @@ _status_bar_set_all_inactive(void) g_hash_table_remove_all(remaining_active); g_hash_table_remove_all(remaining_new); } -void (*status_bar_set_all_inactive)(void) = _status_bar_set_all_inactive; static void _status_bar_current(int i) @@ -168,7 +164,6 @@ _status_bar_current(int i) mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, COLOUR_STATUS_BRACKET); } -void (*status_bar_current)(int) = _status_bar_current; static void _status_bar_inactive(const int win) @@ -209,7 +204,6 @@ _status_bar_inactive(const int win) _mark_inactive(true_win); } } -void (*status_bar_inactive)(const int) = _status_bar_inactive; static void _status_bar_active(const int win) @@ -244,7 +238,6 @@ _status_bar_active(const int win) _mark_active(true_win); } } -void (*status_bar_active)(const int) = _status_bar_active; static void _status_bar_new(const int win) @@ -268,7 +261,6 @@ _status_bar_new(const int win) _mark_new(true_win); } } -void (*status_bar_new)(const int) = _status_bar_new; static void _status_bar_get_password(void) @@ -276,7 +268,6 @@ _status_bar_get_password(void) status_bar_print_message("Enter password:"); dirty = TRUE; } -void (*status_bar_get_password)(void) = _status_bar_get_password; static void _status_bar_print_message(const char * const msg) @@ -300,7 +291,6 @@ _status_bar_print_message(const char * const msg) _update_win_statuses(); dirty = TRUE; } -void (*status_bar_print_message)(const char * const) = _status_bar_print_message; static void _status_bar_clear(void) @@ -329,7 +319,6 @@ _status_bar_clear(void) dirty = TRUE; } -void (*status_bar_clear)(void) = _status_bar_clear; static void _status_bar_clear_message(void) @@ -351,7 +340,6 @@ _status_bar_clear_message(void) _update_win_statuses(); dirty = TRUE; } -void (*status_bar_clear_message)(void) = _status_bar_clear_message; static void _status_bar_update_time(void) @@ -433,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 79baae1d..04492b62 100644 --- a/src/ui/titlebar.c +++ b/src/ui/titlebar.c @@ -48,7 +48,6 @@ _create_title_bar(void) title_bar_set_status(CONTACT_OFFLINE); dirty = TRUE; } -void (*create_title_bar)(void) = _create_title_bar; static void _title_bar_title(void) @@ -60,7 +59,6 @@ _title_bar_title(void) _title_bar_draw_status(); dirty = TRUE; } -void (*title_bar_title)(void) = _title_bar_title; static void _title_bar_resize(void) @@ -74,7 +72,6 @@ _title_bar_resize(void) _title_bar_draw_status(); dirty = TRUE; } -void (*title_bar_resize)(void) = _title_bar_resize; static void _title_bar_refresh(void) @@ -109,7 +106,6 @@ _title_bar_refresh(void) dirty = FALSE; } } -void (*title_bar_refresh)(void) = _title_bar_refresh; static void _title_bar_show(const char * const title) @@ -121,7 +117,6 @@ _title_bar_show(const char * const title) strcpy(current_title, title); _title_bar_draw_title(); } -void (*title_bar_show)(const char * const) = _title_bar_show; static void _title_bar_set_status(contact_presence_t status) @@ -129,7 +124,6 @@ _title_bar_set_status(contact_presence_t status) current_status = status; _title_bar_draw_status(); } -void (*title_bar_set_status)(contact_presence_t) = _title_bar_set_status; static void _title_bar_set_recipient(const char * const from) @@ -149,7 +143,6 @@ _title_bar_set_recipient(const char * const from) dirty = TRUE; } -void (*title_bar_set_recipient)(const char * const) = _title_bar_set_recipient; static void _title_bar_set_typing(gboolean is_typing) @@ -176,7 +169,6 @@ _title_bar_set_typing(gboolean is_typing) dirty = TRUE; } -void (*title_bar_set_typing)(gboolean) = _title_bar_set_typing; static void _title_bar_draw(void) @@ -185,7 +177,6 @@ _title_bar_draw(void) _title_bar_draw_status(); _title_bar_draw_title(); } -void (*title_bar_draw)(void) = _title_bar_draw; static void _title_bar_draw_status(void) @@ -236,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 9b5e5079..e5d4118d 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -43,6 +43,10 @@ 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); From 8685e78c86ecd579078aaad961bd23eaba5e3e84 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 26 Dec 2013 13:37:22 +0000 Subject: [PATCH 16/36] Added mock_accounts and fixed tests --- Makefile.am | 2 +- src/config/accounts.c | 170 +++++++----- src/config/accounts.h | 68 ++--- src/main.c | 2 + tests/config/mock_accounts.c | 516 ++++++++++++++++++++++++++++++----- tests/config/mock_accounts.h | 90 ++++++ tests/test_cmd_account.c | 270 +++++++++--------- tests/test_cmd_connect.c | 58 ++-- tests/test_cmd_rooms.c | 7 +- 9 files changed, 847 insertions(+), 336 deletions(-) create mode 100644 tests/config/mock_accounts.h diff --git a/Makefile.am b/Makefile.am index f3634606..4aa18752 100644 --- a/Makefile.am +++ b/Makefile.am @@ -62,8 +62,8 @@ test_sources = \ src/config/theme.c src/config/theme.h \ 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 \ 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 233feb6a..a87b9280 100644 --- a/src/main.c +++ b/src/main.c @@ -54,6 +54,8 @@ _init_modules(void) notifier_init_module(); statusbar_init_module(); titlebar_init_module(); + + accounts_init_module(); } int diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c index 929a3b51..a40d4a67 100644 --- a/tests/config/mock_accounts.c +++ b/tests/config/mock_accounts.c @@ -23,168 +23,558 @@ #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) -{ - return (resource_presence_t)mock(); -} - -resource_presence_t accounts_get_last_presence(const char * const account_name) -{ - return (resource_presence_t)mock(); -} - -void accounts_set_priority_online(const char * const account_name, const gint value) +static void +_mock_accounts_set_priority_chat(const char * const account_name, const gint value) { check_expected(account_name); check_expected(value); } -void accounts_set_priority_chat(const char * const account_name, const gint value) +static void +_mock_accounts_set_priority_away(const char * const account_name, const gint value) { check_expected(account_name); check_expected(value); } -void accounts_set_priority_away(const char * const account_name, const gint value) +static void +_mock_accounts_set_priority_xa(const char * const account_name, const gint value) { check_expected(account_name); check_expected(value); } -void accounts_set_priority_xa(const char * const account_name, const gint value) +static void +_mock_accounts_set_priority_dnd(const char * const account_name, const gint value) { check_expected(account_name); check_expected(value); } -void accounts_set_priority_dnd(const char * const account_name, const gint value) + +static void +_mock_accounts_set_login_presence(const char * const account_name, const char * const value) { check_expected(account_name); check_expected(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) +static void +_stub_accounts_set_login_presence(const char * const account_name, const char * const value) { - return (gint)mock(); } -void accounts_clear_password(const char * const account_name) {} +// set up functions -char * accounts_create_full_jid(ProfAccount *account) +void +mock_accounts_get_account(void) { - return (char *)mock(); + accounts_get_account = _mock_accounts_get_account; } +void +mock_accounts_create_full_jid(void) +{ + accounts_create_full_jid = _mock_accounts_create_full_jid; +} + +void +stub_accounts_free_account(void) +{ + accounts_free_account = _stub_accounts_free_account; +} + +void +mock_accounts_free_account(void) +{ + accounts_free_account = _mock_accounts_free_account; +} + +void +mock_accounts_get_list(void) +{ + accounts_get_list = _mock_accounts_get_list; +} + +void +mock_accounts_add(void) +{ + accounts_add = _mock_accounts_add; +} + +void +stub_accounts_add(void) +{ + accounts_add = _stub_accounts_add; +} + +void +mock_accounts_enable(void) +{ + 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 +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; +} + +// 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); +} diff --git a/tests/config/mock_accounts.h b/tests/config/mock_accounts.h new file mode 100644 index 00000000..84bfcc0a --- /dev/null +++ b/tests/config/mock_accounts.h @@ -0,0 +1,90 @@ +/* + * 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 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); diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index b2650d8e..6d7a6d85 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -12,6 +12,9 @@ #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) @@ -34,6 +37,8 @@ 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 }; @@ -41,13 +46,10 @@ void cmd_account_shows_account_when_connected_and_no_args(void **state) mock_connection_status(JABBER_CONNECTED); mock_connection_account_name("account_name"); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, account); + accounts_get_account_return(account); expect_cons_show_account(account); - expect_any(accounts_free_account, account); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -58,6 +60,7 @@ 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 }; @@ -67,7 +70,7 @@ 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_cons_show_account_list(accounts); @@ -95,11 +98,11 @@ 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_cons_show("No such account."); expect_cons_show(""); @@ -113,17 +116,16 @@ void cmd_account_show_shows_message_when_account_does_not_exist(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_cons_show_account(account); - expect_any(accounts_free_account, account); - gboolean result = cmd_account(args, *help); assert_true(result); @@ -148,10 +150,11 @@ 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"); + accounts_add_expect_account_name("new_account"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -162,11 +165,10 @@ 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_cons_show("Account created.");; expect_cons_show(""); @@ -194,11 +196,11 @@ 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); + accounts_enable_expect("account_name"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -209,11 +211,11 @@ 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_cons_show("Account enabled."); expect_cons_show(""); @@ -227,11 +229,11 @@ 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_cons_show("No such account: account_name"); expect_cons_show(""); @@ -260,11 +262,11 @@ 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); + accounts_disable_expect("account_name"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -275,11 +277,11 @@ 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_cons_show("Account disabled."); expect_cons_show(""); @@ -293,11 +295,11 @@ 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_cons_show("No such account: account_name"); expect_cons_show(""); @@ -341,12 +343,11 @@ 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); + accounts_rename_expect("original_name", "new_name"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -357,12 +358,11 @@ 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_cons_show("Account renamed."); expect_cons_show(""); @@ -376,12 +376,11 @@ 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_cons_show("Either account original_name doesn't exist, or account new_name already exists."); expect_cons_show(""); @@ -440,11 +439,11 @@ 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); + accounts_account_exists_expect("a_account"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -455,11 +454,11 @@ 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_cons_show("Account a_account doesn't exist"); expect_cons_show(""); @@ -473,11 +472,11 @@ 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_cons_show("Malformed jid: @malformed"); @@ -490,20 +489,18 @@ 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_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_cons_show_calls(2); gboolean result = cmd_account(args, *help); @@ -515,19 +512,17 @@ 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); - - expect_any(accounts_set_jid, account_name); - expect_any(accounts_set_jid, value); + accounts_account_exists_return(TRUE); expect_cons_show_calls(1); - expect_string(accounts_set_resource, account_name, "a_account"); - expect_string(accounts_set_resource, value, "a_resource"); + accounts_set_resource_expect("a_account", "a_resource"); expect_cons_show("Updated resource for account a_account: a_resource"); expect_cons_show(""); @@ -541,14 +536,14 @@ 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"); + accounts_set_server_expect("a_account", "a_server"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -559,14 +554,12 @@ 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); - - expect_any(accounts_set_server, account_name); - expect_any(accounts_set_server, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated server for account a_account: a_server"); expect_cons_show(""); @@ -580,14 +573,14 @@ 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"); + accounts_set_resource_expect("a_account", "a_resource"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -598,14 +591,12 @@ 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); - - expect_any(accounts_set_resource, account_name); - expect_any(accounts_set_resource, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated resource for account a_account: a_resource"); expect_cons_show(""); @@ -619,14 +610,14 @@ 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"); + accounts_set_password_expect("a_account", "a_password"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -637,14 +628,12 @@ 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); - - expect_any(accounts_set_password, account_name); - expect_any(accounts_set_password, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated password for account a_account"); expect_cons_show(""); @@ -658,14 +647,14 @@ 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"); + accounts_set_muc_service_expect("a_account", "a_muc"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -676,14 +665,12 @@ 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); - - expect_any(accounts_set_muc_service, account_name); - expect_any(accounts_set_muc_service, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated muc service for account a_account: a_muc"); expect_cons_show(""); @@ -697,14 +684,14 @@ 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"); + accounts_set_muc_nick_expect("a_account", "a_nick"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -715,14 +702,12 @@ 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); - - expect_any(accounts_set_muc_nick, account_name); - expect_any(accounts_set_muc_nick, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated muc nick for account a_account: a_nick"); expect_cons_show(""); @@ -736,11 +721,12 @@ 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_cons_show("Invalid status: bad_status"); expect_cons_show(""); @@ -754,14 +740,14 @@ 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"); + accounts_set_login_presence_expect("a_account", "away"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -772,14 +758,14 @@ 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"); + accounts_set_login_presence_expect("a_account", "last"); gboolean result = cmd_account(args, *help); assert_true(result); @@ -790,14 +776,12 @@ 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); - - expect_any(accounts_set_login_presence, account_name); - expect_any(accounts_set_login_presence, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated login status for account a_account: away"); expect_cons_show(""); @@ -811,14 +795,12 @@ 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); - - expect_any(accounts_set_login_presence, account_name); - expect_any(accounts_set_login_presence, value); + accounts_account_exists_return(TRUE); expect_cons_show("Updated login status for account a_account: last"); expect_cons_show(""); @@ -832,11 +814,11 @@ 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_cons_show("Invalid property: blah"); expect_cons_show(""); @@ -850,11 +832,11 @@ 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_cons_show("Invalid property: last"); expect_cons_show(""); @@ -868,14 +850,14 @@ 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); mock_connection_status(JABBER_DISCONNECTED); @@ -888,14 +870,14 @@ 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); mock_connection_status(JABBER_DISCONNECTED); @@ -908,14 +890,14 @@ 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); mock_connection_status(JABBER_DISCONNECTED); @@ -928,14 +910,14 @@ 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); mock_connection_status(JABBER_DISCONNECTED); @@ -948,14 +930,14 @@ 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); mock_connection_status(JABBER_DISCONNECTED); diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index 0095d144..6657c745 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -14,6 +14,8 @@ #include "command/commands.h" +#include "config/accounts.h" +#include "config/mock_accounts.h" static jabber_conn_status_t _mock_jabber_connect_with_details_no_altdomain(const char * const jid, const char * const passwd, const char * const altdomain) @@ -85,14 +87,14 @@ 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(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; 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); mock_ui_ask_password_returns("password"); @@ -113,13 +115,13 @@ void cmd_connect_with_altdomain_when_provided(void **state) { stub_ui_ask_password(); stub_cons_show(); + mock_accounts_get_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", "altdomain" }; mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, NULL); + accounts_get_account_return(NULL); jabber_connect_with_details = _mock_jabber_connect_with_details_altdomain; expect_string(_mock_jabber_connect_with_details_altdomain, altdomain, "altdomain"); @@ -136,13 +138,13 @@ void cmd_connect_fail_message(void **state) stub_cons_show(); mock_cons_show_error(); stub_ui_ask_password(); + mock_accounts_get_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "user@server.org", NULL }; mock_connection_status(JABBER_DISCONNECTED); - expect_any(accounts_get_account, name); - will_return(accounts_get_account, NULL); + accounts_get_account_return(NULL); jabber_connect_with_details = _mock_jabber_connect_with_details_result; will_return(_mock_jabber_connect_with_details_result, JABBER_DISCONNECTED); @@ -159,13 +161,13 @@ void cmd_connect_lowercases_argument(void **state) { stub_cons_show(); stub_ui_ask_password(); + mock_accounts_get_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "USER@server.ORG", NULL }; 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); jabber_connect_with_details = _mock_jabber_connect_with_details_result; will_return(_mock_jabber_connect_with_details_result, JABBER_CONNECTING); @@ -180,6 +182,9 @@ 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(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -187,16 +192,13 @@ void cmd_connect_asks_password_when_not_in_account(void **state) 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"); jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); - expect_any(accounts_free_account, account); - gboolean result = cmd_connect(args, *help); assert_true(result); @@ -207,6 +209,9 @@ 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(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -215,18 +220,15 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) 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_cons_show("Connecting with account jabber_org as user@jabber.org/laptop"); jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); - expect_any(accounts_free_account, account); - gboolean result = cmd_connect(args, *help); assert_true(result); @@ -237,6 +239,9 @@ 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(); + stub_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); @@ -245,17 +250,14 @@ void cmd_connect_connects_with_account(void **state) 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"); jabber_connect_with_account = _mock_jabber_connect_with_account_result_check; expect_memory(_mock_jabber_connect_with_account_result_check, account, account, sizeof(ProfAccount)); will_return(_mock_jabber_connect_with_account_result_check, JABBER_CONNECTING); - expect_any(accounts_free_account, account); - gboolean result = cmd_connect(args, *help); assert_true(result); @@ -266,21 +268,23 @@ 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_accounts_free_account(); CommandHelp *help = malloc(sizeof(CommandHelp)); gchar *args[] = { "jabber_org", NULL }; ProfAccount *account = malloc(sizeof(ProfAccount)); 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"); jabber_connect_with_account = _mock_jabber_connect_with_account_result; will_return(_mock_jabber_connect_with_account_result, 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 01aeecbe..bbd05471 100644 --- a/tests/test_cmd_rooms.c +++ b/tests/test_cmd_rooms.c @@ -11,6 +11,9 @@ #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) @@ -54,6 +57,7 @@ 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"; @@ -62,8 +66,7 @@ void cmd_rooms_uses_account_default_when_no_arg(void **state) mock_connection_status(JABBER_CONNECTED); mock_connection_account_name("account_name"); - expect_string(accounts_get_account, name, "account_name"); - will_return(accounts_get_account, account); + accounts_get_account_return(account); expect_room_list_request("default_conf_server"); From a2c0dab4741b8a9455e4bba1802d593a8458d882 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 26 Dec 2013 14:48:25 +0000 Subject: [PATCH 17/36] Removed mock code from tests --- tests/test_cmd_connect.c | 68 +++++++++--------------------------- tests/xmpp/mock_xmpp.c | 74 ++++++++++++++++++++++++++++++++++++++++ tests/xmpp/mock_xmpp.h | 12 +++++++ 3 files changed, 102 insertions(+), 52 deletions(-) diff --git a/tests/test_cmd_connect.c b/tests/test_cmd_connect.c index 6657c745..d47666ef 100644 --- a/tests/test_cmd_connect.c +++ b/tests/test_cmd_connect.c @@ -17,38 +17,6 @@ #include "config/accounts.h" #include "config/mock_accounts.h" -static jabber_conn_status_t _mock_jabber_connect_with_details_no_altdomain(const char * const jid, - const char * const passwd, const char * const altdomain) -{ - check_expected(jid); - check_expected(passwd); - return (jabber_conn_status_t)mock(); -} - -static jabber_conn_status_t _mock_jabber_connect_with_details_altdomain(const char * const jid, - const char * const passwd, const char * const altdomain) -{ - check_expected(altdomain); - return (jabber_conn_status_t)mock(); -} - -static jabber_conn_status_t _mock_jabber_connect_with_details_result(const char * const jid, - const char * const passwd, const char * const altdomain) -{ - return (jabber_conn_status_t)mock(); -} - -static jabber_conn_status_t _mock_jabber_connect_with_account_result(const ProfAccount * const account) -{ - return (jabber_conn_status_t)mock(); -} - -static jabber_conn_status_t _mock_jabber_connect_with_account_result_check(const ProfAccount * const account) -{ - check_expected(account); - return (jabber_conn_status_t)mock(); -} - static void test_with_connection_status(jabber_conn_status_t status) { mock_cons_show(); @@ -89,6 +57,7 @@ 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 }; @@ -100,10 +69,7 @@ void cmd_connect_when_no_account(void **state) expect_cons_show("Connecting as user@server.org"); - jabber_connect_with_details = _mock_jabber_connect_with_details_no_altdomain; - expect_string(_mock_jabber_connect_with_details_no_altdomain, jid, "user@server.org"); - expect_string(_mock_jabber_connect_with_details_no_altdomain, passwd, "password"); - will_return(_mock_jabber_connect_with_details_no_altdomain, 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); @@ -116,6 +82,7 @@ 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" }; @@ -123,9 +90,7 @@ void cmd_connect_with_altdomain_when_provided(void **state) accounts_get_account_return(NULL); - jabber_connect_with_details = _mock_jabber_connect_with_details_altdomain; - expect_string(_mock_jabber_connect_with_details_altdomain, altdomain, "altdomain"); - will_return(_mock_jabber_connect_with_details_altdomain, JABBER_CONNECTING); + jabber_connect_with_altdomain_expect_and_return("altdomain", JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -139,6 +104,7 @@ void cmd_connect_fail_message(void **state) 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 }; @@ -146,8 +112,7 @@ void cmd_connect_fail_message(void **state) accounts_get_account_return(NULL); - jabber_connect_with_details = _mock_jabber_connect_with_details_result; - will_return(_mock_jabber_connect_with_details_result, JABBER_DISCONNECTED); + jabber_connect_with_details_return(JABBER_DISCONNECTED); expect_cons_show_error("Connection attempt for user@server.org failed."); @@ -162,6 +127,7 @@ 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 }; @@ -169,8 +135,7 @@ void cmd_connect_lowercases_argument(void **state) accounts_get_account_expect_and_return("user@server.org", NULL); - jabber_connect_with_details = _mock_jabber_connect_with_details_result; - will_return(_mock_jabber_connect_with_details_result, JABBER_CONNECTING); + jabber_connect_with_details_return(JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -184,6 +149,7 @@ void cmd_connect_asks_password_when_not_in_account(void **state) 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 }; @@ -196,8 +162,7 @@ void cmd_connect_asks_password_when_not_in_account(void **state) accounts_create_full_jid_return("user@jabber.org"); - jabber_connect_with_account = _mock_jabber_connect_with_account_result; - will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); + jabber_connect_with_account_return(JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -211,6 +176,7 @@ 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 }; @@ -226,8 +192,7 @@ void cmd_connect_shows_message_when_connecting_with_account(void **state) expect_cons_show("Connecting with account jabber_org as user@jabber.org/laptop"); - jabber_connect_with_account = _mock_jabber_connect_with_account_result; - will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); + jabber_connect_with_account_return(JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -241,6 +206,7 @@ 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 }; @@ -254,9 +220,7 @@ void cmd_connect_connects_with_account(void **state) accounts_create_full_jid_return("user@jabber.org/laptop"); - jabber_connect_with_account = _mock_jabber_connect_with_account_result_check; - expect_memory(_mock_jabber_connect_with_account_result_check, account, account, sizeof(ProfAccount)); - will_return(_mock_jabber_connect_with_account_result_check, JABBER_CONNECTING); + jabber_connect_with_account_expect_and_return(account, JABBER_CONNECTING); gboolean result = cmd_connect(args, *help); assert_true(result); @@ -270,6 +234,7 @@ 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 }; @@ -281,8 +246,7 @@ void cmd_connect_frees_account_after_connecting(void **state) accounts_create_full_jid_return("user@jabber.org/laptop"); - jabber_connect_with_account = _mock_jabber_connect_with_account_result; - will_return(_mock_jabber_connect_with_account_result, JABBER_CONNECTING); + jabber_connect_with_account_return(JABBER_CONNECTING); accounts_free_account_expect(account); diff --git a/tests/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c index ab0f7856..c405ae48 100644 --- a/tests/xmpp/mock_xmpp.c +++ b/tests/xmpp/mock_xmpp.c @@ -26,6 +26,35 @@ _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); + check_expected(passwd); + check_expected(altdomain); + return (jabber_conn_status_t)mock(); +} + +static jabber_conn_status_t +_mock_jabber_connect_with_account(const ProfAccount * const account) +{ + check_expected(account); + return (jabber_conn_status_t)mock(); +} + +void +mock_jabber_connect_with_details(void) +{ + jabber_connect_with_details = _mock_jabber_connect_with_details; +} + +void +mock_jabber_connect_with_account(void) +{ + jabber_connect_with_account = _mock_jabber_connect_with_account; +} + void mock_connection_status(jabber_conn_status_t status) { @@ -46,3 +75,48 @@ expect_room_list_request(char *conf_server) iq_room_list_request = _mock_iq_room_list_request; expect_string(_mock_iq_room_list_request, conf_server, conf_server); } + +void +jabber_connect_with_username_password_expect_and_return(char *jid, + char *password, jabber_conn_status_t result) +{ + 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 +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 +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); +} diff --git a/tests/xmpp/mock_xmpp.h b/tests/xmpp/mock_xmpp.h index 89096836..678fa25d 100644 --- a/tests/xmpp/mock_xmpp.h +++ b/tests/xmpp/mock_xmpp.h @@ -7,4 +7,16 @@ void mock_connection_status(jabber_conn_status_t status); void mock_connection_account_name(char *name); 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); + #endif From b466809245f125f4c85c85e72cce0d167315aea8 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 26 Dec 2013 15:17:46 +0000 Subject: [PATCH 18/36] Added test for showing message when changing priority --- tests/config/mock_accounts.c | 39 ++++++++++++++++++++++++++++++++++++ tests/config/mock_accounts.h | 1 + tests/test_cmd_account.c | 22 +++++++++++++++++++- tests/test_cmd_account.h | 1 + tests/testsuite.c | 1 + 5 files changed, 63 insertions(+), 1 deletion(-) diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c index a40d4a67..893a0449 100644 --- a/tests/config/mock_accounts.c +++ b/tests/config/mock_accounts.c @@ -188,6 +188,12 @@ _mock_accounts_set_priority_online(const char * const account_name, const gint v check_expected(value); } +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) { @@ -195,6 +201,12 @@ _mock_accounts_set_priority_chat(const char * const account_name, const gint val 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) { @@ -202,6 +214,12 @@ _mock_accounts_set_priority_away(const char * const account_name, const gint val 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) { @@ -209,6 +227,12 @@ _mock_accounts_set_priority_xa(const char * const account_name, const gint value 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) { @@ -216,6 +240,11 @@ _mock_accounts_set_priority_dnd(const char * const account_name, const gint valu 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) @@ -379,6 +408,16 @@ mock_accounts_set_priorities(void) 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) { diff --git a/tests/config/mock_accounts.h b/tests/config/mock_accounts.h index 84bfcc0a..38c6ca94 100644 --- a/tests/config/mock_accounts.h +++ b/tests/config/mock_accounts.h @@ -79,6 +79,7 @@ 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); diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 6d7a6d85..204f0985 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -947,7 +947,27 @@ void cmd_account_set_dnd_priority_sets_preference(void **state) free(help); } -// test message shown when set +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); + +} // test invalid priority low // test invalid priority high // test presence updated when connected as account and current presence equals setting diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 8d63dcbc..20376dad 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -50,3 +50,4 @@ 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); diff --git a/tests/testsuite.c b/tests/testsuite.c index 2e8c2e30..189698a4 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -241,6 +241,7 @@ 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), }; return run_tests(tests); } From ada3c768e503d25e743bd0b6e18def475f9c776e Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 00:05:06 +0000 Subject: [PATCH 19/36] Test priority below lower bounds --- tests/test_cmd_account.c | 18 ++++++++++++++++++ tests/test_cmd_account.h | 1 + tests/testsuite.c | 1 + 3 files changed, 20 insertions(+) diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 204f0985..3db512ab 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -967,6 +967,24 @@ void cmd_account_set_online_priority_shows_message(void **state) free(help); +} + +void cmd_account_does_not_set_priority_when_too_low(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 out of range. Must be in -128..127."); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); + + } // test invalid priority low // test invalid priority high diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 20376dad..94ce6d74 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -51,3 +51,4 @@ 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_does_not_set_priority_when_too_low(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index 189698a4..126a69a2 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -242,6 +242,7 @@ int main(int argc, char* argv[]) { 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_does_not_set_priority_when_too_low), }; return run_tests(tests); } From 9d1b05a8964fd1271e2cbd32cfa8036afd24a7d2 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 00:07:04 +0000 Subject: [PATCH 20/36] Test priority above upper bounds --- tests/test_cmd_account.c | 21 +++++++++++++++++++-- tests/test_cmd_account.h | 1 + tests/testsuite.c | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 3db512ab..c0cceae6 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -986,7 +986,24 @@ void cmd_account_does_not_set_priority_when_too_low(void **state) } -// test invalid priority low -// test invalid priority high + +void cmd_account_does_not_set_priority_when_too_high(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 out of range. Must be in -128..127."); + + gboolean result = cmd_account(args, *help); + assert_true(result); + + free(help); + + +} + // test presence updated when connected as account and current presence equals setting diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 94ce6d74..9377cf08 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -52,3 +52,4 @@ 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_does_not_set_priority_when_too_low(void **state); +void cmd_account_does_not_set_priority_when_too_high(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index 126a69a2..30d53ffa 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -243,6 +243,7 @@ int main(int argc, char* argv[]) { unit_test(cmd_account_set_dnd_priority_sets_preference), unit_test(cmd_account_set_online_priority_shows_message), unit_test(cmd_account_does_not_set_priority_when_too_low), + unit_test(cmd_account_does_not_set_priority_when_too_high), }; return run_tests(tests); } From 7a63cf2e22bc0ff11448644f0d739df5cf1f4e67 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 00:29:20 +0000 Subject: [PATCH 21/36] Changed messages on invalid priorities --- src/command/commands.c | 8 ++++---- tests/test_cmd_account.c | 41 +++++++++++++++++++++++++++++++++------- tests/test_cmd_account.h | 6 ++++-- tests/testsuite.c | 6 ++++-- 4 files changed, 46 insertions(+), 15 deletions(-) diff --git a/src/command/commands.c b/src/command/commands.c index 67458c79..1797c7ed 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -2310,11 +2310,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/tests/test_cmd_account.c b/tests/test_cmd_account.c index c0cceae6..da1bc0f5 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -966,10 +966,9 @@ void cmd_account_set_online_priority_shows_message(void **state) assert_true(result); free(help); - } -void cmd_account_does_not_set_priority_when_too_low(void **state) +void cmd_account_set_priority_too_low_shows_message(void **state) { mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); @@ -977,17 +976,15 @@ void cmd_account_does_not_set_priority_when_too_low(void **state) accounts_account_exists_return(TRUE); - expect_cons_show("Value out of range. Must be in -128..127."); + 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_does_not_set_priority_when_too_high(void **state) +void cmd_account_set_priority_too_high_shows_message(void **state) { mock_cons_show(); CommandHelp *help = malloc(sizeof(CommandHelp)); @@ -995,14 +992,44 @@ void cmd_account_does_not_set_priority_when_too_high(void **state) accounts_account_exists_return(TRUE); - expect_cons_show("Value out of range. Must be in -128..127."); + 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); } // test presence updated when connected as account and current presence equals setting diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 9377cf08..7ff9970a 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -51,5 +51,7 @@ 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_does_not_set_priority_when_too_low(void **state); -void cmd_account_does_not_set_priority_when_too_high(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); diff --git a/tests/testsuite.c b/tests/testsuite.c index 30d53ffa..843a5981 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -242,8 +242,10 @@ int main(int argc, char* argv[]) { 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_does_not_set_priority_when_too_low), - unit_test(cmd_account_does_not_set_priority_when_too_high), + 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), }; return run_tests(tests); } From 6d6bc67d5c70f4e43dd1eb543f58767de119ea8a Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 14:17:24 +0000 Subject: [PATCH 22/36] Test for presence update when changing priority --- src/command/commands.c | 3 ++- tests/config/mock_accounts.c | 21 +++++++++++++++++++++ tests/config/mock_accounts.h | 3 +++ tests/test_cmd_account.c | 25 ++++++++++++++++++++++++- tests/test_cmd_account.h | 1 + tests/testsuite.c | 1 + tests/xmpp/mock_xmpp.c | 35 +++++++++++++++++++++++++++++++++++ tests/xmpp/mock_xmpp.h | 4 ++++ 8 files changed, 91 insertions(+), 2 deletions(-) diff --git a/src/command/commands.c b/src/command/commands.c index 1797c7ed..c5b253e7 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -266,7 +266,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); diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c index 893a0449..db2e0fd5 100644 --- a/tests/config/mock_accounts.c +++ b/tests/config/mock_accounts.c @@ -256,6 +256,14 @@ _mock_accounts_set_login_presence(const char * const account_name, const char * 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(); } // set up functions @@ -430,6 +438,12 @@ 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 @@ -617,3 +631,10 @@ 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 index 38c6ca94..b914968a 100644 --- a/tests/config/mock_accounts.h +++ b/tests/config/mock_accounts.h @@ -89,3 +89,6 @@ 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 da1bc0f5..c924c6ee 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -1032,5 +1032,28 @@ void cmd_account_set_priority_when_empty_shows_message(void **state) free(help); } -// test presence updated when connected as account and current presence equals setting +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); +} diff --git a/tests/test_cmd_account.h b/tests/test_cmd_account.h index 7ff9970a..d4730652 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -55,3 +55,4 @@ 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); diff --git a/tests/testsuite.c b/tests/testsuite.c index 843a5981..62bbfc63 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -246,6 +246,7 @@ int main(int argc, char* argv[]) { 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), }; return run_tests(tests); } diff --git a/tests/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c index c405ae48..70bcbc3b 100644 --- a/tests/xmpp/mock_xmpp.c +++ b/tests/xmpp/mock_xmpp.c @@ -43,6 +43,20 @@ _mock_jabber_connect_with_account(const ProfAccount * const account) return (jabber_conn_status_t)mock(); } +static char * +_mock_jabber_get_presence_message(void) +{ + return (char *)mock(); +} + +static void +_mock_presence_update(resource_presence_t status, const char * const msg, int idle) +{ + check_expected(status); + check_expected(msg); + check_expected(idle); +} + void mock_jabber_connect_with_details(void) { @@ -55,6 +69,12 @@ mock_jabber_connect_with_account(void) jabber_connect_with_account = _mock_jabber_connect_with_account; } +void +mock_presence_update(void) +{ + presence_update = _mock_presence_update; +} + void mock_connection_status(jabber_conn_status_t status) { @@ -69,6 +89,13 @@ mock_connection_account_name(char *name) will_return(_mock_jabber_get_account_name, name); } +void +mock_connection_presence_message(char *message) +{ + jabber_get_presence_message = _mock_jabber_get_presence_message; + will_return(_mock_jabber_get_presence_message, message); +} + void expect_room_list_request(char *conf_server) { @@ -120,3 +147,11 @@ jabber_connect_with_account_return(ProfAccount *account, 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 index 678fa25d..c52f5e5f 100644 --- a/tests/xmpp/mock_xmpp.h +++ b/tests/xmpp/mock_xmpp.h @@ -5,6 +5,7 @@ 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); @@ -19,4 +20,7 @@ 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 From 122fe09c6153f0e368a1615e110a3458f24b52e2 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 14:35:31 +0000 Subject: [PATCH 23/36] Added tests for "/account clear " --- tests/test_cmd_account.c | 82 ++++++++++++++++++++++++++++++++++++++++ tests/test_cmd_account.h | 5 +++ tests/testsuite.c | 5 +++ 3 files changed, 92 insertions(+) diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index c924c6ee..5de766e2 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -1057,3 +1057,85 @@ void cmd_account_set_priority_updates_presence_when_account_connected_with_prese 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 d4730652..dcf1b8ee 100644 --- a/tests/test_cmd_account.h +++ b/tests/test_cmd_account.h @@ -56,3 +56,8 @@ 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/testsuite.c b/tests/testsuite.c index 62bbfc63..e906c358 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -247,6 +247,11 @@ int main(int argc, char* argv[]) { 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), }; return run_tests(tests); } From c3fbaf8b2a75fc28df933e5f48fda2e8468b7e80 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 14:36:42 +0000 Subject: [PATCH 24/36] Removed whitespace --- tests/test_cmd_account.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cmd_account.c b/tests/test_cmd_account.c index 5de766e2..4891930c 100644 --- a/tests/test_cmd_account.c +++ b/tests/test_cmd_account.c @@ -1137,5 +1137,5 @@ void cmd_account_clear_shows_message_when_invalid_property(void **state) assert_true(result); free(help); - + } From 976f3e303a550b9594899bafd4498b531ea7c86e Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 17:25:30 +0000 Subject: [PATCH 25/36] Added /sub command test --- Makefile.am | 1 + src/command/commands.c | 2 +- tests/test_cmd_sub.c | 31 +++++++++++++++++++++++++++++++ tests/test_cmd_sub.h | 1 + tests/testsuite.c | 4 ++++ 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tests/test_cmd_sub.c create mode 100644 tests/test_cmd_sub.h diff --git a/Makefile.am b/Makefile.am index 4aa18752..5d00adda 100644 --- a/Makefile.am +++ b/Makefile.am @@ -69,6 +69,7 @@ test_sources = \ 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/src/command/commands.c b/src/command/commands.c index c5b253e7..f09bf0e4 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -311,7 +311,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 +336,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; diff --git a/tests/test_cmd_sub.c b/tests/test_cmd_sub.c new file mode 100644 index 00000000..4f459be3 --- /dev/null +++ b/tests/test_cmd_sub.c @@ -0,0 +1,31 @@ +#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); +} diff --git a/tests/test_cmd_sub.h b/tests/test_cmd_sub.h new file mode 100644 index 00000000..b8c95c1a --- /dev/null +++ b/tests/test_cmd_sub.h @@ -0,0 +1 @@ +void cmd_sub_shows_message_when_not_connected(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index e906c358..1ffd2a71 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" @@ -252,6 +253,9 @@ int main(int argc, char* argv[]) { 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), + }; return run_tests(tests); } From 7127a934c79a6851bc8c384a41893f98afd6b479 Mon Sep 17 00:00:00 2001 From: Jasper van Bourgognie Date: Fri, 27 Dec 2013 20:50:43 +0100 Subject: [PATCH 26/36] Fixed types of presence variables to resource_presence_type (avoid useless and implicit casts) --- src/xmpp/presence.c | 4 ++-- src/xmpp/roster.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/xmpp/presence.c b/src/xmpp/presence.c index 5698b520..3ca2f63e 100644 --- a/src/xmpp/presence.c +++ b/src/xmpp/presence.c @@ -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(); @@ -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(); diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c index 7d4b0efe..e84de155 100644 --- a/src/xmpp/roster.c +++ b/src/xmpp/roster.c @@ -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); } From 8f26b3bbf96d50cd616d02da7690acc945fedef9 Mon Sep 17 00:00:00 2001 From: Jasper van Bourgognie Date: Fri, 27 Dec 2013 20:52:42 +0100 Subject: [PATCH 27/36] configure.ac: Check for ncurses instead of ncursesw --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 32b60823..9aece663 100644 --- a/configure.ac +++ b/configure.ac @@ -72,8 +72,8 @@ 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([ncurses], [main], [], + [AC_MSG_ERROR([ncurses 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], [], From 4a706f7a801c4a4c18c30e27a6b31a468ef27b43 Mon Sep 17 00:00:00 2001 From: Jasper van Bourgognie Date: Fri, 27 Dec 2013 20:56:47 +0100 Subject: [PATCH 28/36] src/ui/core.c: Removed duplicate const keyword --- src/ui/core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ui/core.c b/src/ui/core.c index c5636d3a..c06f025e 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -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"); } } @@ -1026,8 +1026,8 @@ _ui_room_roster(const char * const room, GList *roster, const char * const prese 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); From 7272f42c97f5ecfd453f7c01888adf1a22cd7534 Mon Sep 17 00:00:00 2001 From: Jasper van Bourgognie Date: Fri, 27 Dec 2013 22:05:33 +0100 Subject: [PATCH 29/36] configure.ac: use ncursesw if it's there, but continue if only ncurses is found --- configure.ac | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 9aece663..efc20277 100644 --- a/configure.ac +++ b/configure.ac @@ -72,8 +72,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([ncurses], [main], [], - [AC_MSG_ERROR([ncurses is required for profanity])]) +AC_CHECK_LIB([ncursesw], [main], [], + [AC_CHECK_LIB([ncurses],[main], + [AC_MSG_NOTICE([ncursesw not found but trying with ncurses instead])], + [AC_MSG_ERROR([ncurses 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], [], From 0331cbe2490714607ffc3216cd2412d69c0ee283 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 22:12:39 +0000 Subject: [PATCH 30/36] Test usage shown for /sub --- tests/test_cmd_sub.c | 17 +++++++++++++++++ tests/test_cmd_sub.h | 1 + tests/testsuite.c | 1 + 3 files changed, 19 insertions(+) diff --git a/tests/test_cmd_sub.c b/tests/test_cmd_sub.c index 4f459be3..d2447a91 100644 --- a/tests/test_cmd_sub.c +++ b/tests/test_cmd_sub.c @@ -29,3 +29,20 @@ void cmd_sub_shows_message_when_not_connected(void **state) 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 index b8c95c1a..6e8addd3 100644 --- a/tests/test_cmd_sub.h +++ b/tests/test_cmd_sub.h @@ -1 +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 1ffd2a71..c0e98b23 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -255,6 +255,7 @@ int main(int argc, char* argv[]) { 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); From 2defeaefe3f105711e8421d65cc80729fe362d42 Mon Sep 17 00:00:00 2001 From: James Booth Date: Fri, 27 Dec 2013 23:38:45 +0000 Subject: [PATCH 31/36] Removed wins_refresh_console when not required for /sub command output Implicitly called by cons_show --- src/ui/console.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/ui/console.c b/src/ui/console.c index bb6c4a38..b9522ae0 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -548,7 +548,6 @@ _cons_show_received_subs(void) g_slist_free_full(received, g_free); } - wins_refresh_console(); cons_alert(); } @@ -570,7 +569,6 @@ _cons_show_sent_subs(void) cons_show("No pending requests sent."); } - wins_refresh_console(); cons_alert(); } From d3fff13255863901a1af0860857e2a8276f7e324 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 2 Jan 2014 01:31:03 +0000 Subject: [PATCH 32/36] Added full stop to /about help summary Conflicts: src/command/command.c --- src/command/command.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/command.c b/src/command/command.c index e37331ce..ad4235b8 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -90,7 +90,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.", From 8d4bec2d37a52ca8b3ae39e5f7b36a9ef5e289df Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 2 Jan 2014 01:33:24 +0000 Subject: [PATCH 33/36] Added full stop to /chlog help summary Conflicts: src/command/command.c --- src/command/command.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/command.c b/src/command/command.c index ad4235b8..031babce 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -540,7 +540,7 @@ static struct cmd_t command_defs[] = { "/chlog", cmd_chlog, parse_args, 1, 1, &cons_chlog_setting, - { "/chlog on|off", "Chat logging to file", + { "/chlog on|off", "Chat logging to file.", { "/chlog on|off", "-------------", "Switch chat logging on or off.", From 9823b2fae279d9d3f89f0dba1595bfa74c138902 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 2 Jan 2014 01:35:34 +0000 Subject: [PATCH 34/36] Added full stop to /help service summary --- src/ui/console.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/console.c b/src/ui/console.c index b9522ae0..83a2b82e 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -1280,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."); From 3a57a792e415e6bdf8b7465e29df052fb7b96e51 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 2 Jan 2014 01:39:43 +0000 Subject: [PATCH 35/36] Added full stop to /grlog help summary Conflicts: src/command/command.c --- src/command/command.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/command.c b/src/command/command.c index 031babce..ac020a15 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -551,7 +551,7 @@ static struct cmd_t command_defs[] = { "/grlog", cmd_grlog, parse_args, 1, 1, &cons_grlog_setting, - { "/grlog on|off", "Chat logging of chat rooms to file", + { "/grlog on|off", "Chat logging of chat rooms to file.", { "/grlog on|off", "-------------", "Switch chat room logging on or off.", From 3fbd45bd0603d51255c9e6df2a56d5cd5de4dd2b Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 2 Jan 2014 01:40:46 +0000 Subject: [PATCH 36/36] Added full stop to /help help summary Conflicts: src/command/command.c --- src/command/command.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/command.c b/src/command/command.c index ac020a15..6d7aa627 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -74,7 +74,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.",