diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_autocomplete.h | 10 | ||||
-rw-r--r-- | tests/test_command.c | 21 | ||||
-rw-r--r-- | tests/test_command.h | 1 | ||||
-rw-r--r-- | tests/test_common.h | 32 | ||||
-rw-r--r-- | tests/ui/mock_ui.c | 302 | ||||
-rw-r--r-- | tests/xmpp/mock_xmpp.c | 150 |
6 files changed, 516 insertions, 0 deletions
diff --git a/tests/test_autocomplete.h b/tests/test_autocomplete.h new file mode 100644 index 00000000..4ad327c0 --- /dev/null +++ b/tests/test_autocomplete.h @@ -0,0 +1,10 @@ +void clear_empty(void **state); +void reset_after_create(void **state); +void find_after_create(void **state); +void get_after_create_returns_null(void **state); +void add_one_and_complete(void **state); +void add_two_and_complete_returns_first(void **state); +void add_two_and_complete_returns_second(void **state); +void add_two_adds_two(void **state); +void add_two_same_adds_one(void **state); +void add_two_same_updates(void **state); diff --git a/tests/test_command.c b/tests/test_command.c new file mode 100644 index 00000000..13738032 --- /dev/null +++ b/tests/test_command.c @@ -0,0 +1,21 @@ +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> +#include <stdlib.h> + +#include "xmpp/xmpp.h" +#include "ui/ui.h" +#include "command/command.h" + +void cmd_rooms_shows_message_when_not_connected(void **state) +{ + will_return(jabber_get_connection_status, JABBER_DISCONNECTED); + expect_string(cons_show, msg, "You are not currently connected."); + CommandHelp *help = malloc(sizeof(CommandHelp)); + + assert_true(_cmd_rooms(NULL, *help)); + + free(help); +} + diff --git a/tests/test_command.h b/tests/test_command.h new file mode 100644 index 00000000..589b589c --- /dev/null +++ b/tests/test_command.h @@ -0,0 +1 @@ +void cmd_rooms_shows_message_when_not_connected(void **state); diff --git a/tests/test_common.h b/tests/test_common.h new file mode 100644 index 00000000..903570e3 --- /dev/null +++ b/tests/test_common.h @@ -0,0 +1,32 @@ +void replace_one_substr(void **state); +void replace_one_substr_beginning(void **state); +void replace_one_substr_end(void **state); +void replace_two_substr(void **state); +void replace_char(void **state); +void replace_when_none(void **state); +void replace_when_match(void **state); +void replace_when_string_empty(void **state); +void replace_when_string_null(void **state); +void replace_when_sub_empty(void **state); +void replace_when_sub_null(void **state); +void replace_when_new_empty(void **state); +void replace_when_new_null(void **state); +void compare_win_nums_less(void **state); +void compare_win_nums_equal(void **state); +void compare_win_nums_greater(void **state); +void compare_0s_equal(void **state); +void compare_0_greater_than_1(void **state); +void compare_1_less_than_0(void **state); +void compare_0_less_than_11(void **state); +void compare_11_greater_than_0(void **state); +void compare_0_greater_than_9(void **state); +void compare_9_less_than_0(void **state); +void next_available_when_only_console(void **state); +void next_available_3_at_end(void **state); +void next_available_9_at_end(void **state); +void next_available_0_at_end(void **state); +void next_available_2_in_first_gap(void **state); +void next_available_9_in_first_gap(void **state); +void next_available_0_in_first_gap(void **state); +void next_available_11_in_first_gap(void **state); +void next_available_24_first_big_gap(void **state); diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c new file mode 100644 index 00000000..bf9f2499 --- /dev/null +++ b/tests/ui/mock_ui.c @@ -0,0 +1,302 @@ +/* + * ui.h + * + * Copyright (C) 2012, 2013 James Booth <boothj5@gmail.com> + * + * 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 <http://www.gnu.org/licenses/>. + * + */ + +#include <glib.h> +#include <setjmp.h> +#include <cmocka.h> + +#include "ui/ui.h" + +// ui startup and control +void ui_init(void) {} +void ui_load_colours(void) {} +void ui_refresh(void) {} +void ui_close(void) {} +void ui_resize(const int ch, const char * const input, + const int size) {} + +GSList* ui_get_recipients(void) +{ + return (GSList *)mock(); +} + +void ui_handle_special_keys(const wint_t * const ch, const char * const inp, + const int size) {} +void ui_switch_win(const int i) {} +void ui_next_win(void) {} +void ui_previous_win(void) {} + +unsigned long ui_get_idle_time(void) +{ + return (unsigned long)mock(); +} + +void ui_reset_idle_time(void) {} +void ui_new_chat_win(const char * const to) {} +void ui_print_error_from_recipient(const char * const from, const char *err_msg) {} +void ui_print_system_msg_from_recipient(const char * const from, const char *message) {} +void ui_handle_error_message(const char * const from, const char * const err_msg) {} + +gint ui_unread(void) +{ + return (gint)mock(); +} + +void ui_close_connected_win(int index) {} + +int ui_close_all_wins(void) +{ + return (int)mock(); +} + +int ui_close_read_wins(void) +{ + return (int)mock(); +} + +// current window actions +void ui_close_current(void) {} +void ui_clear_current(void) {} + +win_type_t ui_current_win_type(void) +{ + return (win_type_t)mock(); +} + +int ui_current_win_index(void) +{ + return (int)mock(); +} + +char* ui_current_recipient(void) +{ + return (char *)mock(); +} + +void ui_current_print_line(const char * const msg, ...) {} +void ui_current_error_line(const char * const msg) {} +void ui_current_page_off(void) {} + +win_type_t ui_win_type(int index) +{ + return (win_type_t)mock(); +} + +char * ui_recipient(int index) +{ + return (char *)mock(); +} + +void ui_close_win(int index) {} + +gboolean ui_win_exists(int index) +{ + return (gboolean)mock(); +} + +int ui_win_unread(int index) +{ + return (int)mock(); +} + +// ui events +void ui_contact_typing(const char * const from) {} +void ui_incoming_msg(const char * const from, const char * const message, + GTimeVal *tv_stamp, gboolean priv) {} +void ui_contact_online(const char * const barejid, const char * const resource, + const char * const show, const char * const status, GDateTime *last_activity) {} +void ui_contact_offline(const char * const from, const char * const show, + const char * const status) {} +void ui_disconnected(void) {} +void ui_recipient_gone(const char * const barejid) {} +void ui_outgoing_msg(const char * const from, const char * const to, + const char * const message) {} +void ui_room_join(Jid *jid) {} +void ui_room_roster(const char * const room, GList *roster, const char * const presence) {} +void ui_room_history(const char * const room_jid, const char * const nick, + GTimeVal tv_stamp, const char * const message) {} +void ui_room_message(const char * const room_jid, const char * const nick, + const char * const message) {} +void ui_room_subject(const char * const room_jid, + const char * const subject) {} +void ui_room_broadcast(const char * const room_jid, + const char * const message) {} +void ui_room_member_offline(const char * const room, const char * const nick) {} +void ui_room_member_online(const char * const room, + const char * const nick, const char * const show, const char * const status) {} +void ui_room_member_nick_change(const char * const room, + const char * const old_nick, const char * const nick) {} +void ui_room_nick_change(const char * const room, const char * const nick) {} +void ui_room_member_presence(const char * const room, + const char * const nick, const char * const show, const char * const status) {} +void ui_roster_add(const char * const barejid, const char * const name) {} +void ui_roster_remove(const char * const barejid) {} +void ui_contact_already_in_group(const char * const contact, const char * const group) {} +void ui_contact_not_in_group(const char * const contact, const char * const group) {} +void ui_group_added(const char * const contact, const char * const group) {} +void ui_group_removed(const char * const contact, const char * const group) {} + +// contact status functions +void ui_status_room(const char * const contact) {} +void ui_status(void) {} +void ui_status_private(void) {} + +void ui_create_duck_win(void) {} +void ui_open_duck_win(void) {} +void ui_duck(const char * const query) {} +void ui_duck_result(const char * const result) {} + +gboolean ui_duck_exists(void) +{ + return (gboolean)mock(); +} + +void ui_tidy_wins(void) {} +void ui_prune_wins(void) {} + +// create windows +void create_title_bar(void) {} +void create_status_bar(void) {} +void create_input_window(void) {} + +// title bar actions +void title_bar_refresh(void) {} +void title_bar_resize(void) {} +void title_bar_show(const char * const title) {} +void title_bar_title(void) {} +void title_bar_set_status(contact_presence_t status) {} +void title_bar_set_recipient(const char * const from) {} +void title_bar_set_typing(gboolean is_typing) {} +void title_bar_draw(void) {} + +// console window actions +void cons_show(const char * const msg, ...) +{ + check_expected(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, + 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, + 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/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c new file mode 100644 index 00000000..0c6bf917 --- /dev/null +++ b/tests/xmpp/mock_xmpp.c @@ -0,0 +1,150 @@ +/* + * xmpp.h + * + * Copyright (C) 2012, 2013 James Booth <boothj5@gmail.com> + * + * 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 <http://www.gnu.org/licenses/>. + * + */ + +#include <glib.h> +#include <setjmp.h> +#include <cmocka.h> + +#include "xmpp/xmpp.h" + +// connection functions +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) +{ + return (jabber_conn_status_t)mock(); +} + +jabber_conn_status_t jabber_connect_with_account(const ProfAccount * const account) +{ + return (jabber_conn_status_t)mock(); +} + +void jabber_disconnect(void) {} +void jabber_shutdown(void) {} +void jabber_process_events(void) {} +const char * jabber_get_fulljid(void) +{ + return (const char *)mock(); +} +const char * jabber_get_domain(void) +{ + return (const char *)mock(); +} + +jabber_conn_status_t jabber_get_connection_status(void) +{ + return (jabber_conn_status_t)mock(); +} + +char * jabber_get_presence_message(void) +{ + return (char *)mock(); +} +void jabber_set_autoping(int seconds) {} + +char* jabber_get_account_name(void) +{ + return (char *)mock(); +} + +GList * jabber_get_available_resources(void) +{ + return (GList *)mock(); +} + +// message functions +void message_send(const char * const msg, const char * const recipient) {} +void message_send_groupchat(const char * const msg, const char * const recipient) {} +void message_send_inactive(const char * const recipient) {} +void message_send_composing(const char * const recipient) {} +void message_send_paused(const char * const recipient) {} +void message_send_gone(const char * const recipient) {} +void message_send_invite(const char * const room, const char * const contact, + const char * const reason) {} +void message_send_duck(const char * const query) {} + +// presence functions +void presence_subscription(const char * const jid, const jabber_subscr_t action) {} + +GSList* presence_get_subscription_requests(void) +{ + return (GSList *)mock(); +} + +gint presence_sub_request_count(void) +{ + return (gint)mock(); +} + +void presence_reset_sub_request_search(void) {} + +char * presence_sub_request_find(char * search_str) +{ + return (char *)mock(); +} + +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) +{ + return (gboolean)mock(); +} + +// 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) {} + +// caps functions +Capabilities* caps_get(const char * const caps_str) +{ + return (Capabilities *)mock(); +} + +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) +{ + return (const GList *)mock(); +} + +char *bookmark_find(char *search_str) +{ + return (char *)mock(); +} + +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) {} |