diff options
Diffstat (limited to 'tests/test_chat_session.c')
-rw-r--r-- | tests/test_chat_session.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/test_chat_session.c b/tests/test_chat_session.c new file mode 100644 index 00000000..b5e1f7b6 --- /dev/null +++ b/tests/test_chat_session.c @@ -0,0 +1,51 @@ +#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) +{ + ChatSession *session = chat_session_get("somejid@server.org"); + assert_null(session); +} + +void creates_chat_session_on_recipient_activity(void **state) +{ + char *barejid = "myjid@server.org"; + char *resource = "tablet"; + + chat_session_recipient_active(barejid, resource, FALSE); + ChatSession *session = chat_session_get(barejid); + + assert_non_null(session); + assert_string_equal(session->resource, resource); +} + +void replaces_chat_session_on_recipient_activity_with_different_resource(void **state) +{ + char *barejid = "myjid@server.org"; + char *resource1 = "tablet"; + char *resource2 = "mobile"; + + chat_session_recipient_active(barejid, resource1, FALSE); + chat_session_recipient_active(barejid, resource2, FALSE); + ChatSession *session = chat_session_get(barejid); + + assert_string_equal(session->resource, resource2); +} + +void removes_chat_session(void **state) +{ + char *barejid = "myjid@server.org"; + char *resource1 = "laptop"; + + chat_session_recipient_active(barejid, resource1, FALSE); + chat_session_remove(barejid); + ChatSession *session = chat_session_get(barejid); + + assert_null(session); +} \ No newline at end of file |