[glib] sort: Improve test coverage
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] sort: Improve test coverage
- Date: Sun, 8 Apr 2012 14:25:02 +0000 (UTC)
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]