tests/test_list.c

Sun, 23 Nov 2025 13:30:07 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:30:07 +0100
changeset 1509
0437871200d6
parent 1508
dfc0ddd9571e
permissions
-rw-r--r--

complete test coverage for array_list.c and delete unreachable code

798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved.
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #include "cx/test.h"
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 #include "util_allocator.h"
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 #include "cx/compare.h"
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 #include "cx/array_list.h"
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 #include "cx/linked_list.h"
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
35 #include "cx/kv_list.h"
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 #include <stdarg.h>
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
38 #include <errno.h>
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
40 CX_TEST(test_array_add) {
986
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
41 CX_ARRAY_DECLARE(int, arr);
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
42 arr = cxCallocDefault(5, sizeof(int));
986
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
43 arr[0] = 2;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
44 arr[1] = 3;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
45 arr[2] = 5;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
46 arr[3] = 7;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
47 arr[4] = 11;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
48 arr_size = 3;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
49 arr_capacity = 5;
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
50 int elem = 8, elem2 = 47;
986
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
51 int result;
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
52 CX_TEST_DO {
986
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
53 result = cx_array_simple_add(arr, elem);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
54 CX_TEST_ASSERT(result == 0);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
55 CX_TEST_ASSERT(arr[0] == 2);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
56 CX_TEST_ASSERT(arr[1] == 3);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
57 CX_TEST_ASSERT(arr[2] == 5);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
58 CX_TEST_ASSERT(arr[3] == 8);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
59 CX_TEST_ASSERT(arr[4] == 11);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
60 CX_TEST_ASSERT(arr_size == 4);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
61 CX_TEST_ASSERT(arr_capacity == 5);
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
62
986
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
63 arr_size = 5;
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
64 result = cx_array_simple_add(arr, elem2);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
65 CX_TEST_ASSERT(result == 0);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
66 CX_TEST_ASSERT(arr[0] == 2);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
67 CX_TEST_ASSERT(arr[1] == 3);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
68 CX_TEST_ASSERT(arr[2] == 5);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
69 CX_TEST_ASSERT(arr[3] == 8);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
70 CX_TEST_ASSERT(arr[4] == 11);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
71 CX_TEST_ASSERT(arr[5] == 47);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
72 CX_TEST_ASSERT(arr_size == 6);
38fa7e41194c simplify cx_array_copy() - fixes #474
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
73 CX_TEST_ASSERT(arr_capacity >= 6);
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
74 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
75 cxFreeDefault(arr);
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
76 }
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
77
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
78 CX_TEST(test_array_add8) {
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
79 CX_ARRAY_DECLARE_SIZED(int, arr, uint8_t);
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
80 arr = cxCallocDefault(5, sizeof(int));
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
81 arr[0] = 2;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
82 arr[1] = 3;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
83 arr[2] = 5;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
84 arr[3] = 7;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
85 arr[4] = 11;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
86 arr_size = 3;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
87 arr_capacity = 5;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
88 int elem = 8, elem2 = 47;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
89 int result;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
90 CX_TEST_DO {
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
91 result = cx_array_simple_add(arr, elem);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
92 CX_TEST_ASSERT(result == 0);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
93 CX_TEST_ASSERT(arr[0] == 2);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
94 CX_TEST_ASSERT(arr[1] == 3);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
95 CX_TEST_ASSERT(arr[2] == 5);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
96 CX_TEST_ASSERT(arr[3] == 8);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
97 CX_TEST_ASSERT(arr[4] == 11);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
98 CX_TEST_ASSERT(arr_size == 4);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
99 CX_TEST_ASSERT(arr_capacity == 5);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
100
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
101 arr_size = 5;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
102 result = cx_array_simple_add(arr, elem2);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
103 CX_TEST_ASSERT(result == 0);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
104 CX_TEST_ASSERT(arr[0] == 2);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
105 CX_TEST_ASSERT(arr[1] == 3);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
106 CX_TEST_ASSERT(arr[2] == 5);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
107 CX_TEST_ASSERT(arr[3] == 8);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
108 CX_TEST_ASSERT(arr[4] == 11);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
109 CX_TEST_ASSERT(arr[5] == 47);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
110 CX_TEST_ASSERT(arr_size == 6);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
111 CX_TEST_ASSERT(arr_capacity >= 6);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
112
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
113 result = cx_array_simple_copy(arr, 260, &elem, 1);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
114 CX_TEST_ASSERT(result != 0);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
115 CX_TEST_ASSERT(errno == EOVERFLOW);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
116 CX_TEST_ASSERT(arr_size == 6);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
117 CX_TEST_ASSERT(arr_capacity < 128);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
118 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
119 cxFreeDefault(arr);
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
120 }
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
121
1495
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
122 CX_TEST(test_array_add16) {
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
123 CX_ARRAY_DECLARE_SIZED(char, arr, uint16_t);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
124 cx_array_initialize(arr, 300);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
125 arr_size = 270;
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
126 int result;
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
127 CX_TEST_DO {
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
128 char elem = 'A';
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
129 result = cx_array_simple_add(arr, elem);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
130 CX_TEST_ASSERT(result == 0);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
131 CX_TEST_ASSERT(arr[270] == 'A');
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
132 CX_TEST_ASSERT(arr_size == 271);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
133 CX_TEST_ASSERT(arr_capacity == 300);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
134
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
135 char *hello = "Hello";
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
136 result = cx_array_simple_copy(arr, 9000, hello, 5);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
137 CX_TEST_ASSERT(result == 0);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
138 CX_TEST_ASSERT(arr[9000] == 'H');
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
139 CX_TEST_ASSERT(arr[9001] == 'e');
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
140 CX_TEST_ASSERT(arr[9002] == 'l');
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
141 CX_TEST_ASSERT(arr[9003] == 'l');
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
142 CX_TEST_ASSERT(arr[9004] == 'o');
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
143 CX_TEST_ASSERT(arr_size == 9005);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
144 CX_TEST_ASSERT(arr_capacity == 9*1024);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
145
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
146 // does not fit into 16-bit sized array
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
147 result = cx_array_simple_copy(arr, 65532, hello, 5);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
148 CX_TEST_ASSERT(result != 0);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
149 CX_TEST_ASSERT(errno == EOVERFLOW);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
150 CX_TEST_ASSERT(arr_size == 9005);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
151 CX_TEST_ASSERT(arr_capacity == 9*1024);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
152 }
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
153 cxFreeDefault(arr);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
154 }
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
155
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
156 CX_TEST(test_array_copy_unsupported_width) {
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
157 CX_ARRAY_DECLARE_SIZED(int, arr, uint16_t);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
158 cx_array_initialize(arr, 16);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
159 int result;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
160 CX_TEST_DO {
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
161 int elem = 5;
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
162 result = cx_array_copy(
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
163 (void **) &(arr),
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
164 &(arr_size),
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
165 &(arr_capacity),
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
166 12, // unsupported width
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
167 5,
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
168 &elem, sizeof(int),
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
169 1,
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
170 cx_array_default_reallocator
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
171 );
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
172 CX_TEST_ASSERT(result != 0);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
173 CX_TEST_ASSERT(errno == EINVAL);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
174 CX_TEST_ASSERT(arr_size == 0);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
175 CX_TEST_ASSERT(arr_capacity == 16);
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
176 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
177 cxFreeDefault(arr);
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
178 }
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
179
1495
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
180 CX_TEST(test_array_copy_overlap) {
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
181 CX_ARRAY_DECLARE_SIZED(char, arr, uint8_t);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
182 cx_array_initialize(arr, 16);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
183 strcpy(arr, "Hello, World!");
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
184 CX_TEST_DO {
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
185 errno = 0;
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
186 int result = cx_array_simple_copy(arr, 7, arr, 14);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
187 CX_TEST_ASSERT(result == 0);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
188 CX_TEST_ASSERT(errno == 0);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
189 CX_TEST_ASSERT(arr_size == 21);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
190 CX_TEST_ASSERT(arr_capacity == 32);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
191 CX_TEST_ASSERT(0 == memcmp(arr, "Hello, Hello, World!\0", 21));
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
192 }
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
193 cxFreeDefault(arr);
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
194 }
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
195
999
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
196 CX_TEST(test_array_reserve) {
1494
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
197 {
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
198 // default size
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
199 CX_ARRAY_DECLARE(int, arr);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
200 cx_array_initialize(arr, 16);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
201 int result;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
202 CX_TEST_DO {
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
203 result = cx_array_reserve(
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
204 (void **) &(arr),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
205 &(arr_size),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
206 &(arr_capacity),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
207 0, // default width
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
208 sizeof(int),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
209 30,
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
210 cx_array_default_reallocator
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
211 );
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
212 CX_TEST_ASSERT(result == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
213 CX_TEST_ASSERT(arr_size == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
214 CX_TEST_ASSERT(arr_capacity == 30);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
215 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
216 cxFreeDefault(arr);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
217 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
218 {
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
219 // 16-bit size
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
220 CX_ARRAY_DECLARE_SIZED(char, arr, uint16_t);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
221 cx_array_initialize(arr, 16);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
222 arr_size = 5;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
223 int result;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
224 CX_TEST_DO {
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
225 errno = 0;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
226 result = cx_array_simple_reserve(arr, 3);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
227 CX_TEST_ASSERT(result == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
228 CX_TEST_ASSERT(errno == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
229 CX_TEST_ASSERT(arr_size == 5);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
230 CX_TEST_ASSERT(arr_capacity == 16);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
231
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
232 result = cx_array_simple_reserve(arr, 20);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
233 CX_TEST_ASSERT(result == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
234 CX_TEST_ASSERT(errno == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
235 CX_TEST_ASSERT(arr_size == 5);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
236 CX_TEST_ASSERT(arr_capacity == 25);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
237
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
238 result = cx_array_simple_reserve(arr, 2000);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
239 CX_TEST_ASSERT(result == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
240 CX_TEST_ASSERT(errno == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
241 CX_TEST_ASSERT(arr_size == 5);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
242 CX_TEST_ASSERT(arr_capacity == 2005);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
243
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
244 // this does not fit into an array with a 16-bit size
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
245 result = cx_array_simple_reserve(arr, 70000);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
246 CX_TEST_ASSERT(result == 1);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
247 CX_TEST_ASSERT(errno == EOVERFLOW);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
248 CX_TEST_ASSERT(arr_size == 5);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
249 CX_TEST_ASSERT(arr_capacity == 2005);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
250 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
251 cxFreeDefault(arr);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
252 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
253 {
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
254 // 8-bit size
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
255 CX_ARRAY_DECLARE_SIZED(char, arr, uint8_t);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
256 cx_array_initialize(arr, 16);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
257 arr_size = 5;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
258 int result;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
259 CX_TEST_DO {
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
260 errno = 0;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
261 result = cx_array_simple_reserve(arr, 3);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
262 CX_TEST_ASSERT(result == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
263 CX_TEST_ASSERT(errno == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
264 CX_TEST_ASSERT(arr_size == 5);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
265 CX_TEST_ASSERT(arr_capacity == 16);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
266
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
267 result = cx_array_simple_reserve(arr, 20);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
268 CX_TEST_ASSERT(result == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
269 CX_TEST_ASSERT(errno == 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
270 CX_TEST_ASSERT(arr_size == 5);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
271 CX_TEST_ASSERT(arr_capacity == 25);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
272
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
273 // this does not fit into an array with an 8-bit size
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
274 arr_size = 10;
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
275 result = cx_array_simple_reserve(arr, 250);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
276 CX_TEST_ASSERT(result == 1);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
277 CX_TEST_ASSERT(errno == EOVERFLOW);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
278 CX_TEST_ASSERT(arr_size == 10);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
279 CX_TEST_ASSERT(arr_capacity == 25);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
280 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
281 cxFreeDefault(arr);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
282 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
283 }
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
284
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
285 CX_TEST(test_array_reserve_unsupported_width) {
999
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
286 CX_ARRAY_DECLARE_SIZED(int, arr, uint16_t);
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
287 cx_array_initialize(arr, 16);
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
288 int result;
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
289 CX_TEST_DO {
1494
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
290 result = cx_array_reserve(
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
291 (void **) &(arr),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
292 &(arr_size),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
293 &(arr_capacity),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
294 12, // unsupported width
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
295 sizeof(int),
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
296 30,
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
297 cx_array_default_reallocator
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
298 );
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
299 CX_TEST_ASSERT(result != 0);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
300 CX_TEST_ASSERT(errno == EINVAL);
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
301 CX_TEST_ASSERT(arr_size == 0);
999
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
302 CX_TEST_ASSERT(arr_capacity == 16);
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
303 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
304 cxFreeDefault(arr);
999
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
305 }
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
306
883
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
307 CX_TEST(test_array_insert_sorted) {
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
308 int d1 = 50;
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
309 int d2 = 80;
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
310 int d3 = 60;
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
311 int d4 = 40;
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
312 int d5 = 70;
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
313 int d6a[6] = {52, 54, 56, 62, 64, 75};
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
314 int d7a[6] = {51, 57, 58, 65, 77, 78};
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
315 int d8 = 90;
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
316 int d9 = 56;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
317 int d10a[3] = {67, 75, 90};
1508
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
318 int d11a[6] = {58, 59, 71, 71, 72, 75};
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
319 int d12a[3] = {10, 120, 130};
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
320 int expected[31] = {
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
321 10, 40, 50, 51, 52, 54, 56, 56, 57, 58, 58, 59, 60, 62, 64, 65, 67,
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
322 70, 71, 71, 72, 75, 75, 75, 77, 78, 80, 90, 90, 120, 130
883
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
323 };
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
324
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
325 CX_ARRAY_DECLARE(int, array);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
326 cx_array_initialize(array, 4);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
327
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
328 CX_TEST_DO {
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
329 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d1, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
330 CX_TEST_ASSERT(array_size == 1);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
331 CX_TEST_ASSERT(array_capacity == 4);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
332 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d2, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
333 CX_TEST_ASSERT(array_size == 2);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
334 CX_TEST_ASSERT(array_capacity == 4);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
335 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d3, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
336 CX_TEST_ASSERT(array_size == 3);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
337 CX_TEST_ASSERT(array_capacity == 4);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
338 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d4, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
339 CX_TEST_ASSERT(array_size == 4);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
340 CX_TEST_ASSERT(array_capacity == 4);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
341 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d5, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
342 CX_TEST_ASSERT(array_size == 5);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
343 CX_TEST_ASSERT(array_capacity >= 5);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
344 CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d6a, 6, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
345 CX_TEST_ASSERT(array_size == 11);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
346 CX_TEST_ASSERT(array_capacity >= 11);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
347 CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d7a, 6, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
348 CX_TEST_ASSERT(array_size == 17);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
349 CX_TEST_ASSERT(array_capacity >= 17);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
350 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d8, cx_cmp_int));
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
351 CX_TEST_ASSERT(array_size == 18);
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
352 CX_TEST_ASSERT(array_capacity >= 18);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
353 CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d9, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
354 CX_TEST_ASSERT(array_size == 19);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
355 CX_TEST_ASSERT(array_capacity >= 19);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
356 CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d10a, 3, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
357 CX_TEST_ASSERT(array_size == 22);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
358 CX_TEST_ASSERT(array_capacity >= 22);
1508
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
359 CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d11a, 6, cx_cmp_int));
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
360 CX_TEST_ASSERT(array_size == 28);
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
361 CX_TEST_ASSERT(array_capacity >= 28);
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
362 CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d12a, 3, cx_cmp_int));
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
363 CX_TEST_ASSERT(array_size == 31);
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
364 CX_TEST_ASSERT(array_capacity >= 31);
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
365
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
366 CX_TEST_ASSERT(0 == memcmp(array, expected, 31 * sizeof(int)));
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
367 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
368 cxFreeDefault(array);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
369 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
370
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
371 CX_TEST(test_array_insert_unique) {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
372 int d1 = 50;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
373 int d2 = 80;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
374 int d3 = 60;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
375 int d4 = 40;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
376 int d5 = 70;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
377 int d6a[6] = {52, 54, 56, 62, 64, 75};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
378 int d7a[6] = {51, 57, 58, 65, 77, 78};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
379 int d8 = 90;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
380 int d9 = 56;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
381 int d10a[3] = {67, 75, 90};
1508
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
382 int d11a[8] = {90, 90, 90, 95, 95, 100, 110, 110};
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
383 int expected[22] = {
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
384 40, 50, 51, 52, 54, 56, 57, 58, 60, 62, 64,
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
385 65, 67, 70, 75, 77, 78, 80, 90, 95, 100, 110
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
386 };
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
387
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
388 CX_ARRAY_DECLARE(int, array);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
389 cx_array_initialize(array, 4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
390
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
391 CX_TEST_DO {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
392 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d1, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
393 CX_TEST_ASSERT(array_size == 1);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
394 CX_TEST_ASSERT(array_capacity == 4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
395 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d2, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
396 CX_TEST_ASSERT(array_size == 2);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
397 CX_TEST_ASSERT(array_capacity == 4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
398 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d3, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
399 CX_TEST_ASSERT(array_size == 3);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
400 CX_TEST_ASSERT(array_capacity == 4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
401 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d4, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
402 CX_TEST_ASSERT(array_size == 4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
403 CX_TEST_ASSERT(array_capacity == 4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
404 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d5, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
405 CX_TEST_ASSERT(array_size == 5);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
406 CX_TEST_ASSERT(array_capacity >= 5);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
407 CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d6a, 6, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
408 CX_TEST_ASSERT(array_size == 11);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
409 CX_TEST_ASSERT(array_capacity >= 11);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
410 CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d7a, 6, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
411 CX_TEST_ASSERT(array_size == 17);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
412 CX_TEST_ASSERT(array_capacity >= 17);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
413 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d8, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
414 CX_TEST_ASSERT(array_size == 18);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
415 CX_TEST_ASSERT(array_capacity >= 18);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
416 CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d9, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
417 CX_TEST_ASSERT(array_size == 18);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
418 CX_TEST_ASSERT(array_capacity >= 18);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
419 CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d10a, 3, cx_cmp_int));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
420 CX_TEST_ASSERT(array_size == 19);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
421 CX_TEST_ASSERT(array_capacity >= 19);
1508
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
422 CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d11a, 8, cx_cmp_int));
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
423 CX_TEST_ASSERT(array_size == 22);
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
424 CX_TEST_ASSERT(array_capacity >= 22);
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
425
dfc0ddd9571e optimize sorted insertion by using the infimum instead of the supremum
Mike Becker <universe@uap-core.de>
parents: 1507
diff changeset
426 CX_TEST_ASSERT(0 == memcmp(array, expected, 22 * sizeof(int)));
883
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
427 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
428 cxFreeDefault(array);
883
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
429 }
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
430
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
431 CX_TEST(test_array_binary_search) {
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
432 int array[18] = {
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
433 40, 50, 51, 52, 54, 56, 57, 58, 60,
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
434 62, 64, 65, 70, 75, 77, 78, 80, 90
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
435 };
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
436
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
437 CX_TEST_DO {
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
438 for (size_t i = 0; i < 18; i++) {
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
439 CX_TEST_ASSERT(i == cx_array_binary_search(array, 18, sizeof(int), &array[i], cx_cmp_int));
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
440 }
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
441
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
442 int s = 58;
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
443 CX_TEST_ASSERT(7 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
444 CX_TEST_ASSERT(7 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
445 s = 60;
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
446 CX_TEST_ASSERT(8 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
447 CX_TEST_ASSERT(8 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
448 s = 59;
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
449 CX_TEST_ASSERT(7 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
450 CX_TEST_ASSERT(8 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
451 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
452 s = 79;
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
453 CX_TEST_ASSERT(15 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
454 CX_TEST_ASSERT(16 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
455 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
456 s = 66;
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
457 CX_TEST_ASSERT(11 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
458 CX_TEST_ASSERT(12 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
459 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
460 s = 69;
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
461 CX_TEST_ASSERT(11 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
462 CX_TEST_ASSERT(12 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
463 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
885
878a450e79bd fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
Mike Becker <universe@uap-core.de>
parents: 884
diff changeset
464 s = 95;
878a450e79bd fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
Mike Becker <universe@uap-core.de>
parents: 884
diff changeset
465 CX_TEST_ASSERT(17 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
466 CX_TEST_ASSERT(18 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
885
878a450e79bd fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
Mike Becker <universe@uap-core.de>
parents: 884
diff changeset
467 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
878a450e79bd fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
Mike Becker <universe@uap-core.de>
parents: 884
diff changeset
468 s = 30;
878a450e79bd fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
Mike Becker <universe@uap-core.de>
parents: 884
diff changeset
469 CX_TEST_ASSERT(18 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
886
5f5514bb104b also add a binary search for the supremum
Mike Becker <universe@uap-core.de>
parents: 885
diff changeset
470 CX_TEST_ASSERT(0 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
885
878a450e79bd fixes incorrect result from cx_array_binary_search() when searched element is smaller than the entire array
Mike Becker <universe@uap-core.de>
parents: 884
diff changeset
471 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
1024
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
472
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
473 // special case - size 0
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
474 s = 40;
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
475 CX_TEST_ASSERT(0 == cx_array_binary_search_inf(array, 0, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
476 CX_TEST_ASSERT(0 == cx_array_binary_search_sup(array, 0, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
477 CX_TEST_ASSERT(0 == cx_array_binary_search(array, 0, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
478
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
479 // special case - size 1, searched element is smaller
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
480 s = 30;
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
481 CX_TEST_ASSERT(1 == cx_array_binary_search_inf(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
482 CX_TEST_ASSERT(0 == cx_array_binary_search_sup(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
483 CX_TEST_ASSERT(1 == cx_array_binary_search(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
484
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
485 // special case - size 1, searched element is larger
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
486 s = 50;
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
487 CX_TEST_ASSERT(0 == cx_array_binary_search_inf(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
488 CX_TEST_ASSERT(1 == cx_array_binary_search_sup(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
489 CX_TEST_ASSERT(1 == cx_array_binary_search(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
490
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
491 // special case - size 1, element matches
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
492 s = 40;
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
493 CX_TEST_ASSERT(0 == cx_array_binary_search_inf(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
494 CX_TEST_ASSERT(0 == cx_array_binary_search_sup(array, 1, sizeof(int), &s, cx_cmp_int));
2911c1f4a570 add shortcut to binary search when array size is one
Mike Becker <universe@uap-core.de>
parents: 999
diff changeset
495 CX_TEST_ASSERT(0 == cx_array_binary_search(array, 1, sizeof(int), &s, cx_cmp_int));
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
496 }
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
497 }
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
498
1507
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
499 CX_TEST(test_array_binary_search_with_duplicates) {
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
500 int array[18] = {
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
501 40, 50, 55, 55, 55, 57, 57, 58, 60,
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
502 62, 64, 65, 70, 70, 70, 78, 80, 90
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
503 };
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
504 int s;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
505 CX_TEST_DO {
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
506 // exact matches (largest index on duplicate)
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
507 s = 40;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
508 CX_TEST_ASSERT(0 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
509 s = 50;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
510 CX_TEST_ASSERT(1 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
511 s = 55;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
512 CX_TEST_ASSERT(4 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
513 s = 57;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
514 CX_TEST_ASSERT(6 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
515 s = 58;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
516 CX_TEST_ASSERT(7 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
517 s = 65;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
518 CX_TEST_ASSERT(11 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
519 s = 70;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
520 CX_TEST_ASSERT(14 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
521 s = 78;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
522 CX_TEST_ASSERT(15 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
523
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
524 // not found
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
525 s = 30;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
526 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
527 s = 75;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
528 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
529 s = 52;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
530 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
531 s = 100;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
532 CX_TEST_ASSERT(18 == cx_array_binary_search(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
533
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
534 // infimum
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
535 s = 55; // also yields an exact match
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
536 CX_TEST_ASSERT(4 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
537 s = 56;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
538 CX_TEST_ASSERT(4 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
539 s = 75;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
540 CX_TEST_ASSERT(14 == cx_array_binary_search_inf(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
541
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
542 // supremum (smallest index)
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
543 s = 52;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
544 CX_TEST_ASSERT(2 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
545 s = 66;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
546 CX_TEST_ASSERT(12 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
547 s = 75;
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
548 CX_TEST_ASSERT(15 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
549 s = 70; // exact match, we want the smallest index
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
550 CX_TEST_ASSERT(12 == cx_array_binary_search_sup(array, 18, sizeof(int), &s, cx_cmp_int));
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
551 }
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
552 }
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
553
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
554 typedef struct node {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
555 struct node *next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
556 struct node *prev;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
557 int data;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
558 } node;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
559
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
560 static int test_cmp_node(const void *l, const void *r) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
561 const node *left = l;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
562 const node *right = r;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
563 return left->data - right->data;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
564 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
565
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
566 const ptrdiff_t loc_prev = offsetof(struct node, prev);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
567 const ptrdiff_t loc_next = offsetof(struct node, next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
568 const ptrdiff_t loc_data = offsetof(struct node, data);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
569
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
570 static node *create_nodes_test_data(size_t len) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
571 node *begin = calloc(1, sizeof(node));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
572 void *prev = begin;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
573 for (size_t i = 1; i < len; i++) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
574 node *n = calloc(1, sizeof(node));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
575 cx_linked_list_link(prev, n, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
576 prev = n;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
577 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
578 return begin;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
579 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
580
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
581 void assign_nodes_test_data(node *n, ...) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
582 va_list ap;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
583 va_start(ap, n);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
584 while (n != NULL) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
585 n->data = va_arg(ap, int);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
586 n = n->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
587 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
588 va_end(ap);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
589 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
590
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
591 static void destroy_nodes_test_data(node *n) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
592 while (n != NULL) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
593 void *next = n->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
594 free(n);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
595 n = next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
596 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
597 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
598
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
599 static int *int_test_data(size_t len) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
600 int *data = malloc(len*sizeof(int));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
601 for (size_t i = 0 ; i < len ; i++) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
602 data[i] = rand(); // NOLINT(*-msc50-cpp)
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
603 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
604 return data;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
605 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
606
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
607 CX_TEST(test_linked_list_link_unlink) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
608 node a = {0}, b = {0}, c = {0};
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
609
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
610 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
611 cx_linked_list_link(&a, &b, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
612 CX_TEST_ASSERT(a.prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
613 CX_TEST_ASSERT(a.next == &b);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
614 CX_TEST_ASSERT(b.prev == &a);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
615 CX_TEST_ASSERT(b.next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
616
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
617 cx_linked_list_unlink(&a, &b, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
618 CX_TEST_ASSERT(a.prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
619 CX_TEST_ASSERT(a.next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
620 CX_TEST_ASSERT(b.prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
621 CX_TEST_ASSERT(b.next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
622
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
623 cx_linked_list_link(&b, &c, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
624 cx_linked_list_link(&a, &b, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
625 cx_linked_list_unlink(&b, &c, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
626 CX_TEST_ASSERT(a.prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
627 CX_TEST_ASSERT(a.next == &b);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
628 CX_TEST_ASSERT(b.prev == &a);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
629 CX_TEST_ASSERT(b.next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
630 CX_TEST_ASSERT(c.prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
631 CX_TEST_ASSERT(c.next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
632 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
633 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
634
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
635 CX_TEST(test_linked_list_at) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
636 node a = {0}, b = {0}, c = {0}, d = {0};
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
637
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
638 cx_linked_list_link(&a, &b, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
639 cx_linked_list_link(&b, &c, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
640 cx_linked_list_link(&c, &d, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
641
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
642 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
643 CX_TEST_ASSERT(cx_linked_list_at(&a, 0, loc_next, 0) == &a);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
644 CX_TEST_ASSERT(cx_linked_list_at(&a, 0, loc_next, 1) == &b);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
645 CX_TEST_ASSERT(cx_linked_list_at(&a, 0, loc_next, 2) == &c);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
646 CX_TEST_ASSERT(cx_linked_list_at(&a, 0, loc_next, 3) == &d);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
647 CX_TEST_ASSERT(cx_linked_list_at(&a, 0, loc_next, 4) == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
648 CX_TEST_ASSERT(cx_linked_list_at(&b, 1, loc_prev, 0) == &a);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
649 CX_TEST_ASSERT(cx_linked_list_at(&b, 1, loc_next, 1) == &b);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
650 CX_TEST_ASSERT(cx_linked_list_at(&b, 1, loc_next, 2) == &c);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
651 CX_TEST_ASSERT(cx_linked_list_at(&b, 1, loc_next, 3) == &d);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
652 CX_TEST_ASSERT(cx_linked_list_at(&b, 1, loc_next, 4) == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
653 CX_TEST_ASSERT(cx_linked_list_at(&d, 3, loc_prev, 0) == &a);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
654 CX_TEST_ASSERT(cx_linked_list_at(&d, 3, loc_prev, 1) == &b);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
655 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
656 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
657
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
658 CX_TEST(test_linked_list_find) {
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
659 node *list = create_nodes_test_data(4);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
660 assign_nodes_test_data(list, 2, 4, 6, 8);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
661 CX_TEST_DO {
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
662 size_t i = 10;
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
663 int s;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
664 s = 2;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
665 node *n = list;
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
666 CX_TEST_ASSERT(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s, &i) == n);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
667 CX_TEST_ASSERT(i == 0);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
668 n = n->next;
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
669 s = 4;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
670 CX_TEST_ASSERT(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s, &i) == n);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
671 CX_TEST_ASSERT(i == 1);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
672 n = n->next;
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
673 s = 6;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
674 CX_TEST_ASSERT(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s, &i) == n);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
675 CX_TEST_ASSERT(i == 2);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
676 n = n->next;
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
677 s = 8;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
678 CX_TEST_ASSERT(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s, &i) == n);
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
679 CX_TEST_ASSERT(i == 3);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
680 s = 10;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
681 CX_TEST_ASSERT(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s, &i) == NULL);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
682 s = -2;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
683 CX_TEST_ASSERT(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s, &i) == NULL);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
684 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
685 destroy_nodes_test_data(list);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
686 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
687
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
688 CX_TEST(test_linked_list_compare) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
689 void *la = create_nodes_test_data(4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
690 void *lb = create_nodes_test_data(3);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
691 void *lc = create_nodes_test_data(4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
692 assign_nodes_test_data(la, 2, 4, 6, 8);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
693 assign_nodes_test_data(lb, 2, 4, 6);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
694 assign_nodes_test_data(lc, 2, 4, 6, 9);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
695 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
696 CX_TEST_ASSERT(cx_linked_list_compare(la, lb, loc_next, loc_data, cx_cmp_int) > 0);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
697 CX_TEST_ASSERT(cx_linked_list_compare(lb, la, loc_next, loc_data, cx_cmp_int) < 0);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
698 CX_TEST_ASSERT(cx_linked_list_compare(lc, la, loc_next, loc_data, cx_cmp_int) > 0);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
699 CX_TEST_ASSERT(cx_linked_list_compare(la, lc, loc_next, loc_data, cx_cmp_int) < 0);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
700 CX_TEST_ASSERT(cx_linked_list_compare(la, la, loc_next, loc_data, cx_cmp_int) == 0);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
701 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
702 destroy_nodes_test_data(la);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
703 destroy_nodes_test_data(lb);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
704 destroy_nodes_test_data(lc);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
705 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
706
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
707 CX_TEST(test_linked_list_add) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
708 node nodes[4];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
709 void *begin, *end;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
710 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
711 // test with begin, end / prev, next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
712 memset(nodes, 0, sizeof(node)*4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
713 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
714
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
715 cx_linked_list_add(&begin, &end, loc_prev, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
716 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
717 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
718 CX_TEST_ASSERT(nodes[0].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
719 CX_TEST_ASSERT(nodes[0].next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
720
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
721 cx_linked_list_add(&begin, &end, loc_prev, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
722 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
723 CX_TEST_ASSERT(end == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
724 CX_TEST_ASSERT(nodes[0].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
725 CX_TEST_ASSERT(nodes[1].prev == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
726
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
727 // test with begin only / prev, next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
728 memset(nodes, 0, sizeof(node)*4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
729 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
730
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
731 cx_linked_list_add(&begin, NULL, loc_prev, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
732 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
733 cx_linked_list_add(&begin, NULL, loc_prev, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
734 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
735 CX_TEST_ASSERT(nodes[0].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
736 CX_TEST_ASSERT(nodes[1].prev == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
737
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
738 cx_linked_list_add(&begin, NULL, loc_prev, loc_next, &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
739 CX_TEST_ASSERT(nodes[1].next == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
740 CX_TEST_ASSERT(nodes[2].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
741
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
742 // test with end only / prev, next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
743 memset(nodes, 0, sizeof(node)*4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
744 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
745
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
746 cx_linked_list_add(NULL, &end, loc_prev, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
747 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
748 cx_linked_list_add(NULL, &end, loc_prev, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
749 CX_TEST_ASSERT(end == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
750 CX_TEST_ASSERT(nodes[0].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
751 CX_TEST_ASSERT(nodes[1].prev == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
752
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
753 cx_linked_list_add(NULL, &end, loc_prev, loc_next, &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
754 CX_TEST_ASSERT(end == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
755 CX_TEST_ASSERT(nodes[1].next == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
756 CX_TEST_ASSERT(nodes[2].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
757
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
758 // test with begin, end / next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
759 memset(nodes, 0, sizeof(node)*4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
760 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
761
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
762 cx_linked_list_add(&begin, &end, -1, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
763 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
764 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
765 cx_linked_list_add(&begin, &end, -1, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
766 CX_TEST_ASSERT(end == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
767 CX_TEST_ASSERT(nodes[0].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
768 CX_TEST_ASSERT(nodes[1].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
769 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
770 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
771
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
772 CX_TEST(test_linked_list_prepend) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
773 node nodes[4];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
774 void *begin, *end;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
775 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
776 // test with begin, end / prev, next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
777 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
778 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
779
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
780 cx_linked_list_prepend(&begin, &end, loc_prev, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
781 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
782 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
783 CX_TEST_ASSERT(nodes[0].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
784 CX_TEST_ASSERT(nodes[0].next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
785
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
786 cx_linked_list_prepend(&begin, &end, loc_prev, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
787 CX_TEST_ASSERT(begin == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
788 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
789 CX_TEST_ASSERT(nodes[1].next == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
790 CX_TEST_ASSERT(nodes[0].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
791
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
792 // test with begin only / prev, next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
793 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
794 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
795
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
796 cx_linked_list_prepend(&begin, NULL, loc_prev, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
797 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
798 cx_linked_list_prepend(&begin, NULL, loc_prev, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
799 CX_TEST_ASSERT(begin == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
800 CX_TEST_ASSERT(nodes[1].next == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
801 CX_TEST_ASSERT(nodes[0].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
802
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
803 cx_linked_list_prepend(&begin, NULL, loc_prev, loc_next, &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
804 CX_TEST_ASSERT(begin == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
805 CX_TEST_ASSERT(nodes[2].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
806 CX_TEST_ASSERT(nodes[1].prev == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
807
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
808 // test with end only / prev, next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
809 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
810 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
811
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
812 cx_linked_list_prepend(NULL, &end, loc_prev, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
813 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
814 cx_linked_list_prepend(NULL, &end, loc_prev, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
815 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
816 CX_TEST_ASSERT(nodes[1].next == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
817 CX_TEST_ASSERT(nodes[0].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
818
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
819 cx_linked_list_prepend(NULL, &end, loc_prev, loc_next, &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
820 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
821 CX_TEST_ASSERT(nodes[2].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
822 CX_TEST_ASSERT(nodes[1].prev == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
823
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
824 // test with begin, end / next
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
825 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
826 end = begin = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
827
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
828 cx_linked_list_prepend(&begin, &end, -1, loc_next, &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
829 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
830 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
831 cx_linked_list_prepend(&begin, &end, -1, loc_next, &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
832 cx_linked_list_prepend(&begin, &end, -1, loc_next, &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
833 CX_TEST_ASSERT(begin == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
834 CX_TEST_ASSERT(end == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
835 CX_TEST_ASSERT(nodes[1].next == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
836 CX_TEST_ASSERT(nodes[2].next == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
837 CX_TEST_ASSERT(nodes[1].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
838 CX_TEST_ASSERT(nodes[0].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
839 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
840 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
841
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
842 CX_TEST(test_linked_list_insert) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
843 node nodes[4];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
844 void *begin, *end;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
845 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
846 // insert mid list
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
847 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
848 begin = &nodes[0];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
849 end = &nodes[2];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
850
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
851 cx_linked_list_link(&nodes[0], &nodes[1], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
852 cx_linked_list_link(&nodes[1], &nodes[2], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
853
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
854 cx_linked_list_insert(&begin, &end, loc_prev, loc_next, &nodes[1], &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
855 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
856 CX_TEST_ASSERT(end == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
857 CX_TEST_ASSERT(nodes[1].next == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
858 CX_TEST_ASSERT(nodes[2].prev == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
859 CX_TEST_ASSERT(nodes[3].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
860 CX_TEST_ASSERT(nodes[3].next == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
861
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
862 // insert end
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
863 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
864 begin = &nodes[0];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
865 end = &nodes[2];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
866
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
867 cx_linked_list_link(&nodes[0], &nodes[1], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
868 cx_linked_list_link(&nodes[1], &nodes[2], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
869
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
870 cx_linked_list_insert(&begin, &end, loc_prev, loc_next, &nodes[2], &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
871 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
872 CX_TEST_ASSERT(end == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
873 CX_TEST_ASSERT(nodes[2].next == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
874 CX_TEST_ASSERT(nodes[3].prev == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
875 CX_TEST_ASSERT(nodes[3].next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
876
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
877 // insert begin
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
878 memset(nodes, 0, sizeof(node) * 4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
879 begin = &nodes[0];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
880 end = &nodes[2];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
881
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
882 cx_linked_list_link(&nodes[0], &nodes[1], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
883 cx_linked_list_link(&nodes[1], &nodes[2], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
884
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
885 cx_linked_list_insert(&begin, &end, loc_prev, loc_next, NULL, &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
886 CX_TEST_ASSERT(begin == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
887 CX_TEST_ASSERT(end == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
888 CX_TEST_ASSERT(nodes[0].prev == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
889 CX_TEST_ASSERT(nodes[3].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
890 CX_TEST_ASSERT(nodes[3].next == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
891 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
892 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
893
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
894 CX_TEST(test_linked_list_insert_chain) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
895 node nodes[5];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
896 void *begin, *end;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
897 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
898 // insert mid list
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
899 memset(nodes, 0, sizeof(node) * 5);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
900 begin = &nodes[0]; end = &nodes[2];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
901
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
902 cx_linked_list_link(&nodes[0], &nodes[1], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
903 cx_linked_list_link(&nodes[1], &nodes[2], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
904 cx_linked_list_link(&nodes[3], &nodes[4], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
905
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
906 cx_linked_list_insert_chain(&begin, &end, loc_prev, loc_next, &nodes[1], &nodes[3], NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
907 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
908 CX_TEST_ASSERT(end == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
909 CX_TEST_ASSERT(nodes[1].next == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
910 CX_TEST_ASSERT(nodes[2].prev == &nodes[4]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
911 CX_TEST_ASSERT(nodes[3].prev == &nodes[1]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
912 CX_TEST_ASSERT(nodes[4].next == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
913
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
914 // insert end
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
915 memset(nodes, 0, sizeof(node) * 5);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
916 begin = &nodes[0]; end = &nodes[2];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
917
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
918 cx_linked_list_link(&nodes[0], &nodes[1], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
919 cx_linked_list_link(&nodes[1], &nodes[2], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
920 cx_linked_list_link(&nodes[3], &nodes[4], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
921
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
922 cx_linked_list_insert_chain(&begin, &end, loc_prev, loc_next, &nodes[2], &nodes[3], NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
923 CX_TEST_ASSERT(begin == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
924 CX_TEST_ASSERT(end == &nodes[4]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
925 CX_TEST_ASSERT(nodes[2].next == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
926 CX_TEST_ASSERT(nodes[3].prev == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
927 CX_TEST_ASSERT(nodes[4].next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
928
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
929 // insert begin
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
930 memset(nodes, 0, sizeof(node) * 5);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
931 begin = &nodes[0]; end = &nodes[2];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
932
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
933 cx_linked_list_link(&nodes[0], &nodes[1], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
934 cx_linked_list_link(&nodes[1], &nodes[2], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
935 cx_linked_list_link(&nodes[3], &nodes[4], loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
936
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
937 cx_linked_list_insert_chain(&begin, &end, loc_prev, loc_next, NULL, &nodes[3], NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
938 CX_TEST_ASSERT(begin == &nodes[3]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
939 CX_TEST_ASSERT(end == &nodes[2]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
940 CX_TEST_ASSERT(nodes[0].prev == &nodes[4]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
941 CX_TEST_ASSERT(nodes[3].prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
942 CX_TEST_ASSERT(nodes[4].next == &nodes[0]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
943 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
944 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
945
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
946 CX_TEST(test_linked_list_insert_sorted) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
947 node nodes[5] = {0};
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
948 void *begin, *end;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
949 nodes[0].data = 3;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
950 nodes[1].data = 6;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
951 nodes[2].data = 10;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
952 nodes[3].data = 11;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
953 nodes[4].data = 15;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
954 for (unsigned i = 0 ; i < 4 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
955 cx_linked_list_link(&nodes[i], &nodes[i+1], loc_prev, loc_next);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
956 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
957 begin = &nodes[0];
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
958 end = &nodes[4];
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
959 CX_TEST_DO {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
960 // insert a single node
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
961 node new_node = {0};
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
962 new_node.data = 5;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
963 cx_linked_list_insert_sorted(
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
964 &begin, &end,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
965 loc_prev, loc_next,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
966 &new_node, test_cmp_node
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
967 );
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
968 CX_TEST_ASSERT(new_node.prev == &nodes[0]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
969 CX_TEST_ASSERT(new_node.next == &nodes[1]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
970 CX_TEST_ASSERT(nodes[0].next == &new_node);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
971 CX_TEST_ASSERT(nodes[1].prev == &new_node);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
972 CX_TEST_ASSERT(begin == &nodes[0]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
973 CX_TEST_ASSERT(end == &nodes[4]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
974
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
975 // insert a new beginning node
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
976 node new_begin = {0};
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
977 new_begin.data = 1;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
978 cx_linked_list_insert_sorted(
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
979 &begin, &end,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
980 loc_prev, loc_next,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
981 &new_begin, test_cmp_node
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
982 );
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
983 CX_TEST_ASSERT(new_begin.prev == NULL);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
984 CX_TEST_ASSERT(new_begin.next == &nodes[0]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
985 CX_TEST_ASSERT(nodes[0].prev == &new_begin);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
986 CX_TEST_ASSERT(begin == &new_begin);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
987 CX_TEST_ASSERT(end == &nodes[4]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
988
1493
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
989 // duplicate the beginning node
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
990 // (expectation is that the duplicate is inserted after the first node)
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
991 node new_begin_dup = {0};
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
992 new_begin_dup.data = 1;
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
993 cx_linked_list_insert_sorted(
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
994 &begin, &end,
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
995 loc_prev, loc_next,
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
996 &new_begin_dup, test_cmp_node
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
997 );
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
998 CX_TEST_ASSERT(new_begin_dup.prev == &new_begin);
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
999 CX_TEST_ASSERT(new_begin_dup.next == &nodes[0]);
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
1000 CX_TEST_ASSERT(nodes[0].prev == &new_begin_dup);
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
1001 CX_TEST_ASSERT(new_begin.next == &new_begin_dup);
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
1002 CX_TEST_ASSERT(begin == &new_begin);
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
1003 CX_TEST_ASSERT(end == &nodes[4]);
33f556a7eca6 add missing test coverage for inserting a duplicate for the beginning node with cx_linked_list_insert_sorted()
Mike Becker <universe@uap-core.de>
parents: 1486
diff changeset
1004
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1005 // now insert a chain
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1006 node chain_start = {NULL, NULL, 8};
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1007 node chain_mid = {NULL, NULL, 14};
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1008 node chain_end = {NULL, NULL, 17};
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1009 cx_linked_list_link(&chain_start, &chain_mid, loc_prev, loc_next);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1010 cx_linked_list_link(&chain_mid, &chain_end, loc_prev, loc_next);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1011
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1012 cx_linked_list_insert_sorted_chain(
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1013 &begin, &end,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1014 loc_prev, loc_next,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1015 &chain_start, test_cmp_node
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1016 );
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1017
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1018 CX_TEST_ASSERT(chain_start.prev == &nodes[1]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1019 CX_TEST_ASSERT(chain_start.next == &nodes[2]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1020 CX_TEST_ASSERT(chain_mid.prev == &nodes[3]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1021 CX_TEST_ASSERT(chain_mid.next == &nodes[4]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1022 CX_TEST_ASSERT(chain_end.prev == &nodes[4]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1023 CX_TEST_ASSERT(chain_end.next == NULL);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1024 CX_TEST_ASSERT(begin == &new_begin);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1025 CX_TEST_ASSERT(end == &chain_end);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1026 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1027 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1028
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1029 CX_TEST(test_linked_list_insert_unique) {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1030 node nodes[5] = {0};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1031 void *begin, *end;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1032 nodes[0].data = 3;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1033 nodes[1].data = 6;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1034 nodes[2].data = 10;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1035 nodes[3].data = 11;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1036 nodes[4].data = 15;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1037 for (unsigned i = 0 ; i < 4 ; i++) {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1038 cx_linked_list_link(&nodes[i], &nodes[i+1], loc_prev, loc_next);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1039 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1040 begin = &nodes[0];
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1041 end = &nodes[4];
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1042 CX_TEST_DO {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1043 // insert a single node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1044 node new_node = {0};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1045 new_node.data = 5;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1046 CX_TEST_ASSERT(0 == cx_linked_list_insert_unique(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1047 &begin, &end,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1048 loc_prev, loc_next,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1049 &new_node, test_cmp_node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1050 ));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1051 CX_TEST_ASSERT(new_node.prev == &nodes[0]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1052 CX_TEST_ASSERT(new_node.next == &nodes[1]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1053 CX_TEST_ASSERT(nodes[0].next == &new_node);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1054 CX_TEST_ASSERT(nodes[1].prev == &new_node);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1055 CX_TEST_ASSERT(begin == &nodes[0]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1056 CX_TEST_ASSERT(end == &nodes[4]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1057
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1058 // now as duplicate
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1059 node new_node_dup = {0};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1060 new_node_dup.data = 5;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1061 CX_TEST_ASSERT(0 != cx_linked_list_insert_unique(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1062 &begin, &end,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1063 loc_prev, loc_next,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1064 &new_node_dup, test_cmp_node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1065 ));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1066 CX_TEST_ASSERT(new_node_dup.prev == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1067 CX_TEST_ASSERT(new_node_dup.next == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1068 CX_TEST_ASSERT(new_node.prev == &nodes[0]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1069 CX_TEST_ASSERT(new_node.next == &nodes[1]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1070 CX_TEST_ASSERT(nodes[0].next == &new_node);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1071 CX_TEST_ASSERT(nodes[1].prev == &new_node);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1072 CX_TEST_ASSERT(begin == &nodes[0]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1073 CX_TEST_ASSERT(end == &nodes[4]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1074
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1075 // insert a new beginning node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1076 node new_begin = {0};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1077 new_begin.data = 1;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1078 CX_TEST_ASSERT(0 == cx_linked_list_insert_unique(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1079 &begin, &end,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1080 loc_prev, loc_next,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1081 &new_begin, test_cmp_node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1082 ));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1083 CX_TEST_ASSERT(new_begin.prev == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1084 CX_TEST_ASSERT(new_begin.next == &nodes[0]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1085 CX_TEST_ASSERT(nodes[0].prev == &new_begin);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1086 CX_TEST_ASSERT(begin == &new_begin);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1087 CX_TEST_ASSERT(end == &nodes[4]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1088
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1089 // now as duplicate
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1090 node new_begin_dup = {0};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1091 new_begin_dup.data = 1;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1092 CX_TEST_ASSERT(0 != cx_linked_list_insert_unique(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1093 &begin, &end,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1094 loc_prev, loc_next,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1095 &new_begin_dup, test_cmp_node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1096 ));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1097 CX_TEST_ASSERT(new_begin_dup.prev == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1098 CX_TEST_ASSERT(new_begin_dup.next == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1099 CX_TEST_ASSERT(new_begin.prev == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1100 CX_TEST_ASSERT(new_begin.next == &nodes[0]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1101 CX_TEST_ASSERT(nodes[0].prev == &new_begin);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1102 CX_TEST_ASSERT(begin == &new_begin);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1103 CX_TEST_ASSERT(end == &nodes[4]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1104
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1105 // now insert a chain with two duplicates
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1106 node chain_start = {NULL, NULL, 8};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1107 node chain_mid1 = {NULL, NULL, 11};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1108 node chain_mid2 = {NULL, NULL, 14};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1109 node chain_mid3 = {NULL, NULL, 15};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1110 node chain_mid4 = {NULL, NULL, 15};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1111 node chain_end = {NULL, NULL, 17};
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1112 cx_linked_list_link(&chain_start, &chain_mid1, loc_prev, loc_next);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1113 cx_linked_list_link(&chain_mid1, &chain_mid2, loc_prev, loc_next);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1114 cx_linked_list_link(&chain_mid2, &chain_mid3, loc_prev, loc_next);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1115 cx_linked_list_link(&chain_mid3, &chain_mid4, loc_prev, loc_next);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1116 cx_linked_list_link(&chain_mid4, &chain_end, loc_prev, loc_next);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1117
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1118 node *dup_start = cx_linked_list_insert_unique_chain(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1119 &begin, &end,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1120 loc_prev, loc_next,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1121 &chain_start, test_cmp_node
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1122 );
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1123
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1124 CX_TEST_ASSERT(chain_start.prev == &nodes[1]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1125 CX_TEST_ASSERT(chain_start.next == &nodes[2]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1126 CX_TEST_ASSERT(chain_mid2.prev == &nodes[3]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1127 CX_TEST_ASSERT(chain_mid2.next == &nodes[4]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1128 CX_TEST_ASSERT(chain_end.prev == &nodes[4]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1129 CX_TEST_ASSERT(chain_end.next == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1130 CX_TEST_ASSERT(begin == &new_begin);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1131 CX_TEST_ASSERT(end == &chain_end);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1132
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1133 // the duplicates
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1134 CX_TEST_ASSERT(dup_start == &chain_mid1);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1135 CX_TEST_ASSERT(dup_start->prev == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1136 CX_TEST_ASSERT(dup_start->next == &chain_mid3);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1137 CX_TEST_ASSERT(chain_mid3.prev == &chain_mid1);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1138 CX_TEST_ASSERT(chain_mid3.next == &chain_mid4);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1139 CX_TEST_ASSERT(chain_mid4.prev == &chain_mid3);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1140 CX_TEST_ASSERT(chain_mid4.next == NULL);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1141 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1142 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1143
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1144 CX_TEST(test_linked_list_first) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1145 node *testdata = create_nodes_test_data(3);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1146 void *begin = testdata;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1147 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1148 CX_TEST_ASSERT(begin == cx_linked_list_first(testdata, loc_prev));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1149 CX_TEST_ASSERT(begin == cx_linked_list_first(testdata->next, loc_prev));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1150 CX_TEST_ASSERT(begin == cx_linked_list_first(testdata->next->next, loc_prev));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1151 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1152 destroy_nodes_test_data(testdata);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1153 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1154
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1155 CX_TEST(test_linked_list_last) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1156 node *testdata = create_nodes_test_data(3);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1157 void *end = testdata->next->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1158 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1159 CX_TEST_ASSERT(end == cx_linked_list_last(testdata, loc_next));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1160 CX_TEST_ASSERT(end == cx_linked_list_last(testdata->next, loc_next));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1161 CX_TEST_ASSERT(end == cx_linked_list_last(testdata->next->next, loc_next));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1162 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1163 destroy_nodes_test_data(testdata);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1164 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1165
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1166 CX_TEST(test_linked_list_prev) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1167 node *testdata = create_nodes_test_data(3);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1168 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1169 CX_TEST_ASSERT(cx_linked_list_prev(testdata, loc_next, testdata) == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1170 CX_TEST_ASSERT(cx_linked_list_prev(testdata, loc_next, testdata->next) == testdata);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1171 CX_TEST_ASSERT(cx_linked_list_prev(testdata, loc_next, testdata->next->next) == testdata->next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1172 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1173 destroy_nodes_test_data(testdata);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1174 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1175
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1176 CX_TEST(test_linked_list_remove) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1177 node *testdata = create_nodes_test_data(3);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1178 assign_nodes_test_data(testdata, 2, 4, 6);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1179 node *first = testdata;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1180 node *second = first->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1181 node *third = second->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1182 void *begin = testdata;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1183 void *end = third;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1184
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1185 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1186 cx_linked_list_remove(&begin, &end, loc_prev, loc_next, second);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1187 CX_TEST_ASSERT(begin == first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1188 CX_TEST_ASSERT(end == third);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1189 CX_TEST_ASSERT(first->prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1190 CX_TEST_ASSERT(first->next == third);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1191 CX_TEST_ASSERT(third->prev == first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1192 CX_TEST_ASSERT(third->next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1193
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1194 cx_linked_list_remove(&begin, &end, loc_prev, loc_next, third);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1195 CX_TEST_ASSERT(begin == first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1196 CX_TEST_ASSERT(end == first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1197 CX_TEST_ASSERT(first->prev == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1198 CX_TEST_ASSERT(first->next == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1199
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1200 cx_linked_list_remove(&begin, &end, loc_prev, loc_next, first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1201 CX_TEST_ASSERT(begin == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1202 CX_TEST_ASSERT(end == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1203 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1204 // list is not intact anymore, we have to free nodes individually
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1205 free(first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1206 free(second);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1207 free(third);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1208 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1209
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1210 CX_TEST(test_linked_list_remove_chain) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1211 node *testdata = create_nodes_test_data(5);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1212 assign_nodes_test_data(testdata, 2, 4, 6, 8, 10);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1213 void *begin = testdata;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1214 void *end = cx_linked_list_last(testdata, loc_next);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1215 void *orig_end = end;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1216 // remember what we need to free
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1217 node *kill_list[5];
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1218 kill_list[0] = testdata;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1219 for (unsigned i = 1 ; i < 5 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1220 kill_list[i] = kill_list[i-1]->next;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1221 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1222
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1223 CX_TEST_DO {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1224 // remove chain, but pretend that we don't have a prev pointer!
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1225 size_t result = cx_linked_list_remove_chain(
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1226 &begin, &end, -1, loc_next,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1227 cx_linked_list_at(begin, 0, loc_next, 2),
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1228 2
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1229 );
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1230 CX_TEST_ASSERT(result == 2);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1231 CX_TEST_ASSERT(begin == testdata);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1232 CX_TEST_ASSERT(end == orig_end);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1233 node *new_idx2 = cx_linked_list_at(begin, 0, loc_next, 2);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1234 CX_TEST_ASSERT(new_idx2->data == 10);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1235 CX_TEST_ASSERT(new_idx2->next == NULL);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1236 // we pretended we don't have prev, so it still points to 8!
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1237 CX_TEST_ASSERT(new_idx2->prev->data == 8);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1238
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1239 // remove last elements and try to remove more than we have
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1240 result = cx_linked_list_remove_chain(
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1241 &begin, &end, -1, loc_next,
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1242 cx_linked_list_at(begin, 0, loc_next, 2),
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1243 2
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1244 );
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1245 CX_TEST_ASSERT(result == 1);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1246 CX_TEST_ASSERT(begin == testdata);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1247 CX_TEST_ASSERT(end == testdata->next);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1248 CX_TEST_ASSERT(NULL == testdata->next->next);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1249 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1250
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1251 for (unsigned i = 0 ; i < 5 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1252 free(kill_list[i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1253 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1254 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
1255
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1256 CX_TEST(test_linked_list_size) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1257 node *td5 = create_nodes_test_data(5);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1258 node *td13 = create_nodes_test_data(13);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1259 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1260 CX_TEST_ASSERT(cx_linked_list_size(NULL, loc_next) == 0);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1261 CX_TEST_ASSERT(cx_linked_list_size(td5, loc_next) == 5);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1262 CX_TEST_ASSERT(cx_linked_list_size(td13, loc_next) == 13);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1263 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1264 destroy_nodes_test_data(td5);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1265 destroy_nodes_test_data(td13);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1266 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1267
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1268 CX_TEST(test_linked_list_sort_empty) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1269 void *begin = NULL;
799
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1270 CX_TEST_DO {
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1271 // cannot assert something, we can just test that it does not crash
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1272 cx_linked_list_sort(&begin, NULL, loc_prev, loc_next, loc_data, cx_cmp_int);
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1273 CX_TEST_ASSERT(true);
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1274 }
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1275 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1276
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1277 CX_TEST(test_linked_list_sort) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1278 const size_t len = 1500;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1279 int *testdata = int_test_data(len);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1280 void *scrambled = create_nodes_test_data(len);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1281 node *n = scrambled;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1282 for (size_t i = 0; i < len; i++) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1283 n->data = testdata[i];
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1284 n = n->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1285 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1286 int *sorted = malloc(len*sizeof(int));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1287 memcpy(sorted, testdata, len*sizeof(int));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1288 qsort(sorted, len, sizeof(int), cx_cmp_int);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1289
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1290 void *begin = scrambled;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1291 void *end = cx_linked_list_last(begin, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1292
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1293 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1294 cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data, cx_cmp_int);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1295 node *check = begin;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1296 node *check_last = NULL;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1297 for (size_t i = 0; i < len; i++) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1298 CX_TEST_ASSERT(check->data == sorted[i]);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1299 CX_TEST_ASSERT(check->prev == check_last);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1300 if (i < len - 1) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1301 CX_TEST_ASSERT(check->next != NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1302 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1303 check_last = check;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1304 check = check->next;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1305 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1306 CX_TEST_ASSERT(check == NULL);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1307 CX_TEST_ASSERT(end == check_last);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1308 }
799
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1309 destroy_nodes_test_data(begin);
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1310 free(sorted);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1311 free(testdata);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1312 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1313
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1314 CX_TEST(test_linked_list_reverse) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1315 void *testdata = create_nodes_test_data(4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1316 void *expected = create_nodes_test_data(4);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1317 assign_nodes_test_data(testdata, 2, 4, 6, 8);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1318 assign_nodes_test_data(expected, 8, 6, 4, 2);
799
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1319 void *begin = testdata;
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1320 CX_TEST_DO {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1321 void *end = cx_linked_list_last(begin, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1322 void *orig_begin = begin, *orig_end = end;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1323
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1324 cx_linked_list_reverse(&begin, &end, loc_prev, loc_next);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1325 CX_TEST_ASSERT(end == orig_begin);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1326 CX_TEST_ASSERT(begin == orig_end);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1327 CX_TEST_ASSERT(0 == cx_linked_list_compare(begin, expected, loc_next, loc_data, cx_cmp_int));
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1328 }
799
a2a757d225b4 fix some broken cleanup
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
1329 destroy_nodes_test_data(begin);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1330 destroy_nodes_test_data(expected);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1331 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1332
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1333
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1334 CX_TEST(test_empty_list_size) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1335 CX_TEST_DO {
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1336 CX_TEST_ASSERT(cxEmptyList->collection.size == 0);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1337 CX_TEST_ASSERT(cxListSize(cxEmptyList) == 0);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1338 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1339 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1340
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1341 CX_TEST(test_empty_list_iterator) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1342 CxList *list = cxEmptyList;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1343
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1344 CxIterator it1 = cxListIterator(list);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1345 CxIterator it2 = cxListBackwardsIterator(list);
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1346
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1347 CX_TEST_DO {
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1348 CX_TEST_ASSERT(!cxIteratorValid(it1));
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1349 CX_TEST_ASSERT(!cxIteratorValid(it2));
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1350
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1351 int c = 0;
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1352 cx_foreach(void*, data, it1) c++;
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1353 cx_foreach(void*, data, it2) c++;
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1354 CX_TEST_ASSERT(c == 0);
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1355 }
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1356 }
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1357
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1358 CX_TEST(test_null_list_iterator) {
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1359 CxList *list = NULL;
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1360
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1361 CxIterator it1 = cxListIterator(list);
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1362 CxIterator it2 = cxListBackwardsIterator(list);
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1363 CxIterator it3 = cxListIteratorAt(list, 0);
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
1364 CxIterator it4 = cxListBackwardsIteratorAt(list, 0);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1365
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1366 CX_TEST_DO {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1367 CX_TEST_ASSERT(!cxIteratorValid(it1));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1368 CX_TEST_ASSERT(!cxIteratorValid(it2));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1369 CX_TEST_ASSERT(!cxIteratorValid(it3));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1370 CX_TEST_ASSERT(!cxIteratorValid(it4));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1371
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1372 int c = 0;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1373 cx_foreach(void*, data, it1) c++;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1374 cx_foreach(void*, data, it2) c++;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1375 cx_foreach(void*, data, it3) c++;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1376 cx_foreach(void*, data, it4) c++;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1377 CX_TEST_ASSERT(c == 0);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1378 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1379 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1380
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1381 CX_TEST(test_empty_list_noops) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1382 CX_TEST_DO {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1383 CxList copy = *cxEmptyList;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1384 cxListSort(cxEmptyList);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1385 cxListClear(cxEmptyList);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1386 cxListFree(cxEmptyList);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1387 CX_TEST_ASSERT(0 == memcmp(&copy, cxEmptyList, sizeof(CxList))); // NOLINT(*-suspicious-memory-comparison)
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1388 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1389 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1390
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1391 CX_TEST(test_empty_list_at) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1392 CX_TEST_DO {
1225
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1393 // the placeholder empty list
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1394 CX_TEST_ASSERT(cxListAt(cxEmptyList, 0) == NULL);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1395 CX_TEST_ASSERT(cxListAt(cxEmptyList, 1) == NULL);
1225
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1396 // a "true" empty list
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1397 CxList *list = cxLinkedListCreateSimple(sizeof(int));
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1398 CX_TEST_ASSERT(cxListAt(list, 0) == NULL);
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1399 CX_TEST_ASSERT(cxListAt(list, 1) == NULL);
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1400 cxListFree(list);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1401 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1402 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1403
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1404 CX_TEST(test_empty_list_find) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1405 int x = 42, y = 1337;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1406 CX_TEST_DO {
1225
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1407 // the placeholder empty list
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
1408 CX_TEST_ASSERT(cxListFind(cxEmptyList, &x) == 0);
1225
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1409 CX_TEST_ASSERT(cxListFindRemove(cxEmptyList, &y) == 0);
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1410 // a "true" empty list
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1411 CxList *list = cxLinkedListCreateSimple(sizeof(int));
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1412 CX_TEST_ASSERT(cxListFind(list, &x) == 0);
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1413 CX_TEST_ASSERT(cxListFindRemove(list, &y) == 0);
086e63c8dd06 fix cxListFind() crashing on empty linked lists
Mike Becker <universe@uap-core.de>
parents: 1163
diff changeset
1414 cxListFree(list);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1415 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1416 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1417
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1418 CX_TEST(test_empty_list_compare) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1419 CxList *empty = cxEmptyList;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1420 CxList *ll = cxLinkedListCreateSimple(sizeof(int));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1421 CxList *al = cxArrayListCreateSimple(sizeof(int), 8);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1422 int x = 5;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1423 CX_TEST_DO {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1424 CX_TEST_ASSERT(0 == cxListCompare(empty, cxEmptyList));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1425 CX_TEST_ASSERT(0 == cxListCompare(ll, cxEmptyList));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1426 CX_TEST_ASSERT(0 == cxListCompare(al, cxEmptyList));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1427 CX_TEST_ASSERT(0 == cxListCompare(cxEmptyList, ll));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1428 CX_TEST_ASSERT(0 == cxListCompare(cxEmptyList, al));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1429
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1430 cxListAdd(ll, &x);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1431 cxListAdd(al, &x);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1432
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1433 CX_TEST_ASSERT(0 < cxListCompare(ll, cxEmptyList));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1434 CX_TEST_ASSERT(0 < cxListCompare(al, cxEmptyList));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1435 CX_TEST_ASSERT(0 > cxListCompare(cxEmptyList, ll));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1436 CX_TEST_ASSERT(0 > cxListCompare(cxEmptyList, al));
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1437 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1438 cxListFree(ll);
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1439 cxListFree(al);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1440 }
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
1441
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1442 CX_TEST(test_null_list_free) {
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1443 CX_TEST_DO {
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1444 // cannot really verify, but asan or valgrind would complain
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1445 cxListFree(NULL);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1446 }
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1447 }
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
1448
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1449 CX_TEST(test_list_ll_create) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1450 CxTestingAllocator talloc;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1451 cx_testing_allocator_init(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1452 CxAllocator *alloc = &talloc.base;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1453 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1454 CxList *list = cxLinkedListCreate(alloc, cx_cmp_int, sizeof(int));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1455 CX_TEST_ASSERT(list != NULL);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1456 CX_TEST_ASSERT(list->collection.elem_size == sizeof(int));
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1457 CX_TEST_ASSERT(list->collection.simple_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1458 CX_TEST_ASSERT(list->collection.advanced_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1459 CX_TEST_ASSERT(list->collection.destructor_data == NULL);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1460 CX_TEST_ASSERT(cxListSize(list) == 0);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1461 CX_TEST_ASSERT(list->collection.allocator == alloc);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1462 CX_TEST_ASSERT(list->collection.cmpfunc == cx_cmp_int);
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
1463 CX_TEST_ASSERT(!list->collection.store_pointer);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1464 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1465 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1466 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1467 cx_testing_allocator_destroy(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1468 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1469
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1470 CX_TEST(test_list_ll_create_simple) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1471 CxList *list = cxLinkedListCreateSimple(sizeof(int));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1472 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1473 CX_TEST_ASSERT(list != NULL);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1474 CX_TEST_ASSERT(list->collection.elem_size == sizeof(int));
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1475 CX_TEST_ASSERT(list->collection.simple_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1476 CX_TEST_ASSERT(list->collection.advanced_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1477 CX_TEST_ASSERT(list->collection.destructor_data == NULL);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1478 CX_TEST_ASSERT(cxListSize(list) == 0);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1479 CX_TEST_ASSERT(list->collection.allocator == cxDefaultAllocator);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1480 CX_TEST_ASSERT(list->collection.cmpfunc == NULL);
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
1481 CX_TEST_ASSERT(!list->collection.store_pointer);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1482 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1483 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1484 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1485
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1486 CX_TEST(test_list_ll_create_simple_for_pointers) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1487 CxList *list = cxLinkedListCreateSimple(CX_STORE_POINTERS);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1488 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1489 CX_TEST_ASSERT(list != NULL);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1490 CX_TEST_ASSERT(list->collection.elem_size == sizeof(void*));
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1491 CX_TEST_ASSERT(list->collection.simple_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1492 CX_TEST_ASSERT(list->collection.advanced_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1493 CX_TEST_ASSERT(list->collection.destructor_data == NULL);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1494 CX_TEST_ASSERT(cxListSize(list) == 0);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1495 CX_TEST_ASSERT(list->collection.allocator == cxDefaultAllocator);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1496 CX_TEST_ASSERT(list->collection.cmpfunc == cx_cmp_ptr);
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
1497 CX_TEST_ASSERT(list->collection.store_pointer);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1498 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1499 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1500 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1501
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1502 CX_TEST(test_list_arl_create) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1503 CxTestingAllocator talloc;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1504 cx_testing_allocator_init(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1505 CxAllocator *alloc = &talloc.base;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1506 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1507 CxList *list = cxArrayListCreate(alloc, cx_cmp_int, sizeof(int), 8);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1508 CX_TEST_ASSERT(list != NULL);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1509 CX_TEST_ASSERT(list->collection.elem_size == sizeof(int));
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1510 CX_TEST_ASSERT(list->collection.simple_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1511 CX_TEST_ASSERT(list->collection.advanced_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1512 CX_TEST_ASSERT(list->collection.destructor_data == NULL);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1513 CX_TEST_ASSERT(cxListSize(list) == 0);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1514 CX_TEST_ASSERT(list->collection.allocator == alloc);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1515 CX_TEST_ASSERT(list->collection.cmpfunc == cx_cmp_int);
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
1516 CX_TEST_ASSERT(!list->collection.store_pointer);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1517 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1518 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1519 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1520 cx_testing_allocator_destroy(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1521 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1522
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1523 CX_TEST(test_list_arl_create_simple) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1524 CxList *list = cxArrayListCreateSimple(sizeof(int), 8);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1525 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1526 CX_TEST_ASSERT(list != NULL);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1527 CX_TEST_ASSERT(list->collection.elem_size == sizeof(int));
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1528 CX_TEST_ASSERT(list->collection.simple_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1529 CX_TEST_ASSERT(list->collection.advanced_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1530 CX_TEST_ASSERT(list->collection.destructor_data == NULL);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1531 CX_TEST_ASSERT(cxListSize(list) == 0);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1532 CX_TEST_ASSERT(list->collection.allocator == cxDefaultAllocator);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1533 CX_TEST_ASSERT(list->collection.cmpfunc == NULL);
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
1534 CX_TEST_ASSERT(!list->collection.store_pointer);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1535 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1536 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1537 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1538
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1539 CX_TEST(test_list_arl_create_simple_for_pointers) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1540 CxList *list = cxArrayListCreateSimple(CX_STORE_POINTERS, 8);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1541 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1542 CX_TEST_ASSERT(list != NULL);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1543 CX_TEST_ASSERT(list->collection.elem_size == sizeof(void*));
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1544 CX_TEST_ASSERT(list->collection.simple_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1545 CX_TEST_ASSERT(list->collection.advanced_destructor == NULL);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1546 CX_TEST_ASSERT(list->collection.destructor_data == NULL);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1547 CX_TEST_ASSERT(cxListSize(list) == 0);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1548 CX_TEST_ASSERT(list->collection.allocator == cxDefaultAllocator);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1549 CX_TEST_ASSERT(list->collection.cmpfunc == cx_cmp_ptr);
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
1550 CX_TEST_ASSERT(list->collection.store_pointer);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1551 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1552 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1553 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1554
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1555 static void test_fake_simple_int_destr(void *elem) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1556 *(int *) elem = 42;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1557 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1558
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1559 CX_TEST(test_list_pll_destroy_no_destr) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1560 CxTestingAllocator talloc;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1561 cx_testing_allocator_init(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1562 CxAllocator *alloc = &talloc.base;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1563 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1564 void *item = cxMalloc(alloc, sizeof(int));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1565 CxList *list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1566 cxListAdd(list, item);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1567 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1568 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1569 // item is not yet freed
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1570 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1571 cxFree(alloc, item);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1572 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1573 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1574 cx_testing_allocator_destroy(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1575 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1576
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1577 CX_TEST(test_list_pll_destroy_simple_destr) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1578 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1579 int item = 0;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1580 CxList *list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1581 list->collection.simple_destructor = test_fake_simple_int_destr;
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1582 cxListAdd(list, &item);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1583 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1584 CX_TEST_ASSERT(item == 42);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1585 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1586 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1587
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1588 CX_TEST(test_list_pll_destroy_adv_destr) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1589 CxTestingAllocator talloc;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1590 cx_testing_allocator_init(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1591 CxAllocator *alloc = &talloc.base;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1592 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1593 void *item = cxMalloc(alloc, sizeof(int));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1594 CxList *list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1595 list->collection.destructor_data = alloc;
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1596 list->collection.advanced_destructor = (cx_destructor_func2) cxFree;
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1597 cxListAdd(list, item);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1598 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1599 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1600 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1601 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1602 cx_testing_allocator_destroy(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1603 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1604
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1605 CX_TEST(test_list_parl_destroy_no_destr) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1606 CxTestingAllocator talloc;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1607 cx_testing_allocator_init(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1608 CxAllocator *alloc = &talloc.base;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1609 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1610 void *item = cxMalloc(alloc, sizeof(int));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1611 CxList *list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS, 4);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1612 cxListAdd(list, item);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1613 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1614 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1615 // item is not yet freed
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1616 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1617 cxFree(alloc, item);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1618 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1619 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1620 cx_testing_allocator_destroy(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1621 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1622
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1623 CX_TEST(test_list_parl_destroy_simple_destr) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1624 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1625 int item = 0;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1626 CxList *list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS, 4);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1627 list->collection.simple_destructor = test_fake_simple_int_destr;
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1628 cxListAdd(list, &item);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1629 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1630 CX_TEST_ASSERT(item == 42);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1631 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1632 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1633
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1634 CX_TEST(test_list_parl_destroy_adv_destr) {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1635 CxTestingAllocator talloc;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1636 cx_testing_allocator_init(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1637 CxAllocator *alloc = &talloc.base;
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1638 CX_TEST_DO {
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1639 void *item = cxMalloc(alloc, sizeof(int));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1640 CxList *list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS, 4);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1641 list->collection.destructor_data = alloc;
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
1642 list->collection.advanced_destructor = (cx_destructor_func2) cxFree;
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1643 cxListAdd(list, item);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1644 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1645 cxListFree(list);
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1646 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1647 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1648 cx_testing_allocator_destroy(&talloc);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1649 }
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
1650
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1651 #define set_up_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1652 CxTestingAllocator talloc; \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1653 cx_testing_allocator_init(&talloc); \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1654 CxAllocator *alloc = &talloc.base; \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1655 CX_TEST_DO {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1656 #define tear_down_combo \
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
1657 cxListFree(list); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1658 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));\
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1659 } \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1660 cx_testing_allocator_destroy(&talloc);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1661 #define roll_out_test_invokers(name) \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1662 CX_TEST(test_list_ll_##name) { \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1663 set_up_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1664 CxList *list = cxLinkedListCreate(alloc, cx_cmp_int, sizeof(int)); \
807
c8d692131b1e remove flags to disable SBO in tests - fix #343 fix #358
Mike Becker <universe@uap-core.de>
parents: 804
diff changeset
1665 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, false); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1666 tear_down_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1667 } \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1668 CX_TEST(test_list_arl_##name) { \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1669 set_up_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1670 CxList *list = cxArrayListCreate(alloc, cx_cmp_int, sizeof(int), 8); \
807
c8d692131b1e remove flags to disable SBO in tests - fix #343 fix #358
Mike Becker <universe@uap-core.de>
parents: 804
diff changeset
1671 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, false); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1672 tear_down_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1673 } \
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1674 CX_TEST(test_list_kvl_##name) { \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1675 set_up_combo \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1676 CxList *list = cxKvListCreate(alloc, cx_cmp_int, sizeof(int)); \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1677 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, false); \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1678 tear_down_combo \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1679 } \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1680 CX_TEST(test_list_pll_##name) { \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1681 set_up_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1682 CxList *list = cxLinkedListCreate(alloc, cx_cmp_int, CX_STORE_POINTERS); \
807
c8d692131b1e remove flags to disable SBO in tests - fix #343 fix #358
Mike Becker <universe@uap-core.de>
parents: 804
diff changeset
1683 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, true); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1684 tear_down_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1685 } \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1686 CX_TEST(test_list_parl_##name) { \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1687 set_up_combo \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1688 CxList *list = cxArrayListCreate(alloc, cx_cmp_int, CX_STORE_POINTERS, 8); \
807
c8d692131b1e remove flags to disable SBO in tests - fix #343 fix #358
Mike Becker <universe@uap-core.de>
parents: 804
diff changeset
1689 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, true); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1690 tear_down_combo \
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1691 } \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1692 CX_TEST(test_list_pkvl_##name) { \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1693 set_up_combo \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1694 CxList *list = cxKvListCreate(alloc, cx_cmp_int, CX_STORE_POINTERS); \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1695 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, true); \
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
1696 tear_down_combo \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1697 }
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1698 #define roll_out_test_combos(name, body) \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1699 static CX_TEST_SUBROUTINE(test_list_verify_##name, CxList *list, \
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 962
diff changeset
1700 cx_attr_unused bool isptrlist) body \
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1701 roll_out_test_invokers(name)
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1702
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1703 static void set_default_class_funcs(CxList *list, cx_list_class *defaulted_cl) {
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 886
diff changeset
1704 const cx_list_class *cl = list->climpl == NULL ? list->cl : list->climpl;
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1705 memcpy(defaulted_cl, cl, sizeof(cx_list_class));
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1706 defaulted_cl->insert_array = cx_list_default_insert_array;
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1707 defaulted_cl->insert_unique = cx_list_default_insert_unique;
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1708 defaulted_cl->insert_sorted = cx_list_default_insert_sorted;
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1709 defaulted_cl->sort = cx_list_default_sort;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1710 defaulted_cl->swap = cx_list_default_swap;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1711 defaulted_cl->compare = NULL;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1712 if (list->climpl == NULL) {
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1713 list->cl = defaulted_cl;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1714 } else {
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1715 list->climpl = defaulted_cl;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1716 }
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1717 }
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1718
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1719 #define do_set_default_class_funcs(list) \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1720 cx_list_class defaulted_cl; \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1721 set_default_class_funcs(list, &defaulted_cl)
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1722 #define roll_out_test_combos_with_defaulted_funcs(name, body) \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1723 static CX_TEST_SUBROUTINE(test_list_verify_##name, CxList *list, \
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 962
diff changeset
1724 cx_attr_unused bool isptrlist) body \
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1725 roll_out_test_invokers(name) \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1726 CX_TEST(test_list_llm_##name) { \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1727 set_up_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1728 CxList *list = cxLinkedListCreate(alloc, cx_cmp_int, sizeof(int)); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1729 do_set_default_class_funcs(list); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1730 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, false); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1731 tear_down_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1732 } \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1733 CX_TEST(test_list_arlm_##name) { \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1734 set_up_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1735 CxList *list = cxArrayListCreate(alloc, cx_cmp_int, sizeof(int), 8); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1736 do_set_default_class_funcs(list); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1737 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, false); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1738 tear_down_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1739 } \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1740 CX_TEST(test_list_pllm_##name) { \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1741 set_up_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1742 CxList *list = cxLinkedListCreate(alloc, cx_cmp_int, CX_STORE_POINTERS); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1743 do_set_default_class_funcs(list); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1744 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, true); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1745 tear_down_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1746 } \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1747 CX_TEST(test_list_parlm_##name) { \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1748 set_up_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1749 CxList *list = cxArrayListCreate(alloc, cx_cmp_int, CX_STORE_POINTERS, 8); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1750 do_set_default_class_funcs(list); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1751 CX_TEST_CALL_SUBROUTINE(test_list_verify_##name, list, true); \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1752 tear_down_combo \
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1753 }
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1754
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1755 #define array_init(...) {__VA_ARGS__}
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1756
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1757 static inline int *int_test_data_added_to_list(CxList *list, bool isptrlist, size_t len) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1758 int *testdata = int_test_data(len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1759 if (isptrlist) {
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1760 for (size_t i = 0; i < len; i++) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1761 cxListAdd(list, &testdata[i]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1762 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1763 } else {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1764 cxListAddArray(list, testdata, len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1765 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1766 return testdata;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1767 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1768
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1769 roll_out_test_combos(add, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1770 const size_t len = 250;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1771 int *testdata = int_test_data(len);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1772 for (size_t i = 0; i < len; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1773 CX_TEST_ASSERT(cxListAdd(list, &testdata[i]) == 0);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1774 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1775 CX_TEST_ASSERT(cxListSize(list) == len);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1776 for (size_t i = 0; i < len; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1777 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == testdata[i]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1778 }
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1779 for (size_t i = 0; i < len; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1780 ++testdata[i];
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1781 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1782 if (isptrlist) {
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1783 for (size_t i = 0; i < len; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1784 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == testdata[i]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1785 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1786 } else {
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1787 for (size_t i = 0; i < len; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1788 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == testdata[i] - 1);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1789 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1790 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1791 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1792 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1793
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1794 roll_out_test_combos(insert, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1795 int a = 5;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1796 int b = 47;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1797 int c = 13;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1798 int d = 42;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1799 CX_TEST_ASSERT(cxListInsert(list, 1, &a) != 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1800 CX_TEST_ASSERT(cxListSize(list) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1801 CX_TEST_ASSERT(cxListInsert(list, 0, &a) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1802 CX_TEST_ASSERT(cxListSize(list) == 1);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1803 CX_TEST_ASSERT(cxListInsert(list, 0, &b) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1804 CX_TEST_ASSERT(cxListSize(list) == 2);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1805 CX_TEST_ASSERT(cxListInsert(list, 1, &c) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1806 CX_TEST_ASSERT(cxListSize(list) == 3);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1807 CX_TEST_ASSERT(cxListInsert(list, 3, &d) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1808 CX_TEST_ASSERT(cxListSize(list) == 4);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1809 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == 47);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1810 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 13);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1811 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1812 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 42);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1813 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1814
1316
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1815 roll_out_test_combos(emplace, {
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1816 if (isptrlist) {
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1817 int **x;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1818 int y = 5;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1819 int z = 7;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1820 int w = 13;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1821
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1822 x = cxListEmplace(list);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1823 CX_TEST_ASSERT(x != NULL);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1824 CX_TEST_ASSERT(cxListSize(list) == 1);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1825 *x = &y;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1826 CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1827
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1828 x = cxListEmplace(list);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1829 CX_TEST_ASSERT(x != NULL);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1830 CX_TEST_ASSERT(cxListSize(list) == 2);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1831 *x = &z;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1832 CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 7);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1833
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1834 CX_TEST_ASSERT(NULL == cxListEmplaceAt(list, 3));
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1835 CX_TEST_ASSERT(cxListSize(list) == 2);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1836
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1837 x = cxListEmplaceAt(list, 1);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1838 CX_TEST_ASSERT(x != NULL);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1839 CX_TEST_ASSERT(cxListSize(list) == 3);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1840 *x = &w;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1841 CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1842 CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 13);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1843 CX_TEST_ASSERT(*(int*)cxListAt(list, 2) == 7);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1844 } else {
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1845 int *x;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1846
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1847 x = cxListEmplace(list);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1848 CX_TEST_ASSERT(x != NULL);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1849 CX_TEST_ASSERT(cxListSize(list) == 1);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1850 *x = 5;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1851 CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1852
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1853 x = cxListEmplace(list);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1854 CX_TEST_ASSERT(x != NULL);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1855 CX_TEST_ASSERT(cxListSize(list) == 2);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1856 *x = 7;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1857 CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 7);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1858
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1859 CX_TEST_ASSERT(NULL == cxListEmplaceAt(list, 3));
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1860 CX_TEST_ASSERT(cxListSize(list) == 2);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1861
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1862 x = cxListEmplaceAt(list, 1);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1863 CX_TEST_ASSERT(x != NULL);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1864 CX_TEST_ASSERT(cxListSize(list) == 3);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1865 *x = 13;
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1866 CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1867 CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 13);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1868 CX_TEST_ASSERT(*(int*)cxListAt(list, 2) == 7);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1869 }
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1870 })
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
1871
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
1872 roll_out_test_combos_with_defaulted_funcs(insert_array, {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1873 int a[5] = array_init(5, 47, 11, 13, 42);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1874 int b[5] = array_init(9, 18, 72, 50, 7);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1875 int *aptr[5];
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1876 int *bptr[5];
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1877 for (size_t i = 0; i < 5; i++) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1878 aptr[i] = &a[i];
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1879 bptr[i] = &b[i];
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1880 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1881
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1882 size_t inserted;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1883
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1884 if (isptrlist) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1885 inserted = cxListInsertArray(list, 0, aptr, 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1886 } else {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1887 inserted = cxListInsertArray(list, 0, a, 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1888 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1889 CX_TEST_ASSERT(inserted == 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1890 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1891 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 47);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1892 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == 11);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1893 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 13);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1894 CX_TEST_ASSERT(*(int *) cxListAt(list, 4) == 42);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1895 if (isptrlist) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1896 inserted = cxListInsertArray(list, 3, bptr, 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1897 } else {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1898 inserted = cxListInsertArray(list, 3, b, 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1899 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1900 CX_TEST_ASSERT(inserted == 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1901 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == 5);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1902 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 47);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1903 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == 11);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1904 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 9);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1905 CX_TEST_ASSERT(*(int *) cxListAt(list, 4) == 18);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1906 CX_TEST_ASSERT(*(int *) cxListAt(list, 5) == 72);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1907 CX_TEST_ASSERT(*(int *) cxListAt(list, 6) == 50);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1908 CX_TEST_ASSERT(*(int *) cxListAt(list, 7) == 7);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1909 CX_TEST_ASSERT(*(int *) cxListAt(list, 8) == 13);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1910 CX_TEST_ASSERT(*(int *) cxListAt(list, 9) == 42);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1911 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
1912
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1913 roll_out_test_combos_with_defaulted_funcs(emplace_array, {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1914 int a[5] = array_init(5, 47, 11, 13, 42);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1915 int b[5] = array_init(9, 18, 72, 50, 7);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1916
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1917 CxIterator iter;
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1918
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1919 iter = cxListEmplaceArray(list, 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1920 CX_TEST_ASSERT(cxListSize(list) == 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1921 CX_TEST_ASSERT(iter.elem_count == 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1922 CX_TEST_ASSERT(iter.index == 0);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1923 if (isptrlist) {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1924 cx_foreach(int **, elem, iter) {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1925 *elem = a + iter.index;
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1926 }
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1927 } else {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1928 cx_foreach(int *, elem, iter) {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1929 *elem = a[iter.index];
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1930 }
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1931 }
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1932 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1933 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 47);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1934 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == 11);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1935 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 13);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1936 CX_TEST_ASSERT(*(int *) cxListAt(list, 4) == 42);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1937 iter = cxListEmplaceArrayAt(list, 3, 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1938 CX_TEST_ASSERT(cxListSize(list) == 10);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1939 CX_TEST_ASSERT(iter.elem_count == 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1940 CX_TEST_ASSERT(iter.index == 0);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1941 if (isptrlist) {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1942 cx_foreach(int **, elem, iter) {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1943 *elem = b + iter.index;
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1944 }
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1945 } else {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1946 cx_foreach(int *, elem, iter) {
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1947 *elem = b[iter.index];
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1948 }
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1949 }
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1950 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == 5);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1951 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 47);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1952 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == 11);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1953 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 9);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1954 CX_TEST_ASSERT(*(int *) cxListAt(list, 4) == 18);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1955 CX_TEST_ASSERT(*(int *) cxListAt(list, 5) == 72);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1956 CX_TEST_ASSERT(*(int *) cxListAt(list, 6) == 50);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1957 CX_TEST_ASSERT(*(int *) cxListAt(list, 7) == 7);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1958 CX_TEST_ASSERT(*(int *) cxListAt(list, 8) == 13);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1959 CX_TEST_ASSERT(*(int *) cxListAt(list, 9) == 42);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1960 })
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
1961
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1962 roll_out_test_combos_with_defaulted_funcs(insert_sorted, {
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1963 int d1 = 50;
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1964 int d2 = 80;
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1965 int d3 = 60;
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1966 int d4 = 40;
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1967 int d5 = 70;
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1968 int d6a[6] = array_init(52, 54, 56, 62, 64, 75);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1969 int d7a[6] = array_init(51, 57, 58, 65, 77, 78);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1970 int d8 = 90;
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1971 int d9 = 56;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1972 int d10a[3] = array_init(67, 75, 90);
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1973 int *d6ptr[6];
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1974 int *d7ptr[6];
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1975 int *d10ptr[3];
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
1976 for (size_t i = 0; i < 6; i++) {
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1977 d6ptr[i] = &d6a[i];
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1978 d7ptr[i] = &d7a[i];
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1979 }
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1980 for (size_t i = 0 ; i < 3 ; i++) {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1981 d10ptr[i] = &d10a[i];
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1982 }
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1983 size_t inserted;
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1984 int expected[22] = array_init(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1985 40, 50, 51, 52, 54, 56, 56, 57, 58, 60,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
1986 62, 64, 65, 67, 70, 75, 75, 77, 78, 80, 90, 90
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1987 );
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1988
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1989 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d1));
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1990 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d2));
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1991 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d3));
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1992 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d4));
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1993 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d5));
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1994 if (isptrlist) {
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1995 inserted = cxListInsertSortedArray(list, d6ptr, 6);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1996 } else {
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1997 inserted = cxListInsertSortedArray(list, d6a, 6);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1998 }
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
1999 CX_TEST_ASSERT(inserted == 6);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2000 if (isptrlist) {
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2001 inserted = cxListInsertSortedArray(list, d7ptr, 6);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2002 } else {
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2003 inserted = cxListInsertSortedArray(list, d7a, 6);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2004 }
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2005 CX_TEST_ASSERT(inserted == 6);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2006 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d8));
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2007 CX_TEST_ASSERT(0 == cxListInsertSorted(list, &d9));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2008 if (isptrlist) {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2009 inserted = cxListInsertSortedArray(list, d10ptr, 3);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2010 } else {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2011 inserted = cxListInsertSortedArray(list, d10a, 3);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2012 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2013 CX_TEST_ASSERT(inserted == 3);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2014 CX_TEST_ASSERT(cxListSize(list) == 22);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2015 for (size_t i = 0; i < 22; i++) {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2016 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == expected[i]);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2017 }
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2018 })
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2019
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2020 roll_out_test_combos_with_defaulted_funcs(insert_unique, {
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2021 int d1 = 50;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2022 int d2 = 80;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2023 int d3 = 60;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2024 int d4 = 40;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2025 int d5 = 70;
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2026 int d6a[8] = array_init(52, 54, 56, 56, 62, 62, 64, 75);
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2027 int d7a[8] = array_init(51, 51, 57, 58, 65, 77, 78, 78);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2028 int d8 = 90;
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2029 int d9 = 56;
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2030 int d10a[5] = array_init(58, 58, 67, 75, 90);
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2031 int *d6ptr[8];
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2032 int *d7ptr[8];
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2033 int *d10ptr[5];
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2034 for (size_t i = 0; i < 8; i++) {
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2035 d6ptr[i] = &d6a[i];
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2036 d7ptr[i] = &d7a[i];
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2037 }
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2038 for (size_t i = 0 ; i < 5 ; i++) {
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2039 d10ptr[i] = &d10a[i];
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2040 }
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2041 size_t processed;
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2042 int expected[19] = array_init(
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2043 40, 50, 51, 52, 54, 56, 57, 58, 60,
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2044 62, 64, 65, 67, 70, 75, 77, 78, 80, 90
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2045 );
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2046
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2047 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d1));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2048 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d2));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2049 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d3));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2050 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d4));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2051 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d5));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2052 if (isptrlist) {
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2053 processed = cxListInsertUniqueArray(list, d6ptr, 8);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2054 } else {
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2055 processed = cxListInsertUniqueArray(list, d6a, 8);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2056 }
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2057 CX_TEST_ASSERT(processed == 8);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2058 if (isptrlist) {
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2059 processed = cxListInsertUniqueArray(list, d7ptr, 8);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2060 } else {
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2061 processed = cxListInsertUniqueArray(list, d7a, 8);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2062 }
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2063 CX_TEST_ASSERT(processed == 8);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2064 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d8));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2065 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d9));
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2066 if (isptrlist) {
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2067 processed = cxListInsertUniqueArray(list, d10ptr, 5);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2068 } else {
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2069 processed = cxListInsertUniqueArray(list, d10a, 5);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2070 }
1481
1dda1eed1899 improve insert_unique test case to cover previously uncovered cases
Mike Becker <universe@uap-core.de>
parents: 1480
diff changeset
2071 CX_TEST_ASSERT(processed == 5);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2072 CX_TEST_ASSERT(cxListSize(list) == 19);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
2073 for (size_t i = 0; i < 19; i++) {
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2074 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == expected[i]);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2075 }
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2076 })
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
2077
1428
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2078 roll_out_test_combos_with_defaulted_funcs(insert_unique_not_sorted, {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2079 int d1 = 50;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2080 int d2 = 80;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2081 int d3 = 60;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2082 int d4 = 40;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2083 int d5 = 70;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2084 int d6a[6] = array_init(52, 54, 56, 62, 64, 75);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2085 int d7a[6] = array_init(51, 57, 58, 65, 77, 78);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2086 int d8 = 90;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2087 int d9 = 56;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2088 int d10a[3] = array_init(67, 75, 90);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2089 int *d6ptr[6];
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2090 int *d7ptr[6];
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2091 int *d10ptr[3];
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2092 for (size_t i = 0; i < 6; i++) {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2093 d6ptr[i] = &d6a[i];
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2094 d7ptr[i] = &d7a[i];
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2095 }
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2096 for (size_t i = 0 ; i < 3 ; i++) {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2097 d10ptr[i] = &d10a[i];
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2098 }
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2099 size_t inserted;
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2100 int expected[19] = array_init(
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2101 50, 80, 60, 40, 70, 52, 54, 56, 62, 64,
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2102 75, 51, 57, 58, 65, 77, 78, 90, 67
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2103 );
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2104
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2105 // begin with an unsorted list!
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2106 CX_TEST_ASSERT(0 == cxListAdd(list, &d1));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2107 CX_TEST_ASSERT(0 == cxListAdd(list, &d2));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2108 CX_TEST_ASSERT(0 == cxListAdd(list, &d3));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2109 CX_TEST_ASSERT(0 == cxListAdd(list, &d4));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2110
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2111 // not start adding unique items
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2112 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d5));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2113 if (isptrlist) {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2114 inserted = cxListInsertUniqueArray(list, d6ptr, 6);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2115 } else {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2116 inserted = cxListInsertUniqueArray(list, d6a, 6);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2117 }
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2118 CX_TEST_ASSERT(inserted == 6);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2119 if (isptrlist) {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2120 inserted = cxListInsertUniqueArray(list, d7ptr, 6);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2121 } else {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2122 inserted = cxListInsertUniqueArray(list, d7a, 6);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2123 }
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2124 CX_TEST_ASSERT(inserted == 6);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2125 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d8));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2126 CX_TEST_ASSERT(0 == cxListInsertUnique(list, &d9));
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2127 if (isptrlist) {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2128 inserted = cxListInsertUniqueArray(list, d10ptr, 3);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2129 } else {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2130 inserted = cxListInsertUniqueArray(list, d10a, 3);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2131 }
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2132 CX_TEST_ASSERT(inserted == 3);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2133 CX_TEST_ASSERT(cxListSize(list) == 19);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2134 for (size_t i = 0; i < 19; i++) {
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2135 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == expected[i]);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2136 }
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2137 })
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
2138
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2139 roll_out_test_combos(remove, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2140 const size_t testdata_len = 32;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2141 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2142
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2143 CX_TEST_ASSERT(cxListRemove(list, 2) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2144 CX_TEST_ASSERT(cxListRemove(list, 4) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2145 CX_TEST_ASSERT(cxListSize(list) == testdata_len - 2);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2146 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == testdata[0]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2147 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == testdata[1]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2148 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == testdata[3]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2149 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == testdata[4]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2150 CX_TEST_ASSERT(*(int *) cxListAt(list, 4) == testdata[6]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2151 CX_TEST_ASSERT(cxListRemove(list, 0) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2152 CX_TEST_ASSERT(cxListSize(list) == testdata_len - 3);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2153 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == testdata[1]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2154 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == testdata[3]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2155 CX_TEST_ASSERT(cxListRemove(list, testdata_len) != 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2156 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2157 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2158
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2159 roll_out_test_combos(remove_and_get, {
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2160 int testdata[10];
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2161 for (unsigned i = 0 ; i < 10 ; i++) {
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2162 testdata[i] = 2*i;
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2163 cxListAdd(list, &testdata[i]);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2164 }
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2165 if (isptrlist) {
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2166 int *x;
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2167 CX_TEST_ASSERT(cxListPop(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2168 CX_TEST_ASSERT(*x == 18);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2169 CX_TEST_ASSERT(cxListPop(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2170 CX_TEST_ASSERT(*x == 16);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2171 CX_TEST_ASSERT(cxListPopFront(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2172 CX_TEST_ASSERT(*x == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2173 CX_TEST_ASSERT(cxListPopFront(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2174 CX_TEST_ASSERT(*x == 2);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2175 CX_TEST_ASSERT(cxListRemoveAndGet(list, 3, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2176 CX_TEST_ASSERT(*x == 10);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2177 CX_TEST_ASSERT(cxListRemoveAndGet(list, 3, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2178 CX_TEST_ASSERT(*x == 12);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2179 CX_TEST_ASSERT(cxListRemoveAndGet(list, 8, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2180 CX_TEST_ASSERT(*x == 12);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2181
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2182 *x = 1337;
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2183 cxListClear(list);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2184 CX_TEST_ASSERT(cxListRemoveAndGet(list, 0, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2185 CX_TEST_ASSERT(cxListRemoveAndGet(list, 1, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2186 CX_TEST_ASSERT(cxListPop(list, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2187 CX_TEST_ASSERT(cxListPopFront(list, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2188 CX_TEST_ASSERT(*x == 1337);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2189 } else {
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2190 int x;
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2191 CX_TEST_ASSERT(cxListPop(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2192 CX_TEST_ASSERT(x == 18);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2193 CX_TEST_ASSERT(cxListPop(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2194 CX_TEST_ASSERT(x == 16);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2195 CX_TEST_ASSERT(cxListPopFront(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2196 CX_TEST_ASSERT(x == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2197 CX_TEST_ASSERT(cxListPopFront(list, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2198 CX_TEST_ASSERT(x == 2);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2199 CX_TEST_ASSERT(cxListRemoveAndGet(list, 3, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2200 CX_TEST_ASSERT(x == 10);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2201 CX_TEST_ASSERT(cxListRemoveAndGet(list, 3, &x) == 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2202 CX_TEST_ASSERT(x == 12);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2203 CX_TEST_ASSERT(cxListRemoveAndGet(list, 8, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2204 CX_TEST_ASSERT(x == 12);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2205
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2206 x = 1337;
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2207 cxListClear(list);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2208 CX_TEST_ASSERT(cxListRemoveAndGet(list, 0, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2209 CX_TEST_ASSERT(cxListRemoveAndGet(list, 1, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2210 CX_TEST_ASSERT(cxListPop(list, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2211 CX_TEST_ASSERT(cxListPopFront(list, &x) != 0);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2212 CX_TEST_ASSERT(x == 1337);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2213 }
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2214 })
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2215
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2216 static unsigned test_remove_array_destr_ctr;
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 962
diff changeset
2217 static void test_remove_array_destr(cx_attr_unused void *d) {
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2218 test_remove_array_destr_ctr++;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2219 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2220
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2221 roll_out_test_combos(remove_array, {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2222 const size_t testdata_len = 32;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2223 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2224 cxDefineDestructor(list, test_remove_array_destr);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2225 test_remove_array_destr_ctr = 0;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2226
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2227 // first, remove and get - no destructor must be called
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2228 int targete[8];
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2229 int *targetp[8];
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2230 memset(targete, 0, sizeof(targete));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2231 memset(targetp, 0, sizeof(targetp));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2232 void *target = isptrlist ? (void*) targetp : targete;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2233 CX_TEST_ASSERT(8 == cxListRemoveArrayAndGet(list, 8, 8, target));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2234 CX_TEST_ASSERT(0 == test_remove_array_destr_ctr);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2235 CX_TEST_ASSERT(24 == cxListSize(list));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2236 for (unsigned int i = 0 ; i < 8 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2237 CX_TEST_ASSERT((*(int*)cxListAt(list, i)) == testdata[i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2238 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2239 for (unsigned int i = 8 ; i < 24 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2240 CX_TEST_ASSERT((*(int*)cxListAt(list, i)) == testdata[8+i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2241 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2242 for (unsigned int i = 0 ; i < 8 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2243 if (isptrlist) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2244 CX_TEST_ASSERT(targetp[i] == &testdata[8 + i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2245 } else {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2246 CX_TEST_ASSERT(targete[i] == testdata[8 + i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2247 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2248 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2249
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2250 // now, just remove - destructor must be called
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2251 CX_TEST_ASSERT(8 == cxListRemoveArray(list, 8, 8));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2252 CX_TEST_ASSERT(8 == test_remove_array_destr_ctr);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2253 CX_TEST_ASSERT(16 == cxListSize(list));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2254 for (unsigned int i = 0 ; i < 8 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2255 CX_TEST_ASSERT((*(int*)cxListAt(list, i)) == testdata[i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2256 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2257 for (unsigned int i = 8 ; i < 16 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2258 CX_TEST_ASSERT((*(int*)cxListAt(list, i)) == testdata[16+i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2259 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2260
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2261 // finally, remove and get out of bounds
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2262 test_remove_array_destr_ctr = 0;
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2263 memset(targete, 0, sizeof(targete));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2264 memset(targetp, 0, sizeof(targetp));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2265 CX_TEST_ASSERT(4 == cxListRemoveArrayAndGet(list, 12, 8, target));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2266 CX_TEST_ASSERT(0 == test_remove_array_destr_ctr);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2267 CX_TEST_ASSERT(12 == cxListSize(list));
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2268 for (unsigned int i = 0 ; i < 8 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2269 CX_TEST_ASSERT((*(int*)cxListAt(list, i)) == testdata[i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2270 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2271 for (unsigned int i = 8 ; i < 12 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2272 CX_TEST_ASSERT((*(int*)cxListAt(list, i)) == testdata[16+i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2273 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2274 for (unsigned int i = 0 ; i < 4 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2275 if (isptrlist) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2276 CX_TEST_ASSERT(targetp[i] == &testdata[28 + i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2277 } else {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2278 CX_TEST_ASSERT(targete[i] == testdata[28 + i]);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2279 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2280 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2281 for (unsigned int i = 4 ; i < 8 ; i++) {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2282 if (isptrlist) {
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2283 CX_TEST_ASSERT(targetp[i] == NULL);
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2284 } else {
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2285 CX_TEST_ASSERT(targete[i] == 0);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2286 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2287 }
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2288
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2289 free(testdata);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2290 })
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
2291
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2292 roll_out_test_combos(find_remove, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2293 const size_t testdata_len = 250;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2294 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2295
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2296 unsigned exp = rand() % testdata_len; // NOLINT(cert-msc50-cpp)
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2297 int val = testdata[exp];
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2298 // randomly picked number could occur earlier in list - find first position
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2299 for (unsigned i = 0 ; i < exp ; i++) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2300 if (testdata[i] == val) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2301 exp = i;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2302 break;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2303 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2304 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2305 CX_TEST_ASSERT(cxListSize(list) == testdata_len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2306 CX_TEST_ASSERT(cxListFind(list, &val) == exp);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2307 CX_TEST_ASSERT(cxListFindRemove(list, &val) == exp);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2308 CX_TEST_ASSERT(cxListSize(list) == testdata_len - 1);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2309 CX_TEST_ASSERT(cxListFind(list, &val) != exp);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2310
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2311 int notinlist = -1;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2312 CX_TEST_ASSERT(cxListFindRemove(list, &notinlist) == cxListSize(list));
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2313 CX_TEST_ASSERT(cxListSize(list) == testdata_len - 1);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2314
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2315 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2316 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2317
1163
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2318 roll_out_test_combos(find_remove_sorted, {
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2319 const size_t testdata_len = 250;
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2320 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2321 qsort(testdata, testdata_len, sizeof(int), cx_cmp_int);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2322 cxListSort(list);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2323
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2324 unsigned exp = rand() % testdata_len; // NOLINT(cert-msc50-cpp)
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2325 int val = testdata[exp];
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2326 // randomly picked number could occur earlier in list - find first position
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2327 for (unsigned i = 0 ; i < exp ; i++) {
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2328 if (testdata[i] == val) {
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2329 exp = i;
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2330 break;
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2331 }
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2332 }
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2333 CX_TEST_ASSERT(cxListSize(list) == testdata_len);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2334 CX_TEST_ASSERT(cxListFind(list, &val) == exp);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2335 CX_TEST_ASSERT(cxListFindRemove(list, &val) == exp);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2336 CX_TEST_ASSERT(cxListSize(list) == testdata_len - 1);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2337 CX_TEST_ASSERT(cxListFind(list, &val) != exp);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2338
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2339 int notinlist = -1;
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2340 CX_TEST_ASSERT(cxListFindRemove(list, &notinlist) == cxListSize(list));
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2341 CX_TEST_ASSERT(cxListSize(list) == testdata_len - 1);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2342
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2343 free(testdata);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2344 })
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
2345
1294
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2346 roll_out_test_combos(contains, {
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2347 int a = 37;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2348 int b = 42;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2349 int c = 55;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2350 cxListAdd(list, &a);
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2351 cxListAdd(list, &b);
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2352 cxListAdd(list, &c);
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2353 int x;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2354 x = 37;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2355 CX_TEST_ASSERT(cxListContains(list, &x));
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2356 x = 42;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2357 CX_TEST_ASSERT(cxListContains(list, &x));
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2358 x = 55;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2359 CX_TEST_ASSERT(cxListContains(list, &x));
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2360 x = 47;
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2361 CX_TEST_ASSERT(!cxListContains(list, &x));
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2362 })
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
2363
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2364 roll_out_test_combos(clear, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2365 int *testdata = int_test_data_added_to_list(list, isptrlist, 8);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2366 CX_TEST_ASSERT(cxListSize(list) > 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2367 cxListClear(list);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2368 CX_TEST_ASSERT(cxListSize(list) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2369 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2370 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2371
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2372 roll_out_test_combos(at, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2373 size_t len = 128;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2374 int *testdata = int_test_data_added_to_list(list, isptrlist, 128);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2375 CX_TEST_ASSERT(cxListSize(list) == len);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2376 for (size_t i = 0; i < len; i++) {
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2377 CX_TEST_ASSERT(cxListIndexValid(list, i));
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2378 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == testdata[i]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2379 }
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2380 CX_TEST_ASSERT(!cxListIndexValid(list, len));
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2381 CX_TEST_ASSERT(cxListAt(list, len) == NULL);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2382 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2383 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2384
1287
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2385 roll_out_test_combos(set, {
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2386 // Add some values
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2387 int v1 = 42;
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2388 cxListAdd(list, &v1);
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2389 int v2 = 100;
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2390 cxListAdd(list, &v2);
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2391 int v3 = 47;
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2392 cxListAdd(list, &v3);
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2393
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2394 // Change the first element
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2395 int v1new = 99;
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2396 CX_TEST_ASSERT(cxListSet(list, 0, &v1new) == 0);
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2397 CX_TEST_ASSERT(*(int *) cxListFirst(list) == 99);
1287
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2398
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2399 // Change the last element
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2400 int v3new = 101;
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2401 CX_TEST_ASSERT(cxListSet(list, 2, &v3new) == 0);
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
2402 CX_TEST_ASSERT(*(int *) cxListLast(list) == 101);
1287
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2403
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2404 // Try index out of bounds
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2405 int oob = 1337;
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2406 CX_TEST_ASSERT(cxListSet(list, 3, &oob) != 0);
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2407 })
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
2408
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2409 roll_out_test_combos_with_defaulted_funcs(swap, {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2410 int original[16] = array_init(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2411 int swapped[16] = array_init(8, 4, 14, 3, 1, 5, 9, 12, 0, 6, 11, 10, 7, 15, 2, 13);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2412
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2413 for (size_t i = 0; i < 16; i++) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2414 cxListAdd(list, &original[i]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2415 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2416
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2417 CX_TEST_ASSERT(0 == cxListSwap(list, 1, 4));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2418 CX_TEST_ASSERT(0 == cxListSwap(list, 2, 14));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2419 CX_TEST_ASSERT(0 == cxListSwap(list, 9, 6));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2420 CX_TEST_ASSERT(0 == cxListSwap(list, 3, 3));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2421 CX_TEST_ASSERT(0 == cxListSwap(list, 10, 11));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2422 CX_TEST_ASSERT(0 == cxListSwap(list, 8, 0));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2423 CX_TEST_ASSERT(0 == cxListSwap(list, 7, 12));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2424 CX_TEST_ASSERT(0 == cxListSwap(list, 13, 15));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2425
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2426 CX_TEST_ASSERT(0 != cxListSwap(list, 5, 16));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2427 CX_TEST_ASSERT(0 != cxListSwap(list, 16, 6));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2428 CX_TEST_ASSERT(0 != cxListSwap(list, 16, 17));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2429
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2430 CxIterator iter = cxListIterator(list);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2431 cx_foreach(int*, e, iter) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2432 CX_TEST_ASSERT(*e == swapped[iter.index]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2433 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2434 iter = cxListBackwardsIterator(list);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2435 cx_foreach(int*, e, iter) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2436 CX_TEST_ASSERT(*e == swapped[iter.index]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2437 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2438 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2439
807
c8d692131b1e remove flags to disable SBO in tests - fix #343 fix #358
Mike Becker <universe@uap-core.de>
parents: 804
diff changeset
2440 CX_TEST(test_list_arl_swap_no_sbo) {
1321
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2441 CxTestingAllocator talloc;
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2442 cx_testing_allocator_init(&talloc);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2443 CxAllocator *alloc = &talloc.base;
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2444 CX_TEST_DO {
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2445 size_t item_size = 2*cx_array_swap_sbo_size;
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2446 CxList *list = cxArrayListCreate(alloc, cx_cmp_int, item_size, 8);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2447
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2448 char *obj = malloc(item_size);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2449 for (char c = 'a' ; c <= 'z' ; c++) {
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2450 obj[0] = c;
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2451 obj[item_size-1] = c;
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2452 cxListAdd(list, obj);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2453 }
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2454 free(obj);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2455
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2456 CX_TEST_ASSERT(((char*)cxListAt(list, 3))[0] == 'd');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2457 CX_TEST_ASSERT(((char*)cxListAt(list, 17))[0] == 'r');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2458 CX_TEST_ASSERT(((char*)cxListAt(list, 3))[item_size-1] == 'd');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2459 CX_TEST_ASSERT(((char*)cxListAt(list, 17))[item_size-1] == 'r');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2460 cxListSwap(list, 3, 17);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2461 CX_TEST_ASSERT(((char*)cxListAt(list, 17))[0] == 'd');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2462 CX_TEST_ASSERT(((char*)cxListAt(list, 3))[0] == 'r');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2463 CX_TEST_ASSERT(((char*)cxListAt(list, 17))[item_size-1] == 'd');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2464 CX_TEST_ASSERT(((char*)cxListAt(list, 3))[item_size-1] == 'r');
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2465
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2466 cxListFree(list);
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2467 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2468 }
1003c014bf92 fix stack buffer overflow in arl_swap_no_sbo test
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
2469 cx_testing_allocator_destroy(&talloc);
807
c8d692131b1e remove flags to disable SBO in tests - fix #343 fix #358
Mike Becker <universe@uap-core.de>
parents: 804
diff changeset
2470 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2471
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2472 roll_out_test_combos(find, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2473 const size_t testdata_len = 500;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2474 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2475
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2476 for (size_t attempt = 0; attempt < 25; attempt++) {
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2477 unsigned exp = rand() % testdata_len; // NOLINT(cert-msc50-cpp)
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2478 int val = testdata[exp];
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2479 // randomly picked number could occur earlier in list - find first position
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2480 for (unsigned i = 0 ; i < exp ; i++) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2481 if (testdata[i] == val) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2482 exp = i;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2483 break;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2484 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2485 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2486 CX_TEST_ASSERT(cxListFind(list, &val) == exp);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2487 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2488
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2489 int notinlist = -1;
1162
e3bb67b72d33 remove dependency to ssize_t - fixes #552
Mike Becker <universe@uap-core.de>
parents: 1113
diff changeset
2490 CX_TEST_ASSERT(cxListFind(list, &notinlist) == cxListSize(list));
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2491
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2492 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2493 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2494
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2495 roll_out_test_combos_with_defaulted_funcs(sort, {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2496 const size_t testdata_len = 250;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2497 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2498 int *expected = malloc(testdata_len*sizeof(int));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2499 memcpy(expected, testdata, testdata_len*sizeof(int));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2500 qsort(expected, testdata_len, sizeof(int), cx_cmp_int);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2501
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2502 cxListSort(list);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2503 for (size_t i = 0; i < testdata_len; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2504 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == expected[i]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2505 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2506
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2507 free(expected);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2508 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2509 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2510
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2511 roll_out_test_combos(reverse, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2512 const size_t testdata_len = 50;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2513 int *testdata = int_test_data_added_to_list(list, isptrlist, testdata_len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2514 cxListReverse(list);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2515 for (size_t i = 0; i < testdata_len; i++) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2516 CX_TEST_ASSERT(*(int *) cxListAt(list, i) == testdata[testdata_len - 1 - i]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2517 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2518 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2519 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2520
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2521 roll_out_test_combos(iterator, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2522 const size_t len = 50;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2523 int *testdata = int_test_data_added_to_list(list, isptrlist, len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2524
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2525 CxIterator iter = cxListIterator(list);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
2526 CX_TEST_ASSERT(iter.elem_size == list->collection.elem_size);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
2527 CX_TEST_ASSERT(iter.elem_count == list->collection.size);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2528 size_t i = 0;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2529 cx_foreach(int*, x, iter) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2530 CX_TEST_ASSERT(i == iter.index);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2531 CX_TEST_ASSERT(*x == testdata[iter.index]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2532 i++;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2533 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2534 CX_TEST_ASSERT(i == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2535 iter = cxListBackwardsIterator(list);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2536 cx_foreach(int*, x, iter) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2537 CX_TEST_ASSERT(i - 1 == iter.index);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2538 CX_TEST_ASSERT(*x == testdata[iter.index]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2539 i--;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2540 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2541 CX_TEST_ASSERT(i == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2542 i = len / 2;
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2543 CxIterator mut_iter = cxListIteratorAt(list, i);
856
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
2544 CX_TEST_ASSERT(mut_iter.elem_size == list->collection.elem_size);
6bbbf219251d fix name of collection base member (to avoid base.base)
Mike Becker <universe@uap-core.de>
parents: 855
diff changeset
2545 CX_TEST_ASSERT(mut_iter.elem_count == list->collection.size);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2546 size_t j = 0;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2547 cx_foreach(int*, x, mut_iter) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2548 CX_TEST_ASSERT(mut_iter.index == len / 2 + j / 2);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2549 CX_TEST_ASSERT(*x == testdata[i]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2550 if (i % 2 == 1) cxIteratorFlagRemoval(mut_iter);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2551 i++;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2552 j++;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2553 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2554 CX_TEST_ASSERT(i == len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2555 i = len / 2;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2556 j = 0;
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2557 mut_iter = cxListBackwardsIteratorAt(list, i - 1);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2558 cx_foreach(int*, x, mut_iter) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2559 CX_TEST_ASSERT(mut_iter.index == len / 2 - 1 - j);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2560 CX_TEST_ASSERT(*x == testdata[i - 1]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2561 if (i % 2 == 0) cxIteratorFlagRemoval(mut_iter);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2562 i--;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2563 j++;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2564 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2565 CX_TEST_ASSERT(i == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2566 CX_TEST_ASSERT(cxListSize(list) == len / 2);
1387
9bdd053820b7 the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents: 1350
diff changeset
2567 CX_TEST_ASSERT(mut_iter.elem_count == len / 2);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2568 for (size_t k = 0; k < len / 2; k++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2569 CX_TEST_ASSERT(*(int *) cxListAt(list, k) == testdata[k * 2]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2570 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2571
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2572 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2573 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2574
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2575 roll_out_test_combos(insert_with_iterator, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2576 int fivenums[] = array_init(0, 1, 2, 3, 4);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2577 for (size_t i = 0; i < 5; i++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2578 cxListAdd(list, &fivenums[i]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2579 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2580 int newdata[] = array_init(10, 20, 30, 40, 50);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2581
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2582 CxIterator iter = cxListIteratorAt(list, 2);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2583 CX_TEST_ASSERT(cxIteratorValid(iter));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2584 CX_TEST_ASSERT(iter.index == 2);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2585 CX_TEST_ASSERT(*(int *) cxIteratorCurrent(iter) == 2);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2586 CX_TEST_ASSERT(iter.elem_count == 5);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2587 cxListInsertAfter(&iter, &newdata[0]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2588 CX_TEST_ASSERT(cxIteratorValid(iter));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2589 CX_TEST_ASSERT(iter.index == 2);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2590 CX_TEST_ASSERT(*(int *) cxIteratorCurrent(iter) == 2);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2591 CX_TEST_ASSERT(iter.elem_count == 6);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2592 cxListInsertBefore(&iter, &newdata[1]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2593 CX_TEST_ASSERT(cxIteratorValid(iter));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2594 CX_TEST_ASSERT(iter.index == 3);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2595 CX_TEST_ASSERT(*(int *) cxIteratorCurrent(iter) == 2);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2596 CX_TEST_ASSERT(iter.elem_count == 7);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2597
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2598 iter = cxListIterator(list);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2599 cxListInsertBefore(&iter, &newdata[2]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2600 CX_TEST_ASSERT(cxIteratorValid(iter));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2601 CX_TEST_ASSERT(iter.index == 1);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2602 CX_TEST_ASSERT(*(int *) cxIteratorCurrent(iter) == 0);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2603 CX_TEST_ASSERT(iter.elem_count == 8);
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2604 iter = cxListIteratorAt(list, cxListSize(list));
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2605 cxListInsertBefore(&iter, &newdata[3]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2606 CX_TEST_ASSERT(!cxIteratorValid(iter));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2607 CX_TEST_ASSERT(iter.index == 9);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2608 CX_TEST_ASSERT(iter.elem_count == 9);
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2609 iter = cxListIteratorAt(list, cxListSize(list));
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2610 cxListInsertAfter(&iter, &newdata[4]);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2611 CX_TEST_ASSERT(!cxIteratorValid(iter));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2612 CX_TEST_ASSERT(iter.index == 10);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2613 CX_TEST_ASSERT(iter.elem_count == 10);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2614
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2615 int expdata[] = array_init(30, 0, 1, 20, 2, 10, 3, 4, 40, 50);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2616 for (size_t j = 0; j < 10; j++) {
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2617 CX_TEST_ASSERT(*(int *) cxListAt(list, j) == expdata[j]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2618 }
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2619 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2620
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2621 static CX_TEST_SUBROUTINE(test_list_verify_compare, CxList *left, CxList *right) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2622 CX_TEST_ASSERTM(cxListCompare(left, right) == 0, "lists don't start identical");
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2623 int x = 42;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2624 cxListAdd(left, &x);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2625 CX_TEST_ASSERT(cxListSize(left) > cxListSize(right));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2626 CX_TEST_ASSERT(cxListCompare(left, right) > 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2627 CX_TEST_ASSERT(cxListCompare(right, left) < 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2628 cxListAdd(right, &x);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2629 CX_TEST_ASSERT(cxListSize(left) == cxListSize(right));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2630 CX_TEST_ASSERT(cxListCompare(left, right) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2631 int a = 5, b = 10;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2632 cxListInsert(left, 15, &a);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2633 cxListInsert(right, 15, &b);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2634 CX_TEST_ASSERT(cxListSize(left) == cxListSize(right));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2635 CX_TEST_ASSERT(cxListCompare(left, right) < 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2636 CX_TEST_ASSERT(cxListCompare(right, left) > 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2637 *(int *) cxListAt(left, 15) = 10;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2638 CX_TEST_ASSERT(cxListCompare(left, right) == 0);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2639 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2640
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2641 #define roll_out_compare_tests(suffix, otherctr) \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2642 roll_out_test_combos(compare_##suffix, { \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2643 const size_t len = 47; \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2644 int *testdata = int_test_data_added_to_list(list, isptrlist, len); \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2645 CxList *other = otherctr; \
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2646 for (size_t i = 0; i < len; i++) cxListAdd(other, &testdata[i]); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2647 CX_TEST_CALL_SUBROUTINE(test_list_verify_compare, list, other); \
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
2648 cxListFree(other); \
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2649 free(testdata); \
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2650 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2651
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2652 roll_out_compare_tests(
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2653 ll, cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int))
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2654 )
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2655
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2656 roll_out_compare_tests(
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2657 pll, cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS)
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2658 )
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2659
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2660 roll_out_compare_tests(
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2661 arl, cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 50)
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2662 )
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2663
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2664 roll_out_compare_tests(
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2665 parl, cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS, 50)
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2666 )
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2667
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2668 roll_out_test_combos_with_defaulted_funcs(compare_unoptimized, {
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2669 const size_t len = 33;
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2670 int *testdata = int_test_data_added_to_list(list, isptrlist, len);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2671 CxList *other = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 50);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2672 do_set_default_class_funcs(other);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2673 for (size_t i = 0; i < len; i++) cxListAdd(other, &testdata[i]);
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2674 CX_TEST_CALL_SUBROUTINE(test_list_verify_compare, list, other);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 986
diff changeset
2675 cxListFree(other);
962
cd418898af5c remove cx_for_n() macro - fixes #467
Mike Becker <universe@uap-core.de>
parents: 961
diff changeset
2676 free(testdata);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2677 })
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
2678
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2679 static unsigned destr_test_ctr;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2680 static int destr_last_value;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2681
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2682 static void simple_destr_test_fun(void *data) {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2683 int *ptr = data;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2684 destr_last_value = *ptr;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2685 *ptr = destr_last_value + 1;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2686 destr_test_ctr++;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2687 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2688
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 962
diff changeset
2689 static void advanced_destr_test_fun(cx_attr_unused void *u, void *data) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2690 simple_destr_test_fun(data);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2691 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2692
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2693 static CX_TEST_SUBROUTINE(test_list_verify_destructor, CxList *list,
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 886
diff changeset
2694 const int *testdata, size_t testdata_len) {
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2695 destr_test_ctr = 0;
1316
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
2696
1111
78eeeb950883 remove API for changing the store_pointer property after list creation
Mike Becker <universe@uap-core.de>
parents: 1024
diff changeset
2697 int off = list->collection.store_pointer ? 1 : 0;
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2698
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2699 cxListRemove(list, 15);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2700 CX_TEST_ASSERT(1 == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2701 CX_TEST_ASSERT(testdata[15] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2702 CX_TEST_ASSERT(testdata_len - destr_test_ctr == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2703 cxListRemove(list, 47);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2704 CX_TEST_ASSERT(2 == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2705 CX_TEST_ASSERT(testdata[48] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2706 CX_TEST_ASSERT(testdata_len - destr_test_ctr == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2707
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2708 CxIterator iter = cxListIteratorAt(list, 7);
1387
9bdd053820b7 the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents: 1350
diff changeset
2709 CX_TEST_ASSERT(iter.elem_count == testdata_len - 2);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2710 cxIteratorNext(iter);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2711 CX_TEST_ASSERT(2 == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2712 CX_TEST_ASSERT(testdata[48] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2713 CX_TEST_ASSERT(testdata_len - destr_test_ctr == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2714 cxIteratorFlagRemoval(iter);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2715 cxIteratorNext(iter);
1387
9bdd053820b7 the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents: 1350
diff changeset
2716 CX_TEST_ASSERT(iter.elem_count == testdata_len - 3);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2717 CX_TEST_ASSERT(3 == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2718 CX_TEST_ASSERT(testdata[8] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2719 CX_TEST_ASSERT(testdata_len - destr_test_ctr == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2720
1429
6e0c3a8a914a remove the concept of "mutating iterators" - resolves #579
Mike Becker <universe@uap-core.de>
parents: 1428
diff changeset
2721 iter = cxListBackwardsIteratorAt(list, 5);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2722 cxIteratorNext(iter);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2723 CX_TEST_ASSERT(3 == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2724 CX_TEST_ASSERT(testdata[8] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2725 CX_TEST_ASSERT(testdata_len - destr_test_ctr == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2726 cxIteratorFlagRemoval(iter);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2727 cxIteratorNext(iter);
1387
9bdd053820b7 the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() - fixes #728
Mike Becker <universe@uap-core.de>
parents: 1350
diff changeset
2728 CX_TEST_ASSERT(iter.elem_count == testdata_len - 4);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2729 CX_TEST_ASSERT(4 == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2730 CX_TEST_ASSERT(testdata[4] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2731 CX_TEST_ASSERT(testdata_len - destr_test_ctr == cxListSize(list));
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2732
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2733 cxListClear(list);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2734 CX_TEST_ASSERT(testdata_len == destr_test_ctr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2735 CX_TEST_ASSERT(testdata[testdata_len - 1] == destr_last_value + off);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2736 }
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2737
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2738 roll_out_test_combos(simple_destr, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2739 const size_t len = 60;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2740 int *testdata = int_test_data_added_to_list(list, isptrlist, len);
857
4d12e34bb130 add missing convenience functions
Mike Becker <universe@uap-core.de>
parents: 856
diff changeset
2741 cxDefineDestructor(list, simple_destr_test_fun);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2742 CX_TEST_CALL_SUBROUTINE(test_list_verify_destructor, list, testdata, len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2743 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2744 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2745
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2746 roll_out_test_combos(advanced_destr, {
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2747 const size_t len = 75;
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2748 int *testdata = int_test_data_added_to_list(list, isptrlist, len);
857
4d12e34bb130 add missing convenience functions
Mike Becker <universe@uap-core.de>
parents: 856
diff changeset
2749 cxDefineAdvancedDestructor(list, advanced_destr_test_fun, NULL);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2750 CX_TEST_CALL_SUBROUTINE(test_list_verify_destructor, list, testdata, len);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2751 free(testdata);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2752 })
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
2753
1485
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2754 roll_out_test_combos(reserve_and_shrink, {
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2755 // there is no actual observable behavior,
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2756 // so we just check that the functions return zero
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2757 int *td1 = int_test_data_added_to_list(list, isptrlist, 500);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2758 CX_TEST_ASSERT(0 == cxListReserve(list, 200));
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2759 CX_TEST_ASSERT(0 == cxListReserve(list, 1000));
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2760 int *td2 = int_test_data_added_to_list(list, isptrlist, 500);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2761 int *td3 = int_test_data_added_to_list(list, isptrlist, 500);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2762 CX_TEST_ASSERT(0 == cxListShrink(list));
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2763 size_t i = 0;
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2764 for (size_t j = 0 ; j < 500 ; j++, i++) {
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2765 CX_TEST_ASSERT(*(int*)cxListAt(list, i) == td1[j]);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2766 }
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2767 for (size_t j = 0 ; j < 500 ; j++, i++) {
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2768 CX_TEST_ASSERT(*(int*)cxListAt(list, i) == td2[j]);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2769 }
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2770 for (size_t j = 0 ; j < 500 ; j++, i++) {
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2771 CX_TEST_ASSERT(*(int*)cxListAt(list, i) == td3[j]);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2772 }
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2773 free(td1);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2774 free(td2);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2775 free(td3);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2776 })
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
2777
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2778 static bool test_clone_func_max_enabled = false;
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2779 static unsigned test_clone_func_max_clones;
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2780 static void *test_clone_func(void *dest, const void *src, const CxAllocator *al, void *data) {
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2781 if (test_clone_func_max_enabled) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2782 if (test_clone_func_max_clones == 0) return NULL;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2783 test_clone_func_max_clones--;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2784 }
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2785
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2786 if (dest == NULL) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2787 dest = cxMalloc(al, sizeof(int));
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2788 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2789
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2790 int z = 0;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2791 if (data == NULL) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2792 data = &z;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2793 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2794
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2795 *((int*) dest) = *(int*) src + *(int*) data;
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2796 (*(int*) data)++;
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2797
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2798 return dest;
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2799 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2800
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2801 static CX_TEST_SUBROUTINE(verify_clone, CxList *target, CxList *source, bool target_isptrlist) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2802 // testing allocator for the target elements if target_isptrlist is true
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2803 CxTestingAllocator talloc;
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2804 cx_testing_allocator_init(&talloc);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2805 CxAllocator *testing_alloc = &talloc.base;
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2806
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2807 // register a destructor for the target list if it is storing pointers
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2808 if (target_isptrlist) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2809 cxDefineAdvancedDestructor(target, cxFree, testing_alloc);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2810 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2811
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2812 // fill the source list
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2813 int source_data[8] = array_init(1, 2, 3, 4, 5, 6, 7, 8);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2814 for (unsigned i = 0 ; i < 8 ; i++) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2815 cxListAdd(source, &source_data[i]);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2816 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2817
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2818 // add some initial data to the target
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2819 int initial_data[4] = array_init(1, 2, 3, 4);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2820 for (unsigned i = 0; i < 4; i++) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2821 if (target_isptrlist) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2822 int *x = cxMalloc(testing_alloc, sizeof(int));
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2823 *x = initial_data[i];
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2824 cxListAdd(target, x);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2825 } else {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2826 cxListAdd(target, &initial_data[i]);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2827 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2828 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2829
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2830 // perform the test
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2831 int expected_data[12] = array_init(1, 2, 3, 4, 1, 3, 5, 7, 9, 11, 13, 15);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2832 int c = 0;
1444
dd9dcbb39c2f make clone functions return int instead of size_t
Mike Becker <universe@uap-core.de>
parents: 1443
diff changeset
2833 CX_TEST_ASSERT(0 == cxListClone(target, source, test_clone_func, testing_alloc, &c));
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2834 CX_TEST_ASSERT(c == 8);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2835 CX_TEST_ASSERT(cxListSize(target) == 12);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2836 CX_TEST_ASSERT(cxListSize(source) == 8);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2837 for (unsigned i = 0 ; i < 12 ; i++) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2838 CX_TEST_ASSERT(*(int*)cxListAt(target, i) == expected_data[i]);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2839 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2840 for (unsigned i = 0 ; i < 8 ; i++) {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2841 CX_TEST_ASSERT(*(int*)cxListAt(source, i) == source_data[i]);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2842 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2843 cxListFree(target);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2844 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2845 cx_testing_allocator_destroy(&talloc);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2846 }
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2847
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2848 static CX_TEST_SUBROUTINE(verify_clone_alloc_fail, CxList *target, CxList *source, bool target_isptrlist) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2849 // testing allocator for the target elements if target_isptrlist is true
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2850 CxTestingAllocator talloc;
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2851 cx_testing_allocator_init(&talloc);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2852 CxAllocator *testing_alloc = &talloc.base;
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2853
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2854 // register a destructor for the target list if it is storing pointers
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2855 if (target_isptrlist) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2856 cxDefineAdvancedDestructor(target, cxFree, testing_alloc);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2857 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2858
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2859 // fill the source list
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2860 int source_data[8] = array_init(1, 2, 3, 4, 5, 6, 7, 8);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2861 for (unsigned i = 0 ; i < 8 ; i++) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2862 cxListAdd(source, &source_data[i]);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2863 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2864
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2865 // add some initial data to the target
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2866 int initial_data[4] = array_init(1, 2, 3, 4);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2867 for (unsigned i = 0; i < 4; i++) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2868 if (target_isptrlist) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2869 int *x = cxMalloc(testing_alloc, sizeof(int));
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2870 *x = initial_data[i];
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2871 cxListAdd(target, x);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2872 } else {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2873 cxListAdd(target, &initial_data[i]);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2874 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2875 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2876
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2877 // perform the test
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2878 int expected_data[9] = array_init(1, 2, 3, 4, 1, 3, 5, 7, 9);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2879 int c = 0;
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2880 test_clone_func_max_enabled = true;
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2881 test_clone_func_max_clones = 5;
1444
dd9dcbb39c2f make clone functions return int instead of size_t
Mike Becker <universe@uap-core.de>
parents: 1443
diff changeset
2882 CX_TEST_ASSERT(0 != cxListClone(target, source, test_clone_func, testing_alloc, &c));
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2883 test_clone_func_max_enabled = false;
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2884 CX_TEST_ASSERT(c == 5);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2885 CX_TEST_ASSERT(cxListSize(target) == 9);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2886 CX_TEST_ASSERT(cxListSize(source) == 8);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2887 for (unsigned i = 0 ; i < 9 ; i++) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2888 CX_TEST_ASSERT(*(int*)cxListAt(target, i) == expected_data[i]);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2889 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2890 for (unsigned i = 0 ; i < 8 ; i++) {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2891 CX_TEST_ASSERT(*(int*)cxListAt(source, i) == source_data[i]);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2892 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2893 cxListFree(target);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2894 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2895 cx_testing_allocator_destroy(&talloc);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2896 }
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2897
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2898 roll_out_test_combos(clone_into_arl, {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2899 CxList *target = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 8);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2900 CX_TEST_CALL_SUBROUTINE(verify_clone, target, list, false);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2901 })
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2902
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2903 roll_out_test_combos(clone_into_ll, {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2904 CxList *target = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2905 CX_TEST_CALL_SUBROUTINE(verify_clone, target, list, false);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2906 })
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2907
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2908 roll_out_test_combos(clone_into_parl, {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2909 CxList *target = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS, 8);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2910 CX_TEST_CALL_SUBROUTINE(verify_clone, target, list, true);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2911 })
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2912
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2913 roll_out_test_combos(clone_into_pll, {
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2914 CxList *target = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2915 CX_TEST_CALL_SUBROUTINE(verify_clone, target, list, true);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2916 })
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
2917
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2918 roll_out_test_combos(clone_alloc_fail_into_arl, {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2919 CxList *target = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 8);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2920 CX_TEST_CALL_SUBROUTINE(verify_clone_alloc_fail, target, list, false);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2921 })
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2922
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2923 roll_out_test_combos(clone_alloc_fail_into_ll, {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2924 CxList *target = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2925 CX_TEST_CALL_SUBROUTINE(verify_clone_alloc_fail, target, list, false);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2926 })
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2927
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2928 roll_out_test_combos(clone_alloc_fail_into_parl, {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2929 CxList *target = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS, 8);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2930 CX_TEST_CALL_SUBROUTINE(verify_clone_alloc_fail, target, list, true);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2931 })
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2932
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2933 roll_out_test_combos(clone_alloc_fail_into_pll, {
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2934 CxList *target = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2935 CX_TEST_CALL_SUBROUTINE(verify_clone_alloc_fail, target, list, true);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2936 })
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
2937
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2938 static CX_TEST_SUBROUTINE(verify_difference, bool sorted, bool alloc_fail) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2939 CxTestingAllocator talloc;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2940 cx_testing_allocator_init(&talloc);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2941
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2942 CxList *dst = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2943 cxDefineAdvancedDestructor(dst, cxFree, &talloc);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2944 CxList *minuend = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2945 CxList *subtrahend = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2946
1466
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2947 int dst_data[] = {47, 178, 176, 83};
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2948 int minuend_data[] = {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2949 153, 106, 171, 130, 74, 173, 150, 94, 27, 92, 70, 175, 200, 20, 29, 161, 88, 116, 71, 53, 199, 124, 32, 9, 76,
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2950 151, 33, 51, 37, 65, 176, 49, 12, 162, 28, 85, 4, 177, 198, 54, 109, 188, 44, 77, 194, 63, 41, 129, 97, 83
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2951 };
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2952 int subtrahend_data[] = {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2953 75, 137, 176, 111, 85, 27, 197, 141, 46, 103, 69, 146, 49, 79, 63, 130, 154, 45, 38, 139, 193, 90, 64, 142, 115,
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2954 120, 78, 100, 101, 42, 21, 1, 161, 10, 114, 198, 181, 178, 136, 188, 59, 41, 73, 99, 151, 144, 118, 53, 199, 71
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2955 };
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2956
1466
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2957 for (unsigned i = 0 ; i < cx_nmemb(dst_data) ; i++) {
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2958 int *x = cxMalloc(&talloc.base, sizeof(int));
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2959 *x = dst_data[i];
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2960 cxListAdd(dst, x);
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2961 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2962 cxListAddArray(minuend, minuend_data, 50);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2963 cxListAddArray(subtrahend, subtrahend_data, 50);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2964 if (sorted) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2965 cxListSort(dst);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2966 cxListSort(minuend);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2967 cxListSort(subtrahend);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2968 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2969
1466
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2970 // expected 36 elements in the difference
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2971 size_t expected_len = 40;
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2972 int expected_unsorted[] = {
1466
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2973 47, 178, 176, 83,
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2974 153, 106, 171, 74, 173, 150, 94, 92, 70, 175, 200, 20, 29, 88, 116, 124, 32, 9, 76, 33, 51, 37, 65, 12, 162,
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2975 28, 4, 177, 54, 109, 44, 77, 194, 129, 97, 83
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2976 };
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2977 int expected_sorted[] = {
1466
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2978 47, 83, 176, 178,
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2979 4, 9, 12, 20, 28, 29, 32, 33, 37, 44, 51, 54, 65, 70, 74, 76, 77, 83, 88, 92, 94, 97, 106, 109, 116, 124, 129,
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2980 150, 153, 162, 171, 173, 175, 177, 194, 200
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2981 };
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2982
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2983 if (alloc_fail) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2984 test_clone_func_max_enabled = true;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2985 test_clone_func_max_clones = 30;
1466
a58c65d31342 difference shall not check already present items in the destination - fixes #753
Mike Becker <universe@uap-core.de>
parents: 1462
diff changeset
2986 expected_len = 34;
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2987 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2988 CxList *expected = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), expected_len);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2989 cxListAddArray(expected, sorted ? expected_sorted : expected_unsorted, expected_len);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2990
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2991 int result = cxListDifference(dst, minuend, subtrahend, test_clone_func, &talloc.base, NULL);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2992 if (alloc_fail) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2993 CX_TEST_ASSERT(result != 0);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2994 } else {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2995 CX_TEST_ASSERT(result == 0);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2996 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2997 test_clone_func_max_enabled = false;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2998 CX_TEST_ASSERT(expected_len == cxListSize(dst));
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
2999 CX_TEST_ASSERT(0 == cxListCompare(dst, expected));
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3000
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3001 cxListFree(dst);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3002 cxListFree(minuend);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3003 cxListFree(subtrahend);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3004 cxListFree(expected);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3005 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3006 cx_testing_allocator_destroy(&talloc);
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3007 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3008
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3009 CX_TEST(test_list_difference_unsorted) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3010 CX_TEST_DO {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3011 CX_TEST_CALL_SUBROUTINE(verify_difference, false, false);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3012 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3013 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3014
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3015 CX_TEST(test_list_difference_sorted) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3016 CX_TEST_DO {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3017 CX_TEST_CALL_SUBROUTINE(verify_difference, true, false);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3018 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3019 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3020
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3021 CX_TEST(test_list_difference_unsorted_alloc_fail) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3022 CX_TEST_DO {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3023 CX_TEST_CALL_SUBROUTINE(verify_difference, false, true);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3024 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3025 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3026
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3027 CX_TEST(test_list_difference_sorted_alloc_fail) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3028 CX_TEST_DO {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3029 CX_TEST_CALL_SUBROUTINE(verify_difference, true, true);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3030 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3031 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3032
1469
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3033 static CX_TEST_SUBROUTINE(verify_intersection, bool sorted, bool alloc_fail) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3034 CxTestingAllocator talloc;
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3035 cx_testing_allocator_init(&talloc);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3036
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3037 CxList *dst = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3038 cxDefineAdvancedDestructor(dst, cxFree, &talloc);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3039 CxList *src = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3040 CxList *other = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3041
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3042 int dst_data[] = {47, 178, 176, 83};
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3043 int src_data[] = {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3044 153, 106, 171, 130, 74, 173, 150, 94, 27, 92, 70, 175, 200, 20, 29, 161, 88, 116, 71, 53, 199, 124, 32, 9, 76,
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3045 151, 33, 51, 37, 65, 176, 49, 12, 162, 28, 85, 4, 177, 198, 54, 109, 188, 44, 77, 194, 63, 41, 129, 97, 83
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3046 };
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3047 int other_data[] = {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3048 75, 137, 176, 111, 85, 27, 197, 141, 46, 103, 69, 146, 49, 79, 63, 130, 154, 45, 38, 139, 193, 90, 64, 142, 115,
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3049 120, 78, 100, 101, 42, 21, 1, 161, 10, 114, 198, 181, 178, 136, 188, 59, 41, 73, 99, 151, 144, 118, 53, 199, 71
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3050 };
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3051
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3052 for (unsigned i = 0 ; i < cx_nmemb(dst_data) ; i++) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3053 int *x = cxMalloc(&talloc.base, sizeof(int));
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3054 *x = dst_data[i];
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3055 cxListAdd(dst, x);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3056 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3057 cxListAddArray(src, src_data, 50);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3058 cxListAddArray(other, other_data, 50);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3059 if (sorted) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3060 cxListSort(dst);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3061 cxListSort(src);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3062 cxListSort(other);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3063 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3064
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3065 // expected 14 elements in the intersection
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3066 size_t expected_len = 18;
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3067 int expected_unsorted[] = {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3068 47, 178, 176, 83,
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3069 130, 27, 161, 71, 53, 199, 151, 176, 49, 85, 198, 188, 63, 41
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3070 };
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3071 int expected_sorted[] = {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3072 47, 83, 176, 178,
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3073 27, 41, 49, 53, 63, 71, 85, 130, 151, 161, 176, 188, 198, 199
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3074 };
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3075
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3076 if (alloc_fail) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3077 test_clone_func_max_enabled = true;
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3078 test_clone_func_max_clones = 10;
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3079 expected_len = 14;
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3080 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3081 CxList *expected = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), expected_len);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3082 cxListAddArray(expected, sorted ? expected_sorted : expected_unsorted, expected_len);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3083
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3084 int result = cxListIntersection(dst, src, other, test_clone_func, &talloc.base, NULL);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3085 if (alloc_fail) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3086 CX_TEST_ASSERT(result != 0);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3087 } else {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3088 CX_TEST_ASSERT(result == 0);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3089 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3090 test_clone_func_max_enabled = false;
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3091 CX_TEST_ASSERT(expected_len == cxListSize(dst));
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3092 CX_TEST_ASSERT(0 == cxListCompare(dst, expected));
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3093
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3094 cxListFree(dst);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3095 cxListFree(src);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3096 cxListFree(other);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3097 cxListFree(expected);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3098 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3099 cx_testing_allocator_destroy(&talloc);
1469
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3100 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3101
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3102 CX_TEST(test_list_intersection_unsorted) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3103 CX_TEST_DO {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3104 CX_TEST_CALL_SUBROUTINE(verify_intersection, false, false);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3105 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3106 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3107
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3108 CX_TEST(test_list_intersection_sorted) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3109 CX_TEST_DO {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3110 CX_TEST_CALL_SUBROUTINE(verify_intersection, true, false);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3111 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3112 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3113
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3114 CX_TEST(test_list_intersection_unsorted_alloc_fail) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3115 CX_TEST_DO {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3116 CX_TEST_CALL_SUBROUTINE(verify_intersection, false, true);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3117 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3118 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3119
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3120 CX_TEST(test_list_intersection_sorted_alloc_fail) {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3121 CX_TEST_DO {
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3122 CX_TEST_CALL_SUBROUTINE(verify_intersection, true, true);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3123 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3124 }
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3125
1477
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3126 static CX_TEST_SUBROUTINE(verify_union, bool sorted, bool alloc_fail) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3127 CxTestingAllocator talloc;
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3128 cx_testing_allocator_init(&talloc);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3129
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3130 CxList *dst = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3131 cxDefineAdvancedDestructor(dst, cxFree, &talloc);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3132 CxList *src = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3133 CxList *other = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3134
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3135 int dst_data[] = {47, 178, 176, 83};
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3136 int src_data[] = {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3137 153, 106, 171, 130, 74, 173, 150, 94, 27, 92, 70, 175, 200, 20, 29, 161, 88, 116, 71, 53, 199, 124, 32, 9, 76,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3138 151, 33, 51, 37, 65, 176, 49, 12, 162, 28, 85, 4, 177, 198, 54, 109, 188, 44, 77, 194, 63, 41, 129, 97, 83
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3139 };
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3140 int other_data[] = {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3141 75, 137, 176, 111, 85, 27, 197, 141, 46, 103, 69, 146, 49, 79, 63, 130, 154, 45, 38, 139, 193, 90, 64, 142, 115,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3142 120, 78, 100, 101, 42, 21, 1, 161, 10, 114, 198, 181, 178, 136, 188, 59, 41, 73, 99, 151, 144, 118, 53, 199, 71
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3143 };
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3144
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3145 for (unsigned i = 0 ; i < cx_nmemb(dst_data) ; i++) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3146 int *x = cxMalloc(&talloc.base, sizeof(int));
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3147 *x = dst_data[i];
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3148 cxListAdd(dst, x);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3149 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3150 cxListAddArray(src, src_data, 50);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3151 cxListAddArray(other, other_data, 50);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3152 if (sorted) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3153 cxListSort(dst);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3154 cxListSort(src);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3155 cxListSort(other);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3156 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3157
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3158 // the 14 elements from the intersection should not appear twice in the destination:
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3159 // 27, 41, 49, 53, 63, 71, 85, 130, 151, 161, 176, 188, 198, 199
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3160 // however, the elements that are already in dst may appear twice
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3161 size_t expected_len = 90;
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3162 int expected_unsorted[] = {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3163 47, 178, 176, 83,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3164 153, 106, 171, 130, 74, 173, 150, 94, 27, 92, 70, 175, 200, 20, 29, 161,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3165 88, 116, 71, 53, 199, 124, 32, 9, 76, 151, 33, 51, 37, 65, 176, 49, 12,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3166 162, 28, 85, 4, 177, 198, 54, 109, 188, 44, 77, 194, 63, 41, 129, 97,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3167 83, 75, 137, 111, 197, 141, 46, 103, 69, 146, 79, 154, 45, 38, 139, 193,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3168 90, 64, 142, 115, 120, 78, 100, 101, 42, 21, 1, 10, 114, 181, 178, 136,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3169 59, 73, 99, 144, 118
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3170 };
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3171 int expected_sorted[] = {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3172 47, 83, 176, 178,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3173 1, 4, 9, 10, 12, 20, 21, 27, 28, 29, 32, 33, 37, 38, 41, 42, 44, 45,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3174 46, 49, 51, 53, 54, 59, 63, 64, 65, 69, 70, 71, 73, 74, 75, 76, 77, 78,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3175 79, 83, 85, 88, 90, 92, 94, 97, 99, 100, 101, 103, 106, 109, 111, 114,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3176 115, 116, 118, 120, 124, 129, 130, 136, 137, 139, 141, 142, 144, 146,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3177 150, 151, 153, 154, 161, 162, 171, 173, 175, 176, 177, 178, 181, 188,
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3178 193, 194, 197, 198, 199, 200
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3179 };
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3180
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3181 if (alloc_fail) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3182 test_clone_func_max_enabled = true;
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3183 test_clone_func_max_clones = 66;
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3184 expected_len = 70;
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3185 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3186 CxList *expected = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), expected_len);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3187 cxListAddArray(expected, sorted ? expected_sorted : expected_unsorted, expected_len);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3188
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3189 int result = cxListUnion(dst, src, other, test_clone_func, &talloc.base, NULL);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3190 if (alloc_fail) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3191 CX_TEST_ASSERT(result != 0);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3192 } else {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3193 CX_TEST_ASSERT(result == 0);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3194 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3195 test_clone_func_max_enabled = false;
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3196 CX_TEST_ASSERT(expected_len == cxListSize(dst));
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3197 CX_TEST_ASSERT(0 == cxListCompare(dst, expected));
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3198
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3199 cxListFree(dst);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3200 cxListFree(src);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3201 cxListFree(other);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3202 cxListFree(expected);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3203 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3204 cx_testing_allocator_destroy(&talloc);
1477
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3205 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3206
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3207 CX_TEST(test_list_union_unsorted) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3208 CX_TEST_DO {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3209 CX_TEST_CALL_SUBROUTINE(verify_union, false, false);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3210 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3211 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3212
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3213 CX_TEST(test_list_union_sorted) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3214 CX_TEST_DO {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3215 CX_TEST_CALL_SUBROUTINE(verify_union, true, false);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3216 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3217 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3218
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3219 CX_TEST(test_list_union_unsorted_alloc_fail) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3220 CX_TEST_DO {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3221 CX_TEST_CALL_SUBROUTINE(verify_union, false, true);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3222 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3223 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3224
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3225 CX_TEST(test_list_union_sorted_alloc_fail) {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3226 CX_TEST_DO {
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3227 CX_TEST_CALL_SUBROUTINE(verify_union, true, true);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3228 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3229 }
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3230
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3231 CX_TEST(test_list_simple_clones) {
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3232
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3233 int a[] = {1, 2, 5, 8, 10};
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3234 int b[] = {1, 3, 5, 7, 9, 11};
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3235 int c[] = {2, 4, 6, 8, 10, 12};
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3236 int d[] = {4, 8, 12};
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3237
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3238 CxList *la = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3239 cxCollectionCompareFunc(la, cx_cmp_int);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3240 cxListInsertSortedArray(la, a, cx_nmemb(a));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3241 CxList *lb = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3242 cxCollectionCompareFunc(lb, cx_cmp_int);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3243 cxListInsertSortedArray(lb, b, cx_nmemb(b));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3244 CxList *lc = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3245 cxCollectionCompareFunc(lc, cx_cmp_int);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3246 cxListInsertSortedArray(lc, c, cx_nmemb(c));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3247 CxList *ld = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3248 cxCollectionCompareFunc(ld, cx_cmp_int);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3249 cxListInsertSortedArray(ld, d, cx_nmemb(d));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3250
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3251 CxList *d1 = cxArrayListCreateSimple(sizeof(int), 8);
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3252 cxCollectionCompareFunc(d1, cx_cmp_int);
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3253 CxList *d2 = cxArrayListCreateSimple(sizeof(int), 8);
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3254 cxCollectionCompareFunc(d2, cx_cmp_int);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3255
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3256 CX_TEST_DO {
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3257 // clone a into d1
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3258 CX_TEST_ASSERT(0 == cxListCloneSimple(d1, la));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3259 CX_TEST_ASSERT(0 == cxListCompare(d1, la));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3260 CX_TEST_ASSERT(cxCollectionSorted(d1));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3261
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3262 // union of a (in d1) and b
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3263 CX_TEST_ASSERT(0 == cxListUnionSimple(d2, d1, lb));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3264 CX_TEST_ASSERT(cxCollectionSorted(d2));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3265 CxList *expected_union = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3266 {
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3267 int expected[] = {1, 2, 3, 5, 7, 8, 9, 10, 11};
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3268 cxListAddArray(expected_union, expected, cx_nmemb(expected));
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3269 }
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3270 CX_TEST_ASSERT(0 == cxListCompare(d2, expected_union));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3271 cxListFree(expected_union);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3272
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3273 // intersection of (a union b) and c
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3274 cxListClear(d1);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3275 CX_TEST_ASSERT(0 == cxListIntersectionSimple(d1, d2, lc));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3276 CX_TEST_ASSERT(cxCollectionSorted(d1));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3277 CxList *expected_intersection = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3278 {
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3279 int expected[] = {2, 8, 10};
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3280 cxListAddArray(expected_intersection, expected, cx_nmemb(expected));
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3281 }
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3282 CX_TEST_ASSERT(0 == cxListCompare(d1, expected_intersection));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3283 cxListFree(expected_intersection);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3284
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3285 // difference of ((a union b) intersect c) minus d
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3286 cxListClear(d2);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3287 CX_TEST_ASSERT(0 == cxListDifferenceSimple(d2, d1, ld));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3288 CX_TEST_ASSERT(cxCollectionSorted(d2));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3289 CxList *expected_difference = cxArrayListCreateSimple(sizeof(int), 8);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3290 {
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3291 int expected[] = {2, 10};
1483
97a6cf1520ba fix some memory management bugs in the map and list tests
Mike Becker <universe@uap-core.de>
parents: 1481
diff changeset
3292 cxListAddArray(expected_difference, expected, cx_nmemb(expected));
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3293 }
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3294 CX_TEST_ASSERT(0 == cxListCompare(d2, expected_difference));
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3295 cxListFree(expected_difference);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3296 }
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3297
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3298 cxListFree(d1);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3299 cxListFree(d2);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3300 cxListFree(la);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3301 cxListFree(lb);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3302 cxListFree(lc);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3303 cxListFree(ld);
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3304 }
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3305
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3306 CX_TEST(test_list_pointer_list_supports_null) {
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3307 CxList *list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, CX_STORE_POINTERS);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3308 int x = 47;
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3309 int y = 11;
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3310 int z = 1337;
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3311 int *nptr = NULL;
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3312 cxListAdd(list, &x);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3313 cxListAdd(list, &y);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3314 cxListAdd(list, nptr);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3315 cxListAdd(list, &z);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3316 CX_TEST_DO {
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3317 CX_TEST_ASSERT(cxListSize(list) == 4);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3318 CX_TEST_ASSERT(*(int *) cxListAt(list, 0) == 47);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3319 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 11);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3320 CX_TEST_ASSERT((int *) cxListAt(list, 2) == NULL);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3321 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 1337);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3322 CX_TEST_ASSERT(cxListFind(list, nptr) == 2);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3323
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3324 // when we sort the list, NULL is supposed to be smaller than any value
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3325 cxListSort(list);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3326 CX_TEST_ASSERT((int *) cxListAt(list, 0) == NULL);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3327 CX_TEST_ASSERT(*(int *) cxListAt(list, 1) == 11);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3328 CX_TEST_ASSERT(*(int *) cxListAt(list, 2) == 47);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3329 CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 1337);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3330 }
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3331 cxListFree(list);
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3332 }
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3333
1423
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3334 CX_TEST(test_list_use_insert_unique_to_remove_duplicates) {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3335 CxList *linked_list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3336 CxList *array_list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 8);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3337 CxList *defaulted_list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 8);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3338 do_set_default_class_funcs(defaulted_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3339 int test_array[23] = {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3340 120, -13, 100, -90, 13, -56, 74, 20, 28, 80, 18, -56, 130, 12, 15, 0, 39, 100, 0, 29, 28, 85, 20
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3341 };
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3342 int test_array_unique[18] = {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3343 -90, -56, -13, 0, 12, 13, 15, 18, 20, 28, 29, 39, 74, 80, 85, 100, 120, 130
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3344 };
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3345 CX_TEST_DO {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3346 qsort(test_array, 23, sizeof(int), cx_cmp_int);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3347 cxListInsertUniqueArray(linked_list, test_array, 23);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3348 cxListInsertUniqueArray(array_list, test_array, 23);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3349 cxListInsertUniqueArray(defaulted_list, test_array, 23);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3350 CX_TEST_ASSERT(cxListSize(linked_list) == 18);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3351 CX_TEST_ASSERT(cxListSize(array_list) == 18);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3352 CX_TEST_ASSERT(cxListSize(defaulted_list) == 18);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3353 for (unsigned i = 0; i < 18; i++) {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3354 CX_TEST_ASSERT(*(int *) cxListAt(linked_list, i) == test_array_unique[i]);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3355 CX_TEST_ASSERT(*(int *) cxListAt(array_list, i) == test_array_unique[i]);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3356 CX_TEST_ASSERT(*(int *) cxListAt(defaulted_list, i) == test_array_unique[i]);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3357 }
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3358 }
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3359 cxListFree(defaulted_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3360 cxListFree(linked_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3361 cxListFree(array_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3362 }
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3363
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3364 CX_TEST(test_list_use_insert_unique_with_duplicates_in_source) {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3365 CxList *linked_list = cxLinkedListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int));
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3366 CxList *array_list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 8);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3367 CxList *defaulted_list = cxArrayListCreate(cxDefaultAllocator, cx_cmp_int, sizeof(int), 8);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3368 do_set_default_class_funcs(defaulted_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3369 int pre_filled[10] = {-13, 5, 18, 30, 40, 45, 50, 80, 85, 110};
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3370 cxListInsertSortedArray(linked_list, pre_filled, 10);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3371 cxListInsertSortedArray(array_list, pre_filled, 10);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3372 cxListInsertSortedArray(defaulted_list, pre_filled, 10);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3373 int test_array[23] = {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3374 120, -13, 100, -90, 13, -56, 74, 20, 28, 80, 18, -56, 130, 12, 15, 0, 39, 100, 0, 29, 28, 85, 20
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3375 };
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3376 int test_array_unique[24] = {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3377 -90, -56, -13, 0, 5, 12, 13, 15, 18, 20, 28, 29, 30, 39, 40, 45, 50, 74, 80, 85, 100, 110, 120, 130
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3378 };
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3379 CX_TEST_DO {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3380 qsort(test_array, 23, sizeof(int), cx_cmp_int);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3381 cxListInsertUniqueArray(linked_list, test_array, 23);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3382 cxListInsertUniqueArray(array_list, test_array, 23);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3383 cxListInsertUniqueArray(defaulted_list, test_array, 23);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3384 CX_TEST_ASSERT(cxListSize(linked_list) == 24);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3385 CX_TEST_ASSERT(cxListSize(array_list) == 24);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3386 CX_TEST_ASSERT(cxListSize(defaulted_list) == 24);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3387 for (unsigned i = 0; i < 24; i++) {
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3388 CX_TEST_ASSERT(*(int *) cxListAt(linked_list, i) == test_array_unique[i]);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3389 CX_TEST_ASSERT(*(int *) cxListAt(array_list, i) == test_array_unique[i]);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3390 CX_TEST_ASSERT(*(int *) cxListAt(defaulted_list, i) == test_array_unique[i]);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3391 }
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3392 CX_TEST_ASSERT(*(int*)cxListLast(linked_list) == 130);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3393 CX_TEST_ASSERT(*(int*)cxListLast(array_list) == 130);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3394 CX_TEST_ASSERT(*(int*)cxListLast(defaulted_list) == 130);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3395 }
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3396 cxListFree(defaulted_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3397 cxListFree(linked_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3398 cxListFree(array_list);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3399 }
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3400
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3401 CxTestSuite *cx_test_suite_array_list(void) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3402 CxTestSuite *suite = cx_test_suite_new("array_list");
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3403
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
3404 cx_test_register(suite, test_array_add);
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
3405 cx_test_register(suite, test_array_add8);
1495
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
3406 cx_test_register(suite, test_array_add16);
998
bb196054f3fd make cx_array_copy() support different types for size/capacity - fixes #492
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
3407 cx_test_register(suite, test_array_copy_unsupported_width);
1495
beee442be85a add missing test coverage for cx_array_copy()
Mike Becker <universe@uap-core.de>
parents: 1494
diff changeset
3408 cx_test_register(suite, test_array_copy_overlap);
999
84fc42b04d3b add cx_array_reserve() and several more array convenience functions
Mike Becker <universe@uap-core.de>
parents: 998
diff changeset
3409 cx_test_register(suite, test_array_reserve);
1494
f027a95d93f2 add missing test coverage for cx_array_reserve()
Mike Becker <universe@uap-core.de>
parents: 1493
diff changeset
3410 cx_test_register(suite, test_array_reserve_unsupported_width);
883
3012e9b4214e add low level cx_array_insert_sorted() and convenience macros
Mike Becker <universe@uap-core.de>
parents: 876
diff changeset
3411 cx_test_register(suite, test_array_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3412 cx_test_register(suite, test_array_insert_unique);
884
d375d8056262 add cx_array_binary_search() - fixes #424
Mike Becker <universe@uap-core.de>
parents: 883
diff changeset
3413 cx_test_register(suite, test_array_binary_search);
1507
f4010cda9a2a stable return value for binary search when there are duplicates in the array
Mike Becker <universe@uap-core.de>
parents: 1495
diff changeset
3414 cx_test_register(suite, test_array_binary_search_with_duplicates);
818
2be8fe3d5a2d add cx_array_add() + fix type of cx_array_default_reallocator
Mike Becker <universe@uap-core.de>
parents: 807
diff changeset
3415
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3416 cx_test_register(suite, test_list_arl_create);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3417 cx_test_register(suite, test_list_arl_create_simple);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3418 cx_test_register(suite, test_list_arl_create_simple_for_pointers);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3419 cx_test_register(suite, test_list_parl_destroy_no_destr);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3420 cx_test_register(suite, test_list_parl_destroy_simple_destr);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3421 cx_test_register(suite, test_list_parl_destroy_adv_destr);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3422
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3423 cx_test_register(suite, test_list_arl_add);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3424 cx_test_register(suite, test_list_parl_add);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3425 cx_test_register(suite, test_list_arl_insert);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3426 cx_test_register(suite, test_list_parl_insert);
1316
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
3427 cx_test_register(suite, test_list_arl_emplace);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
3428 cx_test_register(suite, test_list_parl_emplace);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3429 cx_test_register(suite, test_list_arl_insert_array);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3430 cx_test_register(suite, test_list_parl_insert_array);
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3431 cx_test_register(suite, test_list_arl_emplace_array);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3432 cx_test_register(suite, test_list_parl_emplace_array);
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3433 cx_test_register(suite, test_list_arl_insert_sorted);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3434 cx_test_register(suite, test_list_parl_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3435 cx_test_register(suite, test_list_arl_insert_unique);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3436 cx_test_register(suite, test_list_parl_insert_unique);
1428
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3437 cx_test_register(suite, test_list_arl_insert_unique_not_sorted);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3438 cx_test_register(suite, test_list_parl_insert_unique_not_sorted);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3439 cx_test_register(suite, test_list_arl_remove);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3440 cx_test_register(suite, test_list_parl_remove);
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
3441 cx_test_register(suite, test_list_arl_remove_and_get);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
3442 cx_test_register(suite, test_list_parl_remove_and_get);
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
3443 cx_test_register(suite, test_list_arl_remove_array);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
3444 cx_test_register(suite, test_list_parl_remove_array);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3445 cx_test_register(suite, test_list_arl_find_remove);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3446 cx_test_register(suite, test_list_parl_find_remove);
1163
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
3447 cx_test_register(suite, test_list_arl_find_remove_sorted);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
3448 cx_test_register(suite, test_list_parl_find_remove_sorted);
1294
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
3449 cx_test_register(suite, test_list_arl_contains);
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
3450 cx_test_register(suite, test_list_parl_contains);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3451 cx_test_register(suite, test_list_arl_clear);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3452 cx_test_register(suite, test_list_parl_clear);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3453 cx_test_register(suite, test_list_arl_at);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3454 cx_test_register(suite, test_list_parl_at);
1287
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
3455 cx_test_register(suite, test_list_arl_set);
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
3456 cx_test_register(suite, test_list_parl_set);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3457 cx_test_register(suite, test_list_arl_swap);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3458 cx_test_register(suite, test_list_parl_swap);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3459 cx_test_register(suite, test_list_arl_swap_no_sbo);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3460 cx_test_register(suite, test_list_arl_find);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3461 cx_test_register(suite, test_list_parl_find);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3462 cx_test_register(suite, test_list_arl_sort);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3463 cx_test_register(suite, test_list_parl_sort);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3464 cx_test_register(suite, test_list_arl_reverse);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3465 cx_test_register(suite, test_list_parl_reverse);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3466 cx_test_register(suite, test_list_arl_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3467 cx_test_register(suite, test_list_parl_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3468 cx_test_register(suite, test_list_arl_insert_with_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3469 cx_test_register(suite, test_list_parl_insert_with_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3470 cx_test_register(suite, test_list_arl_compare_ll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3471 cx_test_register(suite, test_list_arl_compare_arl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3472 cx_test_register(suite, test_list_arl_compare_pll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3473 cx_test_register(suite, test_list_arl_compare_parl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3474 cx_test_register(suite, test_list_parl_compare_ll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3475 cx_test_register(suite, test_list_parl_compare_arl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3476 cx_test_register(suite, test_list_parl_compare_pll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3477 cx_test_register(suite, test_list_parl_compare_parl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3478 cx_test_register(suite, test_list_arl_simple_destr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3479 cx_test_register(suite, test_list_parl_simple_destr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3480 cx_test_register(suite, test_list_arl_advanced_destr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3481 cx_test_register(suite, test_list_parl_advanced_destr);
1485
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
3482 cx_test_register(suite, test_list_arl_reserve_and_shrink);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
3483 cx_test_register(suite, test_list_parl_reserve_and_shrink);
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3484 cx_test_register(suite, test_list_arl_clone_into_arl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3485 cx_test_register(suite, test_list_parl_clone_into_arl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3486 cx_test_register(suite, test_list_arl_clone_into_ll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3487 cx_test_register(suite, test_list_parl_clone_into_ll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3488 cx_test_register(suite, test_list_arl_clone_into_parl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3489 cx_test_register(suite, test_list_parl_clone_into_parl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3490 cx_test_register(suite, test_list_arl_clone_into_pll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3491 cx_test_register(suite, test_list_parl_clone_into_pll);
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3492 cx_test_register(suite, test_list_arl_clone_alloc_fail_into_arl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3493 cx_test_register(suite, test_list_parl_clone_alloc_fail_into_arl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3494 cx_test_register(suite, test_list_arl_clone_alloc_fail_into_ll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3495 cx_test_register(suite, test_list_parl_clone_alloc_fail_into_ll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3496 cx_test_register(suite, test_list_arl_clone_alloc_fail_into_parl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3497 cx_test_register(suite, test_list_parl_clone_alloc_fail_into_parl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3498 cx_test_register(suite, test_list_arl_clone_alloc_fail_into_pll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3499 cx_test_register(suite, test_list_parl_clone_alloc_fail_into_pll);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3500
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3501 return suite;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3502 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3503
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3504 CxTestSuite *cx_test_suite_array_list_defaulted_funcs(void) {
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3505 CxTestSuite *suite = cx_test_suite_new(
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3506 "array_list with defaulted functions");
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3507
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3508 cx_test_register(suite, test_list_arlm_insert_array);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3509 cx_test_register(suite, test_list_parlm_insert_array);
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3510 cx_test_register(suite, test_list_arlm_emplace_array);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3511 cx_test_register(suite, test_list_parlm_emplace_array);
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3512 cx_test_register(suite, test_list_arlm_insert_sorted);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3513 cx_test_register(suite, test_list_parlm_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3514 cx_test_register(suite, test_list_arlm_insert_unique);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3515 cx_test_register(suite, test_list_parlm_insert_unique);
1428
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3516 cx_test_register(suite, test_list_arlm_insert_unique_not_sorted);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3517 cx_test_register(suite, test_list_parlm_insert_unique_not_sorted);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3518 cx_test_register(suite, test_list_arlm_swap);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3519 cx_test_register(suite, test_list_parlm_swap);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3520 cx_test_register(suite, test_list_arlm_sort);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3521 cx_test_register(suite, test_list_parlm_sort);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3522
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3523 cx_test_register(suite, test_list_arl_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3524 cx_test_register(suite, test_list_parl_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3525 cx_test_register(suite, test_list_arlm_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3526 cx_test_register(suite, test_list_parlm_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3527
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3528 return suite;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3529 }
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3530
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3531 CxTestSuite *cx_test_suite_linked_list(void) {
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3532 CxTestSuite *suite = cx_test_suite_new("linked_list");
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3533
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3534 cx_test_register(suite, test_linked_list_link_unlink);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3535 cx_test_register(suite, test_linked_list_at);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3536 cx_test_register(suite, test_linked_list_find);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3537 cx_test_register(suite, test_linked_list_compare);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3538 cx_test_register(suite, test_linked_list_add);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3539 cx_test_register(suite, test_linked_list_prepend);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3540 cx_test_register(suite, test_linked_list_insert);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3541 cx_test_register(suite, test_linked_list_insert_chain);
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
3542 cx_test_register(suite, test_linked_list_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3543 cx_test_register(suite, test_linked_list_insert_unique);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3544 cx_test_register(suite, test_linked_list_first);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3545 cx_test_register(suite, test_linked_list_last);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3546 cx_test_register(suite, test_linked_list_prev);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3547 cx_test_register(suite, test_linked_list_remove);
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
3548 cx_test_register(suite, test_linked_list_remove_chain);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3549 cx_test_register(suite, test_linked_list_size);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3550 cx_test_register(suite, test_linked_list_sort_empty);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3551 cx_test_register(suite, test_linked_list_sort);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3552 cx_test_register(suite, test_linked_list_reverse);
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3553
801
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3554 cx_test_register(suite, test_list_ll_create);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3555 cx_test_register(suite, test_list_ll_create_simple);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3556 cx_test_register(suite, test_list_ll_create_simple_for_pointers);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3557 cx_test_register(suite, test_list_pll_destroy_no_destr);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3558 cx_test_register(suite, test_list_pll_destroy_simple_destr);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3559 cx_test_register(suite, test_list_pll_destroy_adv_destr);
04aa3913c0e3 migrate list create and destroy tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
3560
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3561 cx_test_register(suite, test_list_ll_add);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3562 cx_test_register(suite, test_list_pll_add);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3563 cx_test_register(suite, test_list_ll_insert);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3564 cx_test_register(suite, test_list_pll_insert);
1316
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
3565 cx_test_register(suite, test_list_ll_emplace);
c41538edfcef add cxListEmplace() and cxListEmplaceAt() plus some improvements to the array list implementation
Mike Becker <universe@uap-core.de>
parents: 1315
diff changeset
3566 cx_test_register(suite, test_list_pll_emplace);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3567 cx_test_register(suite, test_list_ll_insert_array);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3568 cx_test_register(suite, test_list_pll_insert_array);
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3569 cx_test_register(suite, test_list_ll_emplace_array);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3570 cx_test_register(suite, test_list_pll_emplace_array);
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3571 cx_test_register(suite, test_list_ll_insert_sorted);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3572 cx_test_register(suite, test_list_pll_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3573 cx_test_register(suite, test_list_ll_insert_unique);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3574 cx_test_register(suite, test_list_pll_insert_unique);
1428
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3575 cx_test_register(suite, test_list_ll_insert_unique_not_sorted);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3576 cx_test_register(suite, test_list_pll_insert_unique_not_sorted);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3577 cx_test_register(suite, test_list_ll_remove);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3578 cx_test_register(suite, test_list_pll_remove);
1315
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
3579 cx_test_register(suite, test_list_ll_remove_and_get);
b4c3e0b4c3d5 add convenience functions for easy access to first/last element of a list
Mike Becker <universe@uap-core.de>
parents: 1294
diff changeset
3580 cx_test_register(suite, test_list_pll_remove_and_get);
961
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
3581 cx_test_register(suite, test_list_ll_remove_array);
bc8b7c5f55fb increase list test coverage - fixes #454
Mike Becker <universe@uap-core.de>
parents: 912
diff changeset
3582 cx_test_register(suite, test_list_pll_remove_array);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3583 cx_test_register(suite, test_list_ll_find_remove);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3584 cx_test_register(suite, test_list_pll_find_remove);
1163
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
3585 cx_test_register(suite, test_list_ll_find_remove_sorted);
68ff0839bc6a optimize cx_arl_find_remove for sorted arrays - fixes #547
Mike Becker <universe@uap-core.de>
parents: 1162
diff changeset
3586 cx_test_register(suite, test_list_pll_find_remove_sorted);
1294
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
3587 cx_test_register(suite, test_list_ll_contains);
30d7ae76c76a add test and documentation for cxListContains() - fixes #643
Mike Becker <universe@uap-core.de>
parents: 1287
diff changeset
3588 cx_test_register(suite, test_list_pll_contains);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3589 cx_test_register(suite, test_list_ll_clear);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3590 cx_test_register(suite, test_list_pll_clear);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3591 cx_test_register(suite, test_list_ll_at);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3592 cx_test_register(suite, test_list_pll_at);
1287
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
3593 cx_test_register(suite, test_list_ll_set);
3a3ffc27813f adds cxListSet() - resolves #642
Mike Becker <universe@uap-core.de>
parents: 1225
diff changeset
3594 cx_test_register(suite, test_list_pll_set);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3595 cx_test_register(suite, test_list_ll_swap);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3596 cx_test_register(suite, test_list_pll_swap);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3597 cx_test_register(suite, test_list_ll_find);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3598 cx_test_register(suite, test_list_pll_find);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3599 cx_test_register(suite, test_list_ll_sort);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3600 cx_test_register(suite, test_list_pll_sort);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3601 cx_test_register(suite, test_list_ll_reverse);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3602 cx_test_register(suite, test_list_pll_reverse);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3603 cx_test_register(suite, test_list_ll_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3604 cx_test_register(suite, test_list_pll_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3605 cx_test_register(suite, test_list_ll_insert_with_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3606 cx_test_register(suite, test_list_pll_insert_with_iterator);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3607 cx_test_register(suite, test_list_ll_compare_ll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3608 cx_test_register(suite, test_list_ll_compare_arl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3609 cx_test_register(suite, test_list_ll_compare_pll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3610 cx_test_register(suite, test_list_ll_compare_parl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3611 cx_test_register(suite, test_list_pll_compare_ll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3612 cx_test_register(suite, test_list_pll_compare_arl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3613 cx_test_register(suite, test_list_pll_compare_pll);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3614 cx_test_register(suite, test_list_pll_compare_parl);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3615 cx_test_register(suite, test_list_ll_simple_destr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3616 cx_test_register(suite, test_list_pll_simple_destr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3617 cx_test_register(suite, test_list_ll_advanced_destr);
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3618 cx_test_register(suite, test_list_pll_advanced_destr);
1485
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
3619 cx_test_register(suite, test_list_ll_reserve_and_shrink);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
3620 cx_test_register(suite, test_list_pll_reserve_and_shrink);
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3621 cx_test_register(suite, test_list_ll_clone_into_arl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3622 cx_test_register(suite, test_list_pll_clone_into_arl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3623 cx_test_register(suite, test_list_ll_clone_into_ll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3624 cx_test_register(suite, test_list_pll_clone_into_ll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3625 cx_test_register(suite, test_list_ll_clone_into_parl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3626 cx_test_register(suite, test_list_pll_clone_into_parl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3627 cx_test_register(suite, test_list_ll_clone_into_pll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3628 cx_test_register(suite, test_list_pll_clone_into_pll);
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3629 cx_test_register(suite, test_list_ll_clone_alloc_fail_into_arl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3630 cx_test_register(suite, test_list_pll_clone_alloc_fail_into_arl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3631 cx_test_register(suite, test_list_ll_clone_alloc_fail_into_ll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3632 cx_test_register(suite, test_list_pll_clone_alloc_fail_into_ll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3633 cx_test_register(suite, test_list_ll_clone_alloc_fail_into_parl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3634 cx_test_register(suite, test_list_pll_clone_alloc_fail_into_parl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3635 cx_test_register(suite, test_list_ll_clone_alloc_fail_into_pll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3636 cx_test_register(suite, test_list_pll_clone_alloc_fail_into_pll);
803
0711d869ce4d complete migration of list tests - fixes #342
Mike Becker <universe@uap-core.de>
parents: 801
diff changeset
3637
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3638 return suite;
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3639 }
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3640
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3641 CxTestSuite *cx_test_suite_linked_list_defaulted_funcs(void) {
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3642 CxTestSuite *suite = cx_test_suite_new(
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3643 "linked_list with defaulted functions");
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3644
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3645 cx_test_register(suite, test_list_llm_insert_array);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3646 cx_test_register(suite, test_list_pllm_insert_array);
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3647 cx_test_register(suite, test_list_llm_emplace_array);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3648 cx_test_register(suite, test_list_pllm_emplace_array);
876
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3649 cx_test_register(suite, test_list_llm_insert_sorted);
f4ce7df9cff0 add stupid default implementation for high level insertion sort
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
3650 cx_test_register(suite, test_list_pllm_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3651 cx_test_register(suite, test_list_llm_insert_unique);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3652 cx_test_register(suite, test_list_pllm_insert_unique);
1428
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3653 cx_test_register(suite, test_list_llm_insert_unique_not_sorted);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3654 cx_test_register(suite, test_list_pllm_insert_unique_not_sorted);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3655 cx_test_register(suite, test_list_llm_swap);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3656 cx_test_register(suite, test_list_pllm_swap);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3657 cx_test_register(suite, test_list_llm_sort);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3658 cx_test_register(suite, test_list_pllm_sort);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3659
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3660 cx_test_register(suite, test_list_ll_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3661 cx_test_register(suite, test_list_pll_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3662 cx_test_register(suite, test_list_llm_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3663 cx_test_register(suite, test_list_pllm_compare_unoptimized);
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3664
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3665 return suite;
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3666 }
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 857
diff changeset
3667
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3668 CxTestSuite *cx_test_suite_kv_list(void) {
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3669 CxTestSuite *suite = cx_test_suite_new("kv_list");
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3670
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3671 cx_test_register(suite, test_list_kvl_add);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3672 cx_test_register(suite, test_list_pkvl_add);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3673 cx_test_register(suite, test_list_kvl_insert);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3674 cx_test_register(suite, test_list_pkvl_insert);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3675 cx_test_register(suite, test_list_kvl_emplace);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3676 cx_test_register(suite, test_list_pkvl_emplace);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3677 cx_test_register(suite, test_list_kvl_insert_array);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3678 cx_test_register(suite, test_list_pkvl_insert_array);
1433
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3679 cx_test_register(suite, test_list_kvl_emplace_array);
81c301a59b7c add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
Mike Becker <universe@uap-core.de>
parents: 1429
diff changeset
3680 cx_test_register(suite, test_list_pkvl_emplace_array);
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3681 cx_test_register(suite, test_list_kvl_insert_sorted);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3682 cx_test_register(suite, test_list_pkvl_insert_sorted);
1419
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3683 cx_test_register(suite, test_list_kvl_insert_unique);
e46406fd1b3c add functions to insert elements into lists/arrays without duplicates - resolves #557
Mike Becker <universe@uap-core.de>
parents: 1388
diff changeset
3684 cx_test_register(suite, test_list_pkvl_insert_unique);
1428
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3685 cx_test_register(suite, test_list_kvl_insert_unique_not_sorted);
0ac4aa1737fd add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
Mike Becker <universe@uap-core.de>
parents: 1423
diff changeset
3686 cx_test_register(suite, test_list_pkvl_insert_unique_not_sorted);
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3687 cx_test_register(suite, test_list_kvl_remove);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3688 cx_test_register(suite, test_list_pkvl_remove);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3689 cx_test_register(suite, test_list_kvl_remove_and_get);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3690 cx_test_register(suite, test_list_pkvl_remove_and_get);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3691 cx_test_register(suite, test_list_kvl_remove_array);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3692 cx_test_register(suite, test_list_pkvl_remove_array);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3693 cx_test_register(suite, test_list_kvl_find_remove);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3694 cx_test_register(suite, test_list_pkvl_find_remove);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3695 cx_test_register(suite, test_list_kvl_find_remove_sorted);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3696 cx_test_register(suite, test_list_pkvl_find_remove_sorted);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3697 cx_test_register(suite, test_list_kvl_contains);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3698 cx_test_register(suite, test_list_pkvl_contains);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3699 cx_test_register(suite, test_list_kvl_clear);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3700 cx_test_register(suite, test_list_pkvl_clear);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3701 cx_test_register(suite, test_list_kvl_at);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3702 cx_test_register(suite, test_list_pkvl_at);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3703 cx_test_register(suite, test_list_kvl_set);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3704 cx_test_register(suite, test_list_pkvl_set);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3705 cx_test_register(suite, test_list_kvl_swap);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3706 cx_test_register(suite, test_list_pkvl_swap);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3707 cx_test_register(suite, test_list_kvl_find);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3708 cx_test_register(suite, test_list_pkvl_find);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3709 cx_test_register(suite, test_list_kvl_sort);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3710 cx_test_register(suite, test_list_pkvl_sort);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3711 cx_test_register(suite, test_list_kvl_reverse);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3712 cx_test_register(suite, test_list_pkvl_reverse);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3713 cx_test_register(suite, test_list_kvl_iterator);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3714 cx_test_register(suite, test_list_pkvl_iterator);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3715 cx_test_register(suite, test_list_kvl_insert_with_iterator);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3716 cx_test_register(suite, test_list_pkvl_insert_with_iterator);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3717 cx_test_register(suite, test_list_kvl_compare_ll);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3718 cx_test_register(suite, test_list_kvl_compare_arl);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3719 cx_test_register(suite, test_list_kvl_compare_pll);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3720 cx_test_register(suite, test_list_kvl_compare_parl);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3721 cx_test_register(suite, test_list_pkvl_compare_ll);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3722 cx_test_register(suite, test_list_pkvl_compare_arl);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3723 cx_test_register(suite, test_list_pkvl_compare_pll);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3724 cx_test_register(suite, test_list_pkvl_compare_parl);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3725 cx_test_register(suite, test_list_kvl_simple_destr);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3726 cx_test_register(suite, test_list_pkvl_simple_destr);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3727 cx_test_register(suite, test_list_kvl_advanced_destr);
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3728 cx_test_register(suite, test_list_pkvl_advanced_destr);
1485
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
3729 cx_test_register(suite, test_list_kvl_reserve_and_shrink);
814c1c61488d add tests for cxListShrink() and cxListReserve() + fixes a bug
Mike Becker <universe@uap-core.de>
parents: 1483
diff changeset
3730 cx_test_register(suite, test_list_pkvl_reserve_and_shrink);
1436
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3731 // note: kv-lists also support a list clone, but that does not clone the keys
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3732 cx_test_register(suite, test_list_kvl_clone_into_arl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3733 cx_test_register(suite, test_list_pkvl_clone_into_arl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3734 cx_test_register(suite, test_list_kvl_clone_into_ll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3735 cx_test_register(suite, test_list_pkvl_clone_into_ll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3736 cx_test_register(suite, test_list_kvl_clone_into_parl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3737 cx_test_register(suite, test_list_pkvl_clone_into_parl);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3738 cx_test_register(suite, test_list_kvl_clone_into_pll);
c331add0d9f8 add cxListClone() - resolves #744 except for test coverage
Mike Becker <universe@uap-core.de>
parents: 1435
diff changeset
3739 cx_test_register(suite, test_list_pkvl_clone_into_pll);
1443
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3740 cx_test_register(suite, test_list_kvl_clone_alloc_fail_into_arl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3741 cx_test_register(suite, test_list_pkvl_clone_alloc_fail_into_arl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3742 cx_test_register(suite, test_list_kvl_clone_alloc_fail_into_ll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3743 cx_test_register(suite, test_list_pkvl_clone_alloc_fail_into_ll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3744 cx_test_register(suite, test_list_kvl_clone_alloc_fail_into_parl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3745 cx_test_register(suite, test_list_pkvl_clone_alloc_fail_into_parl);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3746 cx_test_register(suite, test_list_kvl_clone_alloc_fail_into_pll);
6986e9ed70f3 add test coverage for allocation failures in clone-function
Mike Becker <universe@uap-core.de>
parents: 1436
diff changeset
3747 cx_test_register(suite, test_list_pkvl_clone_alloc_fail_into_pll);
1350
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3748
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3749 return suite;
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3750 }
189756516eaa implement kv-list to a point where it correctly behaves like a list
Mike Becker <universe@uap-core.de>
parents: 1321
diff changeset
3751
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3752 CxTestSuite *cx_test_suite_empty_list(void) {
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3753 CxTestSuite *suite = cx_test_suite_new("empty list dummy");
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3754
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3755 cx_test_register(suite, test_empty_list_size);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3756 cx_test_register(suite, test_empty_list_iterator);
1388
edc34e904fe3 add tests for creating iterators with NULL lists or maps
Mike Becker <universe@uap-core.de>
parents: 1387
diff changeset
3757 cx_test_register(suite, test_null_list_iterator);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3758 cx_test_register(suite, test_empty_list_noops);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3759 cx_test_register(suite, test_empty_list_at);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3760 cx_test_register(suite, test_empty_list_find);
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3761 cx_test_register(suite, test_empty_list_compare);
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3762 cx_test_register(suite, test_null_list_free);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3763
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3764 return suite;
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 799
diff changeset
3765 }
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3766
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3767 CxTestSuite *cx_test_suite_list_set_ops(void) {
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3768 CxTestSuite *suite = cx_test_suite_new("list collection operations");
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3769
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3770 // we do not perform the following tests with every combination of list types
1477
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3771 cx_test_register(suite, test_list_union_unsorted);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3772 cx_test_register(suite, test_list_union_sorted);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3773 cx_test_register(suite, test_list_union_unsorted_alloc_fail);
9170a7dff573 implement cxListUnion() - resolves #755
Mike Becker <universe@uap-core.de>
parents: 1469
diff changeset
3774 cx_test_register(suite, test_list_union_sorted_alloc_fail);
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3775 cx_test_register(suite, test_list_difference_unsorted);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3776 cx_test_register(suite, test_list_difference_sorted);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3777 cx_test_register(suite, test_list_difference_unsorted_alloc_fail);
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3778 cx_test_register(suite, test_list_difference_sorted_alloc_fail);
1469
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3779 cx_test_register(suite, test_list_intersection_unsorted);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3780 cx_test_register(suite, test_list_intersection_sorted);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3781 cx_test_register(suite, test_list_intersection_unsorted_alloc_fail);
9b2b40a3c9f0 implement cxListIntersection() - resolves #554
Mike Becker <universe@uap-core.de>
parents: 1466
diff changeset
3782 cx_test_register(suite, test_list_intersection_sorted_alloc_fail);
1480
83146195a1db add tests for simple clone functions
Mike Becker <universe@uap-core.de>
parents: 1477
diff changeset
3783 cx_test_register(suite, test_list_simple_clones);
1462
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3784
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3785 return suite;
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3786 }
9263d3f15379 add tests for cxListDifference() - resolves #751
Mike Becker <universe@uap-core.de>
parents: 1444
diff changeset
3787
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3788 CxTestSuite *cx_test_suite_list_corner_cases(void) {
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3789 CxTestSuite *suite = cx_test_suite_new("list corner cases");
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3790
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3791 cx_test_register(suite, test_list_pointer_list_supports_null);
1423
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3792 cx_test_register(suite, test_list_use_insert_unique_with_duplicates_in_source);
9a72258446cd fixes various bugs related to skipping duplicates in insert_unique - relates to #557
Mike Becker <universe@uap-core.de>
parents: 1422
diff changeset
3793 cx_test_register(suite, test_list_use_insert_unique_to_remove_duplicates);
1422
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3794
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3795 return suite;
8bfccb342895 changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
Mike Becker <universe@uap-core.de>
parents: 1419
diff changeset
3796 }

mercurial