aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wmem/wmem_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/wmem/wmem_test.c')
-rw-r--r--epan/wmem/wmem_test.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/epan/wmem/wmem_test.c b/epan/wmem/wmem_test.c
index 96338946c5..fb46a83501 100644
--- a/epan/wmem/wmem_test.c
+++ b/epan/wmem/wmem_test.c
@@ -711,6 +711,18 @@ check_val_list(gpointer val, gpointer val_to_check)
g_assert(val == val_to_check);
}
+static gint
+int_compare(gconstpointer a, gconstpointer b)
+{
+ return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b);
+}
+
+static gint
+str_compare(gconstpointer a, gconstpointer b)
+{
+ return strcmp((const char*)a, (const char*)b);
+}
+
static void
wmem_test_list(void)
{
@@ -718,6 +730,10 @@ wmem_test_list(void)
wmem_list_t *list;
wmem_list_frame_t *frame;
unsigned int i;
+ int int1;
+ int int2;
+ char* str1;
+ char* str2;
allocator = wmem_allocator_new(WMEM_ALLOCATOR_STRICT);
@@ -805,6 +821,53 @@ wmem_test_list(void)
}
wmem_list_foreach(list, check_val_list, GINT_TO_POINTER(1));
wmem_destroy_list(list);
+
+ list = wmem_list_new(NULL);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(5), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(8), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(1), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(2), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(9), int_compare);
+ frame = wmem_list_head(list);
+ int1 = GPOINTER_TO_INT(wmem_list_frame_data(frame));
+ while ((frame = wmem_list_frame_next(frame))) {
+ int2 = GPOINTER_TO_INT(wmem_list_frame_data(frame));
+ g_assert(int1 <= int2);
+ int1 = int2;
+ }
+ wmem_destroy_list(list);
+
+ list = wmem_list_new(NULL);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(5), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(1), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(7), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(3), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(2), int_compare);
+ wmem_list_insert_sorted(list, GINT_TO_POINTER(2), int_compare);
+ frame = wmem_list_head(list);
+ int1 = GPOINTER_TO_INT(wmem_list_frame_data(frame));
+ while ((frame = wmem_list_frame_next(frame))) {
+ int2 = GPOINTER_TO_INT(wmem_list_frame_data(frame));
+ g_assert(int1 <= int2);
+ int1 = int2;
+ }
+ wmem_destroy_list(list);
+
+ list = wmem_list_new(NULL);
+ wmem_list_insert_sorted(list, "abc", str_compare);
+ wmem_list_insert_sorted(list, "bcd", str_compare);
+ wmem_list_insert_sorted(list, "aaa", str_compare);
+ wmem_list_insert_sorted(list, "bbb", str_compare);
+ wmem_list_insert_sorted(list, "zzz", str_compare);
+ wmem_list_insert_sorted(list, "ggg", str_compare);
+ frame = wmem_list_head(list);
+ str1 = (char*)wmem_list_frame_data(frame);
+ while ((frame = wmem_list_frame_next(frame))) {
+ str2 = (char*)wmem_list_frame_data(frame);
+ g_assert(strcmp(str1, str2) <= 0);
+ str1 = str2;
+ }
+ wmem_destroy_list(list);
}
void