Dynamically load UI functions, fixed tests
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <glib.h>
|
||||
#include <setjmp.h>
|
||||
#include <cmocka.h>
|
||||
#include <string.h>
|
||||
|
||||
#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) {}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user