summaryrefslogtreecommitdiff
path: root/tests/test-array_list.c
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-04-03 18:25:56 +0200
committerBruno Haible <bruno@clisp.org>2021-04-03 18:30:52 +0200
commit0cdb81c92993b8b1e41aee9df2170f5dc35e86b8 (patch)
tree749fd1ce37ef34561213a229382673be596e7cf4 /tests/test-array_list.c
parente108960209b3c13c2d43d745c0898c8778bff186 (diff)
downloadgnulib-0cdb81c92993b8b1e41aee9df2170f5dc35e86b8.tar.gz
*-list tests: Add more tests.
* tests/test-array_list.c (check_equals_by_forward_iteration, check_equals_by_backward_iteration): New functions. (main): Invoke them. * tests/test-carray_list.c: Likewise. * tests/test-linked_list.c: Likewise. * tests/test-linkedhash_list.c: Likewise. * tests/test-avltree_list.c: Likewise. * tests/test-avltreehash_list.c: Likewise. * tests/test-rbtree_list.c: Likewise. * tests/test-rbtreehash_list.c: Likewise.
Diffstat (limited to 'tests/test-array_list.c')
-rw-r--r--tests/test-array_list.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/test-array_list.c b/tests/test-array_list.c
index 1c736ee6cb..fa606914b8 100644
--- a/tests/test-array_list.c
+++ b/tests/test-array_list.c
@@ -44,6 +44,42 @@ check_equals (gl_list_t list1, gl_list_t list2)
}
}
+static void
+check_equals_by_forward_iteration (gl_list_t list1, gl_list_t list2)
+{
+ size_t n = gl_list_size (list1);
+ size_t i;
+ gl_list_node_t node2;
+
+ i = 0;
+ node2 = gl_list_first_node (list2);
+ while (i < n && node2 != NULL)
+ {
+ ASSERT (gl_list_get_at (list1, i) == gl_list_node_value (list2, node2));
+ i++;
+ node2 = gl_list_next_node (list2, node2);
+ }
+ ASSERT ((i == n) == (node2 == NULL));
+}
+
+static void
+check_equals_by_backward_iteration (gl_list_t list1, gl_list_t list2)
+{
+ size_t n = gl_list_size (list1);
+ size_t i;
+ gl_list_node_t node2;
+
+ i = n - 1;
+ node2 = gl_list_last_node (list2);
+ while (i != (size_t)(-1) && node2 != NULL)
+ {
+ ASSERT (gl_list_get_at (list1, i) == gl_list_node_value (list2, node2));
+ i--;
+ node2 = gl_list_previous_node (list2, node2);
+ }
+ ASSERT ((i == (size_t)(-1)) == (node2 == NULL));
+}
+
int
main (int argc, char *argv[])
{
@@ -75,6 +111,9 @@ main (int argc, char *argv[])
check_equals (list1, list2);
+ check_equals_by_forward_iteration (list1, list2);
+ check_equals_by_backward_iteration (list1, list2);
+
for (repeat = 0; repeat < 10000; repeat++)
{
unsigned int operation = RANDOM (18);