[glib] sort: Improve test coverage



commit 550b69b963dd63360b762172073490b49167ff70
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Apr 7 11:28:04 2012 -0400

    sort: Improve test coverage
    
    Test the code paths that sort 'large' items.

 glib/tests/sort.c |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)
---
diff --git a/glib/tests/sort.c b/glib/tests/sort.c
index 5abe5e0..ef6af50 100644
--- a/glib/tests/sort.c
+++ b/glib/tests/sort.c
@@ -53,6 +53,12 @@ typedef struct {
   int i;
 } SortItem;
 
+typedef struct {
+  int val;
+  int i;
+  int data[16];
+} BigItem;
+
 static int
 item_compare_data (gconstpointer p1, gconstpointer p2, gpointer data)
 {
@@ -81,7 +87,31 @@ test_sort_stable (void)
     {
       g_assert_cmpint (data[i -1].val, <=, data[i].val);
       if (data[i -1].val == data[i].val)
-	g_assert_cmpint (data[i -1].i, <, data[i].i);
+        g_assert_cmpint (data[i -1].i, <, data[i].i);
+    }
+  g_free (data);
+}
+
+static void
+test_sort_big (void)
+{
+  BigItem *data;
+  gint i;
+
+  data = g_malloc (10000 * sizeof (BigItem));
+  for (i = 0; i < 10000; i++)
+    {
+      data[i].val = g_random_int_range (0, 10000);
+      data[i].i = i;
+    }
+
+  g_qsort_with_data (data, 10000, sizeof (BigItem), item_compare_data, NULL);
+
+  for (i = 1; i < 10000; i++)
+    {
+      g_assert_cmpint (data[i -1].val, <=, data[i].val);
+      if (data[i -1].val == data[i].val)
+        g_assert_cmpint (data[i -1].i, <, data[i].i);
     }
   g_free (data);
 }
@@ -93,6 +123,7 @@ main (int argc, char *argv[])
 
   g_test_add_func ("/sort/basic", test_sort_basic);
   g_test_add_func ("/sort/stable", test_sort_stable);
+  g_test_add_func ("/sort/big", test_sort_big);
 
   return g_test_run ();
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]