[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: generic container for sets
From: |
Bruno Haible |
Subject: |
Re: generic container for sets |
Date: |
Tue, 11 Dec 2018 20:39:43 +0100 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-138-generic; KDE/5.18.0; x86_64; ; ) |
Oops, I made a wrong use of qsort() in the tests. This should fix it.
2018-12-11 Bruno Haible <address@hidden>
array-set, linkedhash-set, hash-set: Fix tests.
* tests/test-array_set.c (cmp_objects_in_array): New function.
(check_equals): Use it.
* tests/test-hash_set.c: Likewise.
* tests/test-linkedhash_set.c: Likewise.
diff --git a/tests/test-array_set.c b/tests/test-array_set.c
index 35465ac..91f1294 100644
--- a/tests/test-array_set.c
+++ b/tests/test-array_set.c
@@ -36,6 +36,14 @@ static const char *objects[30] =
#define RANDOM(n) (rand () % (n))
#define RANDOM_OBJECT() objects[RANDOM (SIZEOF (objects))]
+static int
+cmp_objects_in_array (const void *objptr1, const void *objptr2)
+{
+ const void *obj1 = *(const void * const *)objptr1;
+ const void *obj2 = *(const void * const *)objptr2;
+ return strcmp ((const char *) obj1, (const char *) obj2);
+}
+
static void
check_equals (gl_set_t set1, gl_oset_t set2)
{
@@ -65,10 +73,8 @@ check_equals (gl_set_t set1, gl_oset_t set2)
if (n > 0)
{
- qsort (elements_of_set1, n, sizeof (const void *),
- (int (*) (const void *, const void *)) strcmp);
- qsort (elements_of_set2, n, sizeof (const void *),
- (int (*) (const void *, const void *)) strcmp);
+ qsort (elements_of_set1, n, sizeof (const void *), cmp_objects_in_array);
+ qsort (elements_of_set2, n, sizeof (const void *), cmp_objects_in_array);
}
for (i = 0; i < n; i++)
ASSERT (elements_of_set1[i] == elements_of_set2[i]);
diff --git a/tests/test-hash_set.c b/tests/test-hash_set.c
index d791074..a2138ef 100644
--- a/tests/test-hash_set.c
+++ b/tests/test-hash_set.c
@@ -35,6 +35,14 @@ static const char *objects[30] =
#define RANDOM(n) (rand () % (n))
#define RANDOM_OBJECT() objects[RANDOM (SIZEOF (objects))]
+static int
+cmp_objects_in_array (const void *objptr1, const void *objptr2)
+{
+ const void *obj1 = *(const void * const *)objptr1;
+ const void *obj2 = *(const void * const *)objptr2;
+ return strcmp ((const char *) obj1, (const char *) obj2);
+}
+
static void
check_equals (gl_set_t set1, gl_set_t set2)
{
@@ -64,10 +72,8 @@ check_equals (gl_set_t set1, gl_set_t set2)
if (n > 0)
{
- qsort (elements_of_set1, n, sizeof (const void *),
- (int (*) (const void *, const void *)) strcmp);
- qsort (elements_of_set2, n, sizeof (const void *),
- (int (*) (const void *, const void *)) strcmp);
+ qsort (elements_of_set1, n, sizeof (const void *), cmp_objects_in_array);
+ qsort (elements_of_set2, n, sizeof (const void *), cmp_objects_in_array);
}
for (i = 0; i < n; i++)
ASSERT (elements_of_set1[i] == elements_of_set2[i]);
diff --git a/tests/test-linkedhash_set.c b/tests/test-linkedhash_set.c
index 7ff92e8..6ad33a5 100644
--- a/tests/test-linkedhash_set.c
+++ b/tests/test-linkedhash_set.c
@@ -35,6 +35,14 @@ static const char *objects[30] =
#define RANDOM(n) (rand () % (n))
#define RANDOM_OBJECT() objects[RANDOM (SIZEOF (objects))]
+static int
+cmp_objects_in_array (const void *objptr1, const void *objptr2)
+{
+ const void *obj1 = *(const void * const *)objptr1;
+ const void *obj2 = *(const void * const *)objptr2;
+ return strcmp ((const char *) obj1, (const char *) obj2);
+}
+
static void
check_equals (gl_set_t set1, gl_set_t set2)
{
@@ -64,10 +72,8 @@ check_equals (gl_set_t set1, gl_set_t set2)
if (n > 0)
{
- qsort (elements_of_set1, n, sizeof (const void *),
- (int (*) (const void *, const void *)) strcmp);
- qsort (elements_of_set2, n, sizeof (const void *),
- (int (*) (const void *, const void *)) strcmp);
+ qsort (elements_of_set1, n, sizeof (const void *), cmp_objects_in_array);
+ qsort (elements_of_set2, n, sizeof (const void *), cmp_objects_in_array);
}
for (i = 0; i < n; i++)
ASSERT (elements_of_set1[i] == elements_of_set2[i]);