diff --git a/Makefile.am b/Makefile.am index 5d00adda..70738515 100644 --- a/Makefile.am +++ b/Makefile.am @@ -66,6 +66,7 @@ test_sources = \ tests/log/mock_log.c \ tests/test_autocomplete.c \ tests/test_common.c \ + tests/test_contact.c \ tests/test_cmd_connect.c \ tests/test_cmd_account.c \ tests/test_cmd_rooms.c \ diff --git a/tests/test_contact.c b/tests/test_contact.c new file mode 100644 index 00000000..332d6fd2 --- /dev/null +++ b/tests/test_contact.c @@ -0,0 +1,102 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "contact.h" + +void contact_in_group(void **state) +{ + GSList *groups = NULL; + groups = g_slist_append(groups, strdup("somegroup")); + PContact contact = p_contact_new("bob@server.com", "bob", groups, "both", + "is offline", FALSE); + + gboolean result = p_contact_in_group(contact, "somegroup"); + + assert_true(result); + + p_contact_free(contact); + g_slist_free(groups); +} + +void contact_not_in_group(void **state) +{ + GSList *groups = NULL; + groups = g_slist_append(groups, strdup("somegroup")); + PContact contact = p_contact_new("bob@server.com", "bob", groups, "both", + "is offline", FALSE); + + gboolean result = p_contact_in_group(contact, "othergroup"); + + assert_false(result); + + p_contact_free(contact); + g_slist_free(groups); +} + +void contact_name_when_name_exists(void **state) +{ + PContact contact = p_contact_new("bob@server.com", "bob", NULL, "both", + "is offline", FALSE); + + const char *name = p_contact_name_or_jid(contact); + + assert_string_equal("bob", name); + + p_contact_free(contact); +} + +void contact_jid_when_name_not_exists(void **state) +{ + PContact contact = p_contact_new("bob@server.com", NULL, NULL, "both", + "is offline", FALSE); + + const char *jid = p_contact_name_or_jid(contact); + + assert_string_equal("bob@server.com", jid); + + p_contact_free(contact); +} + +void contact_string_when_name_exists(void **state) +{ + PContact contact = p_contact_new("bob@server.com", "bob", NULL, "both", + "is offline", FALSE); + + char *str = p_contact_create_display_string(contact, "laptop"); + + assert_string_equal("bob (laptop)", str); + + p_contact_free(contact); + free(str); +} + +void contact_string_when_name_not_exists(void **state) +{ + PContact contact = p_contact_new("bob@server.com", NULL, NULL, "both", + "is offline", FALSE); + + char *str = p_contact_create_display_string(contact, "laptop"); + + assert_string_equal("bob@server.com (laptop)", str); + + p_contact_free(contact); + free(str); +} + +void contact_string_when_default_resource(void **state) +{ + PContact contact = p_contact_new("bob@server.com", "bob", NULL, "both", + "is offline", FALSE); + + char *str = p_contact_create_display_string(contact, "__prof_default"); + + assert_string_equal("bob", str); + + p_contact_free(contact); + free(str); +} diff --git a/tests/test_contact.h b/tests/test_contact.h new file mode 100644 index 00000000..f0ba043f --- /dev/null +++ b/tests/test_contact.h @@ -0,0 +1,7 @@ +void contact_in_group(void **state); +void contact_not_in_group(void **state); +void contact_name_when_name_exists(void **state); +void contact_jid_when_name_not_exists(void **state); +void contact_string_when_name_exists(void **state); +void contact_string_when_name_not_exists(void **state); +void contact_string_when_default_resource(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index c0e98b23..71f2fdf9 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -5,6 +5,7 @@ #include "test_autocomplete.h" #include "test_common.h" +#include "test_contact.h" #include "test_cmd_connect.h" #include "test_cmd_account.h" #include "test_cmd_rooms.h" @@ -257,6 +258,13 @@ int main(int argc, char* argv[]) { unit_test(cmd_sub_shows_message_when_not_connected), unit_test(cmd_sub_shows_usage_when_no_arg), + unit_test(contact_in_group), + unit_test(contact_not_in_group), + unit_test(contact_name_when_name_exists), + unit_test(contact_jid_when_name_not_exists), + unit_test(contact_string_when_name_exists), + unit_test(contact_string_when_name_not_exists), + unit_test(contact_string_when_default_resource), }; return run_tests(tests); }