diff options
Diffstat (limited to 'test_prof_autocomplete.c')
-rw-r--r-- | test_prof_autocomplete.c | 112 |
1 files changed, 109 insertions, 3 deletions
diff --git a/test_prof_autocomplete.c b/test_prof_autocomplete.c index b03d8bb8..ef867ff7 100644 --- a/test_prof_autocomplete.c +++ b/test_prof_autocomplete.c @@ -1,3 +1,4 @@ +#include <stdio.h> #include <stdlib.h> #include <string.h> #include <head-unit.h> @@ -61,7 +62,7 @@ static void add_one_and_complete(void) assert_string_equals("Hello", result); - p_autocomplete_clear(ac, (GDestroyNotify)free); + p_autocomplete_clear(ac, NULL); } static void add_one_and_complete_with_funcs(void) @@ -88,7 +89,7 @@ static void add_two_and_complete_returns_first(void) assert_string_equals("Hello", result); - p_autocomplete_clear(ac, (GDestroyNotify)free); + p_autocomplete_clear(ac, NULL); } static void add_two_and_complete_returns_first_with_funcs(void) @@ -119,7 +120,7 @@ static void add_two_and_complete_returns_second(void) assert_string_equals("Help", result2); - p_autocomplete_clear(ac, (GDestroyNotify)free); + p_autocomplete_clear(ac, NULL); } static void add_two_and_complete_returns_second_with_funcs(void) @@ -139,6 +140,105 @@ static void add_two_and_complete_returns_second_with_funcs(void) p_autocomplete_clear(ac, (GDestroyNotify)p_contact_free); } +static void add_two_adds_two(void) +{ + char *item1 = strdup("Hello"); + char *item2 = strdup("Help"); + PAutocomplete ac = p_autocomplete_new(); + p_autocomplete_add(ac, item1, NULL, NULL); + p_autocomplete_add(ac, item2, NULL, NULL); + GSList *result = p_autocomplete_get_list(ac, NULL); + + assert_int_equals(2, g_slist_length(result)); + + p_autocomplete_clear(ac, NULL); +} + +static void add_two_adds_two_with_funcs(void) +{ + PContact contact1 = p_contact_new("James", "Online", "I'm here"); + PContact contact2 = p_contact_new("Jamie", "Away", "Out to lunch"); + PAutocomplete ac = p_autocomplete_new(); + p_autocomplete_add(ac, contact1, (PStrFunc)p_contact_name, + (GDestroyNotify)p_contact_free); + p_autocomplete_add(ac, contact2, (PStrFunc)p_contact_name, + (GDestroyNotify)p_contact_free); + GSList *result = p_autocomplete_get_list(ac, (PCopyFunc)p_contact_copy); + + assert_int_equals(2, g_slist_length(result)); + + p_autocomplete_clear(ac, (GDestroyNotify)p_contact_free); +} + +static void add_two_same_adds_one(void) +{ + char *item1 = strdup("Hello"); + char *item2 = strdup("Hello"); + PAutocomplete ac = p_autocomplete_new(); + p_autocomplete_add(ac, item1, NULL, NULL); + p_autocomplete_add(ac, item2, NULL, NULL); + GSList *result = p_autocomplete_get_list(ac, NULL); + + assert_int_equals(1, g_slist_length(result)); + + p_autocomplete_clear(ac, NULL); +} + +static void add_two_same_adds_one_with_funcs(void) +{ + PContact contact1 = p_contact_new("James", "Online", "I'm here"); + PContact contact2 = p_contact_new("James", "Away", "Out to lunch"); + PAutocomplete ac = p_autocomplete_new(); + p_autocomplete_add(ac, contact1, (PStrFunc)p_contact_name, + (GDestroyNotify)p_contact_free); + p_autocomplete_add(ac, contact2, (PStrFunc)p_contact_name, + (GDestroyNotify)p_contact_free); + GSList *result = p_autocomplete_get_list(ac, (PCopyFunc)p_contact_copy); + + assert_int_equals(1, g_slist_length(result)); + + p_autocomplete_clear(ac, (GDestroyNotify)p_contact_free); +} + +static void add_two_same_updates(void) +{ + char *item1 = strdup("Hello"); + char *item2 = strdup("Hello"); + PAutocomplete ac = p_autocomplete_new(); + p_autocomplete_add(ac, item1, NULL, NULL); + p_autocomplete_add(ac, item2, NULL, NULL); + GSList *result = p_autocomplete_get_list(ac, NULL); + + GSList *first = g_slist_nth(result, 0); + + char *str = first->data; + + assert_string_equals("Hello", str); + + p_autocomplete_clear(ac, NULL); +} + +static void add_two_same_updates_with_funcs(void) +{ + PContact contact1 = p_contact_new("James", "Online", "I'm here"); + PContact contact2 = p_contact_new("James", "Away", "Out to lunch"); + PAutocomplete ac = p_autocomplete_new(); + p_autocomplete_add(ac, contact1, (PStrFunc)p_contact_name, + (GDestroyNotify)p_contact_free); + p_autocomplete_add(ac, contact2, (PStrFunc)p_contact_name, + (GDestroyNotify)p_contact_free); + GSList *result = p_autocomplete_get_list(ac, (PCopyFunc)p_contact_copy); + + GSList *first = g_slist_nth(result, 0); + PContact contact = first->data; + + assert_string_equals("James", p_contact_name(contact)); + assert_string_equals("Away", p_contact_show(contact)); + assert_string_equals("Out to lunch", p_contact_status(contact)); + + p_autocomplete_clear(ac, (GDestroyNotify)p_contact_free); +} + void register_prof_autocomplete_tests(void) { TEST_MODULE("prof_autocomplete tests"); @@ -154,4 +254,10 @@ void register_prof_autocomplete_tests(void) TEST(add_two_and_complete_returns_first_with_funcs); TEST(add_two_and_complete_returns_second); TEST(add_two_and_complete_returns_second_with_funcs); + TEST(add_two_adds_two); + TEST(add_two_adds_two_with_funcs); + TEST(add_two_same_adds_one); + TEST(add_two_same_adds_one_with_funcs); + TEST(add_two_same_updates); + TEST(add_two_same_updates_with_funcs); } |