tests/test_list.c

changeset 883
3012e9b4214e
parent 876
f4ce7df9cff0
child 884
d375d8056262
--- a/tests/test_list.c	Tue Sep 17 19:08:22 2024 +0200
+++ b/tests/test_list.c	Tue Sep 17 19:38:41 2024 +0200
@@ -99,6 +99,53 @@
     free(heaparray);
 }
 
+CX_TEST(test_array_insert_sorted) {
+    int d1 = 50;
+    int d2 = 80;
+    int d3 = 60;
+    int d4 = 40;
+    int d5 = 70;
+    int d6a[6] = {52, 54, 56, 62, 64, 75};
+    int d7a[6] = {51, 57, 58, 65, 77, 78};
+    int d8 = 90;
+    int expected[18] = {
+            40, 50, 51, 52, 54, 56, 57, 58, 60,
+            62, 64, 65, 70, 75, 77, 78, 80, 90
+    };
+
+    CX_ARRAY_DECLARE(int, array);
+    cx_array_initialize(array, 4);
+
+    CX_TEST_DO {
+        CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d1, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 1);
+        CX_TEST_ASSERT(array_capacity == 4);
+        CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d2, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 2);
+        CX_TEST_ASSERT(array_capacity == 4);
+        CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d3, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 3);
+        CX_TEST_ASSERT(array_capacity == 4);
+        CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d4, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 4);
+        CX_TEST_ASSERT(array_capacity == 4);
+        CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d5, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 5);
+        CX_TEST_ASSERT(array_capacity >= 5);
+        CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d6a, 6, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 11);
+        CX_TEST_ASSERT(array_capacity >= 11);
+        CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d7a, 6, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 17);
+        CX_TEST_ASSERT(array_capacity >= 17);
+        CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d8, cx_cmp_int));
+        CX_TEST_ASSERT(array_size == 18);
+        CX_TEST_ASSERT(array_capacity >= 18);
+
+        CX_TEST_ASSERT(0 == memcmp(array, expected, 18 * sizeof(int)));
+    }
+}
+
 typedef struct node {
     struct node *next;
     struct node *prev;
@@ -1534,6 +1581,7 @@
     CxTestSuite *suite = cx_test_suite_new("array_list");
 
     cx_test_register(suite, test_array_add);
+    cx_test_register(suite, test_array_insert_sorted);
 
     cx_test_register(suite, test_list_arl_create);
     cx_test_register(suite, test_list_arl_create_simple);

mercurial