diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/helpers.c | 11 | ||||
-rw-r--r-- | tests/helpers.h | 3 | ||||
-rw-r--r-- | tests/test_chat_session.c | 125 | ||||
-rw-r--r-- | tests/test_chat_session.h | 11 | ||||
-rw-r--r-- | tests/testsuite.c | 36 |
5 files changed, 186 insertions, 0 deletions
diff --git a/tests/helpers.c b/tests/helpers.c index a6a473e4..bc0b8009 100644 --- a/tests/helpers.c +++ b/tests/helpers.c @@ -10,6 +10,7 @@ #include "common.h" #include "helpers.h" #include "config/preferences.h" +#include "chat_session.h" void create_config_dir(void **state) { @@ -72,6 +73,16 @@ void close_preferences(void **state) rmdir("./tests/files"); } +void init_chat_sessions(void **state) +{ + chat_sessions_init(); +} + +void close_chat_sessions(void **state) +{ + chat_sessions_clear(); +} + static GCompareFunc cmp_func; void diff --git a/tests/helpers.h b/tests/helpers.h index 17d8329c..2d7af6e7 100644 --- a/tests/helpers.h +++ b/tests/helpers.h @@ -3,5 +3,8 @@ void load_preferences(void **state); void close_preferences(void **state); +void init_chat_sessions(void **state); +void close_chat_sessions(void **state); + void glist_set_cmp(GCompareFunc func); int glist_contents_equal(const void *actual, const void *expected); \ No newline at end of file diff --git a/tests/test_chat_session.c b/tests/test_chat_session.c new file mode 100644 index 00000000..a93c64b6 --- /dev/null +++ b/tests/test_chat_session.c @@ -0,0 +1,125 @@ +#include <stdarg.h> +#include <string.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> +#include <stdlib.h> + +#include "chat_session.h" + +void returns_false_when_chat_session_does_not_exist(void **state) +{ + gboolean result = chat_session_exists("somejid@server.org"); + assert_false(result); +} + +void creates_chat_session_on_message_send(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_message_send(barejid); + gboolean exists = chat_session_exists(barejid); + + assert_true(exists); +} + +void creates_chat_session_on_activity(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_activity(barejid); + gboolean exists = chat_session_exists(barejid); + + assert_true(exists); +} + +void returns_null_resource_for_new_session(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_message_send(barejid); + char *resource = chat_session_get_resource(barejid); + + assert_null(resource); +} + +void returns_true_send_states_for_new_session(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_message_send(barejid); + gboolean send_states = chat_session_send_states(barejid); + + assert_true(send_states); +} + +void sets_resource_on_incoming_message(void **state) +{ + char *barejid = "myjid@server.org"; + char *expected_resource = "laptop"; + + chat_session_on_message_send(barejid); + chat_session_on_incoming_message(barejid, expected_resource, FALSE); + char *actual_resource = chat_session_get_resource(barejid); + + assert_string_equal(expected_resource, actual_resource); +} + +void sets_send_states_on_incoming_message(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_message_send(barejid); + chat_session_on_incoming_message(barejid, "resource", TRUE); + gboolean send_states = chat_session_send_states(barejid); + + assert_true(send_states); +} + +void replaces_chat_session_when_new_resource(void **state) +{ + char *barejid = "myjid@server.org"; + char *first_resource = "laptop"; + char *second_resource = "mobile"; + + chat_session_on_message_send(barejid); + chat_session_on_incoming_message(barejid, first_resource, TRUE); + chat_session_on_incoming_message(barejid, second_resource, TRUE); + char *actual_resource = chat_session_get_resource(barejid); + + assert_string_equal(second_resource, actual_resource); +} + +void removes_chat_session_on_window_close(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_message_send(barejid); + chat_session_on_window_close(barejid); + gboolean exists = chat_session_exists(barejid); + + assert_false(exists); +} + +void removes_chat_session_on_cancel_for_barejid(void **state) +{ + char *barejid = "myjid@server.org"; + + chat_session_on_message_send(barejid); + chat_session_on_cancel(barejid); + gboolean exists = chat_session_exists(barejid); + + assert_false(exists); +} + +void removes_chat_session_on_cancel_for_fulljid(void **state) +{ + char *barejid = "myjid@server.org"; + char *fulljid = "myjid@server.org/desktop"; + + chat_session_on_message_send(barejid); + chat_session_on_cancel(fulljid); + gboolean exists = chat_session_exists(barejid); + + assert_false(exists); +} \ No newline at end of file diff --git a/tests/test_chat_session.h b/tests/test_chat_session.h new file mode 100644 index 00000000..8916f6b4 --- /dev/null +++ b/tests/test_chat_session.h @@ -0,0 +1,11 @@ +void returns_false_when_chat_session_does_not_exist(void **state); +void creates_chat_session_on_message_send(void **state); +void creates_chat_session_on_activity(void **state); +void returns_null_resource_for_new_session(void **state); +void returns_true_send_states_for_new_session(void **state); +void sets_resource_on_incoming_message(void **state); +void sets_send_states_on_incoming_message(void **state); +void replaces_chat_session_when_new_resource(void **state); +void removes_chat_session_on_window_close(void **state); +void removes_chat_session_on_cancel_for_barejid(void **state); +void removes_chat_session_on_cancel_for_fulljid(void **state); \ No newline at end of file diff --git a/tests/testsuite.c b/tests/testsuite.c index fb439331..db05639d 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -8,9 +8,11 @@ #include <sys/stat.h> #include "config.h" +#include "chat_session.h" #include "helpers.h" #include "test_autocomplete.h" +#include "test_chat_session.h" #include "test_common.h" #include "test_contact.h" #include "test_cmd_connect.h" @@ -204,6 +206,40 @@ int main(int argc, char* argv[]) { unit_test(find_five_times_finds_fifth), unit_test(find_twice_returns_first_when_two_match_and_reset), + unit_test_setup_teardown(returns_false_when_chat_session_does_not_exist, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(creates_chat_session_on_message_send, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(creates_chat_session_on_activity, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(returns_null_resource_for_new_session, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(returns_true_send_states_for_new_session, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(sets_resource_on_incoming_message, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(sets_send_states_on_incoming_message, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(replaces_chat_session_when_new_resource, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(removes_chat_session_on_window_close, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(removes_chat_session_on_cancel_for_barejid, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(removes_chat_session_on_cancel_for_fulljid, + init_chat_sessions, + close_chat_sessions), + unit_test_setup_teardown(cmd_connect_shows_message_when_disconnecting, load_preferences, close_preferences), |