1 # Copyright (C) 2002 by Kevin L. Mitchell <klmitch@mit.edu>
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Library General Public
5 # License as published by the Free Software Foundation; either
6 # version 2 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Library General Public License for more details.
13 # You should have received a copy of the GNU Library General Public
14 # License along with this library; if not, write to the Free
15 # Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18 # @(#)$Id: test-harness.dat,v 1.1 2003-03-07 02:36:11 klmitch Exp $
20 program t_ll_init t_ll_init \
21 "Test linked list head initializations"
23 test ll_static_magic t_ll_init PASS \
24 "Test static initialization: magic number"
25 test ll_static_count t_ll_init PASS \
26 "Test static initialization: count"
27 test ll_static_first t_ll_init PASS \
28 "Test static initialization: pointer to first"
29 test ll_static_last t_ll_init PASS \
30 "Test static initialization: pointer to last"
31 test ll_init_nohead t_ll_init PASS \
32 "Test that ll_init() handles no arguments properly"
33 test ll_dynamic t_ll_init PASS \
34 "Test that ll_init() with proper arguments returns success"
35 test ll_dynamic_magic t_ll_init PASS \
36 "Test dynamic initialization: magic number"
37 test ll_dynamic_count t_ll_init PASS \
38 "Test dynamic initialization: count"
39 test ll_dynamic_first t_ll_init PASS \
40 "Test dynamic initialization: pointer to first"
41 test ll_dynamic_last t_ll_init PASS \
42 "Test dynamic initialization: pointer to last"
44 program t_le_init t_le_init \
45 "Test linked list element initializations"
47 test le_static_magic t_le_init PASS \
48 "Test static initialization: magic number"
49 test le_static_next t_le_init PASS \
50 "Test static initialization: pointer to next"
51 test le_static_prev t_le_init PASS \
52 "Test static initialization: pointer to previous"
53 test le_static_object t_le_init PASS \
54 "Test static initialization: pointer to object"
55 test le_static_head t_le_init PASS \
56 "Test static initialization: pointer to head"
57 test le_static_flags t_le_init PASS \
58 "Test static initialization: flags"
59 test le_init_nothing t_le_init PASS \
60 "Test that le_init() handles no arguments properly"
61 test le_init_objectonly t_le_init PASS \
62 "Test that le_init() handles object argument only properly"
63 test le_init_elemonly t_le_init PASS \
64 "Test that le_init() handles element argument only properly"
65 test le_dynamic t_le_init PASS \
66 "Test that le_init() with proper arguments returns success"
67 test le_dynamic_magic t_le_init PASS \
68 "Test dynamic initialization: magic number"
69 test le_dynamic_next t_le_init PASS \
70 "Test dynamic initialization: pointer to next"
71 test le_dynamic_prev t_le_init PASS \
72 "Test dynamic initialization: pointer to previous"
73 test le_dynamic_object t_le_init PASS \
74 "Test dynamic initialization: pointer to object"
75 test le_dynamic_head t_le_init PASS \
76 "Test dynamic initialization: pointer to head"
77 test le_dynamic_flags t_le_init PASS \
78 "Test dynamic initialization: flags"
80 program t_ll_add t_ll_add \
81 "Test linked list element insertion"
83 test ll_add_noargs t_ll_add PASS \
84 "Test ll_add() with no valid arguments"
85 test ll_add_badlist t_ll_add PASS \
86 "Test ll_add() with bad list"
87 test ll_add_badnew t_ll_add PASS \
88 "Test ll_add() with bad new element"
89 test ll_add_badelem t_ll_add PASS \
90 "Test ll_add() with bad original element"
91 test ll_add_before_noelem t_ll_add PASS \
92 "Test ll_add() with LINK_LOC_BEFORE with no original element"
93 test ll_add_after_noelem t_ll_add PASS \
94 "Test ll_add() with LINK_LOC_AFTER with no original element"
96 test ll_add_l0e0 t_ll_add PASS \
97 "Test ll_add() successful addition (1)"
99 test list_l0e0_count t_ll_add PASS \
100 "Test list head element count correct after insert (1)"
101 test list_l0e0_first t_ll_add PASS \
102 "Test list head first element pointers correct after insert (1)"
103 test list_l0e0_last t_ll_add PASS \
104 "Test list head last element pointers correct after insert (1)"
106 test elem_l0e0_next t_ll_add PASS \
107 "Test element next pointers correct after insert (1/0)"
108 test elem_l0e0_prev t_ll_add PASS \
109 "Test element prev pointers correct after insert (1/0)"
110 test elem_l0e0_head t_ll_add PASS \
111 "Test element head pointers correct after insert (1/0)"
113 test ll_add_l1e0 t_ll_add PASS \
114 "Test ll_add() correctly rejects insertions of busy items"
116 test ll_add_l1e1 t_ll_add PASS \
117 "Test ll_add() successful addition (2)"
119 test list_l1e1_count t_ll_add PASS \
120 "Test list head element count correct after insert (2)"
121 test list_l1e1_first t_ll_add PASS \
122 "Test list head first element pointers correct after insert (2)"
123 test list_l1e1_last t_ll_add PASS \
124 "Test list head last element pointers correct after insert (2)"
126 test elem_l1e1_next t_ll_add PASS \
127 "Test element next pointers correct after insert (2/1)"
128 test elem_l1e1_prev t_ll_add PASS \
129 "Test element prev pointers correct after insert (2/1)"
130 test elem_l1e1_head t_ll_add PASS \
131 "Test element head pointers correct after insert (2/1)"
133 test ll_add_l0e2a1 t_ll_add PASS \
134 "Test ll_add correctly rejects insertions of cross-list items"
135 test ll_add_l0e2a3 t_ll_add PASS \
136 "Test ll_add correctly rejects insertions after no-list items"
139 test ll_add_l0e2t t_ll_add PASS \
140 "Test ll_add() successful addition to tail (3)"
142 test list_l0e0e2_count t_ll_add PASS \
143 "Test list head element count correct after insert (3)"
144 test list_l0e0e2_first t_ll_add PASS \
145 "Test list head first element pointers correct after insert (3)"
146 test list_l0e0e2_last t_ll_add PASS \
147 "Test list head last element pointers correct after insert (3)"
149 test elem_l0e0e2_0_next t_ll_add PASS \
150 "Test element next pointers correct after insert (3/0)"
151 test elem_l0e0e2_0_prev t_ll_add PASS \
152 "Test element prev pointers correct after insert (3/0)"
153 test elem_l0e0e2_0_head t_ll_add PASS \
154 "Test element head pointers correct after insert (3/0)"
156 test elem_l0e0e2_2_next t_ll_add PASS \
157 "Test element next pointers correct after insert (3/2)"
158 test elem_l0e0e2_2_prev t_ll_add PASS \
159 "Test element prev pointers correct after insert (3/2)"
160 test elem_l0e0e2_2_head t_ll_add PASS \
161 "Test element head pointers correct after insert (3/2)"
163 test ll_add_l1e3h t_ll_add PASS \
164 "Test ll_add() successful addition to head (4)"
166 test list_l1e3e1_count t_ll_add PASS \
167 "Test list head element count correct after insert (4)"
168 test list_l1e3e1_first t_ll_add PASS \
169 "Test list head first element pointers correct after insert (4)"
170 test list_l1e3e1_last t_ll_add PASS \
171 "Test list head last element pointers correct after insert (4)"
173 test elem_l1e3e1_1_next t_ll_add PASS \
174 "Test element next pointers correct after insert (4/1)"
175 test elem_l1e3e1_1_prev t_ll_add PASS \
176 "Test element prev pointers correct after insert (4/1)"
177 test elem_l1e3e1_1_head t_ll_add PASS \
178 "Test element head pointers correct after insert (4/1)"
180 test elem_l1e3e1_3_next t_ll_add PASS \
181 "Test element next pointers correct after insert (4/3)"
182 test elem_l1e3e1_3_prev t_ll_add PASS \
183 "Test element prev pointers correct after insert (4/3)"
184 test elem_l1e3e1_3_head t_ll_add PASS \
185 "Test element head pointers correct after insert (4/3)"
187 test ll_add_l0e4b2 t_ll_add PASS \
188 "Test ll_add() successful addition before element (5)"
190 test list_l0e0e4e2_count t_ll_add PASS \
191 "Test list head element count correct after insert (5)"
192 test list_l0e0e4e2_first t_ll_add PASS \
193 "Test list head first element pointers correct after insert (5)"
194 test list_l0e0e4e2_last t_ll_add PASS \
195 "Test list head last element pointers correct after insert (5)"
197 test elem_l0e0e4e2_0_next t_ll_add PASS \
198 "Test element next pointers correct after insert (5/0)"
199 test elem_l0e0e4e2_0_prev t_ll_add PASS \
200 "Test element prev pointers correct after insert (5/0)"
201 test elem_l0e0e4e2_0_head t_ll_add PASS \
202 "Test element head pointers correct after insert (5/0)"
204 test elem_l0e0e4e2_2_next t_ll_add PASS \
205 "Test element next pointers correct after insert (5/2)"
206 test elem_l0e0e4e2_2_prev t_ll_add PASS \
207 "Test element prev pointers correct after insert (5/2)"
208 test elem_l0e0e4e2_2_head t_ll_add PASS \
209 "Test element head pointers correct after insert (5/2)"
211 test elem_l0e0e4e2_4_next t_ll_add PASS \
212 "Test element next pointers correct after insert (5/4)"
213 test elem_l0e0e4e2_4_prev t_ll_add PASS \
214 "Test element prev pointers correct after insert (5/4)"
215 test elem_l0e0e4e2_4_head t_ll_add PASS \
216 "Test element head pointers correct after insert (5/4)"
218 test ll_add_l1e5a3 t_ll_add PASS \
219 "Test ll_add() successful addition before element (6)"
221 test list_l1e3e5e1_count t_ll_add PASS \
222 "Test list head element count correct after insert (6)"
223 test list_l1e3e5e1_first t_ll_add PASS \
224 "Test list head first element pointers correct after insert (6)"
225 test list_l1e3e5e1_last t_ll_add PASS \
226 "Test list head last element pointers correct after insert (6)"
228 test elem_l1e3e5e1_1_next t_ll_add PASS \
229 "Test element next pointers correct after insert (6/1)"
230 test elem_l1e3e5e1_1_prev t_ll_add PASS \
231 "Test element prev pointers correct after insert (6/1)"
232 test elem_l1e3e5e1_1_head t_ll_add PASS \
233 "Test element head pointers correct after insert (6/1)"
235 test elem_l1e3e5e1_3_next t_ll_add PASS \
236 "Test element next pointers correct after insert (6/3)"
237 test elem_l1e3e5e1_3_prev t_ll_add PASS \
238 "Test element prev pointers correct after insert (6/3)"
239 test elem_l1e3e5e1_3_head t_ll_add PASS \
240 "Test element head pointers correct after insert (6/3)"
242 test elem_l1e3e5e1_5_next t_ll_add PASS \
243 "Test element next pointers correct after insert (6/5)"
244 test elem_l1e3e5e1_5_prev t_ll_add PASS \
245 "Test element prev pointers correct after insert (6/5)"
246 test elem_l1e3e5e1_5_head t_ll_add PASS \
247 "Test element head pointers correct after insert (6/5)"
249 program t_ll_move t_ll_move \
250 "Test linked list element reordering"
253 test ll_move_baseline_0_count t_ll_move PASS \
254 "Baseline list ordering: list 0 element count"
255 test ll_move_baseline_0_first t_ll_move PASS \
256 "Baseline list ordering: list 0 first element"
257 test ll_move_baseline_0_last t_ll_move PASS \
258 "Baseline list ordering: list 0 last element"
259 test ll_move_baseline_0/0_next t_ll_move PASS \
260 "Baseline list ordering: list 0 element 0 next pointer"
261 test ll_move_baseline_0/0_prev t_ll_move PASS \
262 "Baseline list ordering: list 0 element 0 previous pointer"
263 test ll_move_baseline_0/0_head t_ll_move PASS \
264 "Baseline list ordering: list 0 element 0 head pointer"
265 test ll_move_baseline_0/1_next t_ll_move PASS \
266 "Baseline list ordering: list 0 element 1 next pointer"
267 test ll_move_baseline_0/1_prev t_ll_move PASS \
268 "Baseline list ordering: list 0 element 1 previous pointer"
269 test ll_move_baseline_0/1_head t_ll_move PASS \
270 "Baseline list ordering: list 0 element 1 head pointer"
271 test ll_move_baseline_0/2_next t_ll_move PASS \
272 "Baseline list ordering: list 0 element 2 next pointer"
273 test ll_move_baseline_0/2_prev t_ll_move PASS \
274 "Baseline list ordering: list 0 element 2 previous pointer"
275 test ll_move_baseline_0/2_head t_ll_move PASS \
276 "Baseline list ordering: list 0 element 2 head pointer"
277 test ll_move_baseline_0/3_next t_ll_move PASS \
278 "Baseline list ordering: list 0 element 3 next pointer"
279 test ll_move_baseline_0/3_prev t_ll_move PASS \
280 "Baseline list ordering: list 0 element 3 previous pointer"
281 test ll_move_baseline_0/3_head t_ll_move PASS \
282 "Baseline list ordering: list 0 element 3 head pointer"
283 test ll_move_baseline_0/4_next t_ll_move PASS \
284 "Baseline list ordering: list 0 element 4 next pointer"
285 test ll_move_baseline_0/4_prev t_ll_move PASS \
286 "Baseline list ordering: list 0 element 4 previous pointer"
287 test ll_move_baseline_0/4_head t_ll_move PASS \
288 "Baseline list ordering: list 0 element 4 head pointer"
290 test ll_move_baseline_1_count t_ll_move PASS \
291 "Baseline list ordering: list 1 element count"
292 test ll_move_baseline_1_first t_ll_move PASS \
293 "Baseline list ordering: list 1 first element"
294 test ll_move_baseline_1_last t_ll_move PASS \
295 "Baseline list ordering: list 1 last element"
296 test ll_move_baseline_1/5_next t_ll_move PASS \
297 "Baseline list ordering: list 1 element 5 next pointer"
298 test ll_move_baseline_1/5_prev t_ll_move PASS \
299 "Baseline list ordering: list 1 element 5 previous pointer"
300 test ll_move_baseline_1/5_head t_ll_move PASS \
301 "Baseline list ordering: list 1 element 5 head pointer"
302 test ll_move_baseline_1/6_next t_ll_move PASS \
303 "Baseline list ordering: list 1 element 6 next pointer"
304 test ll_move_baseline_1/6_prev t_ll_move PASS \
305 "Baseline list ordering: list 1 element 6 previous pointer"
306 test ll_move_baseline_1/6_head t_ll_move PASS \
307 "Baseline list ordering: list 1 element 6 head pointer"
308 test ll_move_baseline_1/7_next t_ll_move PASS \
309 "Baseline list ordering: list 1 element 7 next pointer"
310 test ll_move_baseline_1/7_prev t_ll_move PASS \
311 "Baseline list ordering: list 1 element 7 previous pointer"
312 test ll_move_baseline_1/7_head t_ll_move PASS \
313 "Baseline list ordering: list 1 element 7 head pointer"
314 test ll_move_baseline_1/8_next t_ll_move PASS \
315 "Baseline list ordering: list 1 element 8 next pointer"
316 test ll_move_baseline_1/8_prev t_ll_move PASS \
317 "Baseline list ordering: list 1 element 8 previous pointer"
318 test ll_move_baseline_1/8_head t_ll_move PASS \
319 "Baseline list ordering: list 1 element 8 head pointer"
320 test ll_move_baseline_1/9_next t_ll_move PASS \
321 "Baseline list ordering: list 1 element 9 next pointer"
322 test ll_move_baseline_1/9_prev t_ll_move PASS \
323 "Baseline list ordering: list 1 element 9 previous pointer"
324 test ll_move_baseline_1/9_head t_ll_move PASS \
325 "Baseline list ordering: list 1 element 9 head pointer"
327 test ll_move_noargs t_ll_move PASS \
328 "Test ll_move() with no valid arguments"
329 test ll_move_badlist t_ll_move PASS \
330 "Test ll_move() with bad list"
331 test ll_move_badnew t_ll_move PASS \
332 "Test ll_move() with bad new element"
333 test ll_move_badelem t_ll_move PASS \
334 "Test ll_move() with bad original element"
335 test ll_move_before_noelem t_ll_move PASS \
336 "Test ll_move() with LINK_LOC_BEFORE with no original element"
337 test ll_move_after_noelem t_ll_move PASS \
338 "Test ll_move() with LINK_LOC_AFTER with no original element"
340 test ll_move_neweqelem t_ll_move PASS \
341 "Test ll_move() with new == elem is rejected"
343 test ll_move_newunused t_ll_move PASS \
344 "Test ll_move() with unused new element"
345 test ll_move_elemunused t_ll_move PASS \
346 "Test ll_move() with unused original element"
348 test ll_move_newwronglist t_ll_move PASS \
349 "Test ll_move() with new element in wrong list"
350 test ll_move_elemwronglist t_ll_move PASS \
351 "Test ll_move() with original element in wrong list"
353 test ll_move_l0e4h t_ll_move PASS \
354 "Test ll_move() of tail object to head of list"
356 test ll_move_l0e4h_0_count t_ll_move PASS \
357 "Tail to head: list 0 element count"
358 test ll_move_l0e4h_0_first t_ll_move PASS \
359 "Tail to head: list 0 first element"
360 test ll_move_l0e4h_0_last t_ll_move PASS \
361 "Tail to head: list 0 last element"
362 test ll_move_l0e4h_0/0_next t_ll_move PASS \
363 "Tail to head: list 0 element 0 next pointer"
364 test ll_move_l0e4h_0/0_prev t_ll_move PASS \
365 "Tail to head: list 0 element 0 previous pointer"
366 test ll_move_l0e4h_0/0_head t_ll_move PASS \
367 "Tail to head: list 0 element 0 head pointer"
368 test ll_move_l0e4h_0/1_next t_ll_move PASS \
369 "Tail to head: list 0 element 1 next pointer"
370 test ll_move_l0e4h_0/1_prev t_ll_move PASS \
371 "Tail to head: list 0 element 1 previous pointer"
372 test ll_move_l0e4h_0/1_head t_ll_move PASS \
373 "Tail to head: list 0 element 1 head pointer"
374 test ll_move_l0e4h_0/2_next t_ll_move PASS \
375 "Tail to head: list 0 element 2 next pointer"
376 test ll_move_l0e4h_0/2_prev t_ll_move PASS \
377 "Tail to head: list 0 element 2 previous pointer"
378 test ll_move_l0e4h_0/2_head t_ll_move PASS \
379 "Tail to head: list 0 element 2 head pointer"
380 test ll_move_l0e4h_0/3_next t_ll_move PASS \
381 "Tail to head: list 0 element 3 next pointer"
382 test ll_move_l0e4h_0/3_prev t_ll_move PASS \
383 "Tail to head: list 0 element 3 previous pointer"
384 test ll_move_l0e4h_0/3_head t_ll_move PASS \
385 "Tail to head: list 0 element 3 head pointer"
386 test ll_move_l0e4h_0/4_next t_ll_move PASS \
387 "Tail to head: list 0 element 4 next pointer"
388 test ll_move_l0e4h_0/4_prev t_ll_move PASS \
389 "Tail to head: list 0 element 4 previous pointer"
390 test ll_move_l0e4h_0/4_head t_ll_move PASS \
391 "Tail to head: list 0 element 4 head pointer"
393 test ll_move_l0e4t t_ll_move PASS \
394 "Test ll_move() of head object to tail of list"
396 test ll_move_l0e4t_0_count t_ll_move PASS \
397 "Head to tail: list 0 element count"
398 test ll_move_l0e4t_0_first t_ll_move PASS \
399 "Head to tail: list 0 first element"
400 test ll_move_l0e4t_0_last t_ll_move PASS \
401 "Head to tail: list 0 last element"
402 test ll_move_l0e4t_0/0_next t_ll_move PASS \
403 "Head to tail: list 0 element 0 next pointer"
404 test ll_move_l0e4t_0/0_prev t_ll_move PASS \
405 "Head to tail: list 0 element 0 previous pointer"
406 test ll_move_l0e4t_0/0_head t_ll_move PASS \
407 "Head to tail: list 0 element 0 head pointer"
408 test ll_move_l0e4t_0/1_next t_ll_move PASS \
409 "Head to tail: list 0 element 1 next pointer"
410 test ll_move_l0e4t_0/1_prev t_ll_move PASS \
411 "Head to tail: list 0 element 1 previous pointer"
412 test ll_move_l0e4t_0/1_head t_ll_move PASS \
413 "Head to tail: list 0 element 1 head pointer"
414 test ll_move_l0e4t_0/2_next t_ll_move PASS \
415 "Head to tail: list 0 element 2 next pointer"
416 test ll_move_l0e4t_0/2_prev t_ll_move PASS \
417 "Head to tail: list 0 element 2 previous pointer"
418 test ll_move_l0e4t_0/2_head t_ll_move PASS \
419 "Head to tail: list 0 element 2 head pointer"
420 test ll_move_l0e4t_0/3_next t_ll_move PASS \
421 "Head to tail: list 0 element 3 next pointer"
422 test ll_move_l0e4t_0/3_prev t_ll_move PASS \
423 "Head to tail: list 0 element 3 previous pointer"
424 test ll_move_l0e4t_0/3_head t_ll_move PASS \
425 "Head to tail: list 0 element 3 head pointer"
426 test ll_move_l0e4t_0/4_next t_ll_move PASS \
427 "Head to tail: list 0 element 4 next pointer"
428 test ll_move_l0e4t_0/4_prev t_ll_move PASS \
429 "Head to tail: list 0 element 4 previous pointer"
430 test ll_move_l0e4t_0/4_head t_ll_move PASS \
431 "Head to tail: list 0 element 4 head pointer"
433 test ll_move_l0e4a0 t_ll_move PASS \
434 "Test ll_move() of tail object to after head of list"
436 test ll_move_l0e4a0_0_count t_ll_move PASS \
437 "Tail to after head: list 0 element count"
438 test ll_move_l0e4a0_0_first t_ll_move PASS \
439 "Tail to after head: list 0 first element"
440 test ll_move_l0e4a0_0_last t_ll_move PASS \
441 "Tail to after head: list 0 last element"
442 test ll_move_l0e4a0_0/0_next t_ll_move PASS \
443 "Tail to after head: list 0 element 0 next pointer"
444 test ll_move_l0e4a0_0/0_prev t_ll_move PASS \
445 "Tail to after head: list 0 element 0 previous pointer"
446 test ll_move_l0e4a0_0/0_head t_ll_move PASS \
447 "Tail to after head: list 0 element 0 head pointer"
448 test ll_move_l0e4a0_0/1_next t_ll_move PASS \
449 "Tail to after head: list 0 element 1 next pointer"
450 test ll_move_l0e4a0_0/1_prev t_ll_move PASS \
451 "Tail to after head: list 0 element 1 previous pointer"
452 test ll_move_l0e4a0_0/1_head t_ll_move PASS \
453 "Tail to after head: list 0 element 1 head pointer"
454 test ll_move_l0e4a0_0/2_next t_ll_move PASS \
455 "Tail to after head: list 0 element 2 next pointer"
456 test ll_move_l0e4a0_0/2_prev t_ll_move PASS \
457 "Tail to after head: list 0 element 2 previous pointer"
458 test ll_move_l0e4a0_0/2_head t_ll_move PASS \
459 "Tail to after head: list 0 element 2 head pointer"
460 test ll_move_l0e4a0_0/3_next t_ll_move PASS \
461 "Tail to after head: list 0 element 3 next pointer"
462 test ll_move_l0e4a0_0/3_prev t_ll_move PASS \
463 "Tail to after head: list 0 element 3 previous pointer"
464 test ll_move_l0e4a0_0/3_head t_ll_move PASS \
465 "Tail to after head: list 0 element 3 head pointer"
466 test ll_move_l0e4a0_0/4_next t_ll_move PASS \
467 "Tail to after head: list 0 element 4 next pointer"
468 test ll_move_l0e4a0_0/4_prev t_ll_move PASS \
469 "Tail to after head: list 0 element 4 previous pointer"
470 test ll_move_l0e4a0_0/4_head t_ll_move PASS \
471 "Tail to after head: list 0 element 4 head pointer"
473 test ll_move_l0e0b3 t_ll_move PASS \
474 "Test ll_move() of head object to before tail of list"
476 test ll_move_l0e0b3_0_count t_ll_move PASS \
477 "Head to before tail: list 0 element count"
478 test ll_move_l0e0b3_0_first t_ll_move PASS \
479 "Head to before tail: list 0 first element"
480 test ll_move_l0e0b3_0_last t_ll_move PASS \
481 "Head to before tail: list 0 last element"
482 test ll_move_l0e0b3_0/0_next t_ll_move PASS \
483 "Head to before tail: list 0 element 0 next pointer"
484 test ll_move_l0e0b3_0/0_prev t_ll_move PASS \
485 "Head to before tail: list 0 element 0 previous pointer"
486 test ll_move_l0e0b3_0/0_head t_ll_move PASS \
487 "Head to before tail: list 0 element 0 head pointer"
488 test ll_move_l0e0b3_0/1_next t_ll_move PASS \
489 "Head to before tail: list 0 element 1 next pointer"
490 test ll_move_l0e0b3_0/1_prev t_ll_move PASS \
491 "Head to before tail: list 0 element 1 previous pointer"
492 test ll_move_l0e0b3_0/1_head t_ll_move PASS \
493 "Head to before tail: list 0 element 1 head pointer"
494 test ll_move_l0e0b3_0/2_next t_ll_move PASS \
495 "Head to before tail: list 0 element 2 next pointer"
496 test ll_move_l0e0b3_0/2_prev t_ll_move PASS \
497 "Head to before tail: list 0 element 2 previous pointer"
498 test ll_move_l0e0b3_0/2_head t_ll_move PASS \
499 "Head to before tail: list 0 element 2 head pointer"
500 test ll_move_l0e0b3_0/3_next t_ll_move PASS \
501 "Head to before tail: list 0 element 3 next pointer"
502 test ll_move_l0e0b3_0/3_prev t_ll_move PASS \
503 "Head to before tail: list 0 element 3 previous pointer"
504 test ll_move_l0e0b3_0/3_head t_ll_move PASS \
505 "Head to before tail: list 0 element 3 head pointer"
506 test ll_move_l0e0b3_0/4_next t_ll_move PASS \
507 "Head to before tail: list 0 element 4 next pointer"
508 test ll_move_l0e0b3_0/4_prev t_ll_move PASS \
509 "Head to before tail: list 0 element 4 previous pointer"
510 test ll_move_l0e0b3_0/4_head t_ll_move PASS \
511 "Head to before tail: list 0 element 4 head pointer"
513 test ll_move_l0e4a1 t_ll_move PASS \
514 "Test swapping sequential objects with LINK_LOC_AFTER"
516 test ll_move_l0e4a1_0_count t_ll_move PASS \
517 "Swap elements with LINK_LOC_AFTER: list 0 element count"
518 test ll_move_l0e4a1_0_first t_ll_move PASS \
519 "Swap elements with LINK_LOC_AFTER: list 0 first element"
520 test ll_move_l0e4a1_0_last t_ll_move PASS \
521 "Swap elements with LINK_LOC_AFTER: list 0 last element"
522 test ll_move_l0e4a1_0/0_next t_ll_move PASS \
523 "Swap elements with LINK_LOC_AFTER: list 0 element 0 next pointer"
524 test ll_move_l0e4a1_0/0_prev t_ll_move PASS \
525 "Swap elements with LINK_LOC_AFTER: list 0 element 0 previous pointer"
526 test ll_move_l0e4a1_0/0_head t_ll_move PASS \
527 "Swap elements with LINK_LOC_AFTER: list 0 element 0 head pointer"
528 test ll_move_l0e4a1_0/1_next t_ll_move PASS \
529 "Swap elements with LINK_LOC_AFTER: list 0 element 1 next pointer"
530 test ll_move_l0e4a1_0/1_prev t_ll_move PASS \
531 "Swap elements with LINK_LOC_AFTER: list 0 element 1 previous pointer"
532 test ll_move_l0e4a1_0/1_head t_ll_move PASS \
533 "Swap elements with LINK_LOC_AFTER: list 0 element 1 head pointer"
534 test ll_move_l0e4a1_0/2_next t_ll_move PASS \
535 "Swap elements with LINK_LOC_AFTER: list 0 element 2 next pointer"
536 test ll_move_l0e4a1_0/2_prev t_ll_move PASS \
537 "Swap elements with LINK_LOC_AFTER: list 0 element 2 previous pointer"
538 test ll_move_l0e4a1_0/2_head t_ll_move PASS \
539 "Swap elements with LINK_LOC_AFTER: list 0 element 2 head pointer"
540 test ll_move_l0e4a1_0/3_next t_ll_move PASS \
541 "Swap elements with LINK_LOC_AFTER: list 0 element 3 next pointer"
542 test ll_move_l0e4a1_0/3_prev t_ll_move PASS \
543 "Swap elements with LINK_LOC_AFTER: list 0 element 3 previous pointer"
544 test ll_move_l0e4a1_0/3_head t_ll_move PASS \
545 "Swap elements with LINK_LOC_AFTER: list 0 element 3 head pointer"
546 test ll_move_l0e4a1_0/4_next t_ll_move PASS \
547 "Swap elements with LINK_LOC_AFTER: list 0 element 4 next pointer"
548 test ll_move_l0e4a1_0/4_prev t_ll_move PASS \
549 "Swap elements with LINK_LOC_AFTER: list 0 element 4 previous pointer"
550 test ll_move_l0e4a1_0/4_head t_ll_move PASS \
551 "Swap elements with LINK_LOC_AFTER: list 0 element 4 head pointer"
553 test ll_move_l0e3b0 t_ll_move PASS \
554 "Test swapping sequential objects with LINK_LOC_BEFORE"
556 test ll_move_l0e3b0_0_count t_ll_move PASS \
557 "Swap elements with LINK_LOC_BEFORE: list 0 element count"
558 test ll_move_l0e3b0_0_first t_ll_move PASS \
559 "Swap elements with LINK_LOC_BEFORE: list 0 first element"
560 test ll_move_l0e3b0_0_last t_ll_move PASS \
561 "Swap elements with LINK_LOC_BEFORE: list 0 last element"
562 test ll_move_l0e3b0_0/0_next t_ll_move PASS \
563 "Swap elements with LINK_LOC_BEFORE: list 0 element 0 next pointer"
564 test ll_move_l0e3b0_0/0_prev t_ll_move PASS \
565 "Swap elements with LINK_LOC_BEFORE: list 0 element 0 previous pointer"
566 test ll_move_l0e3b0_0/0_head t_ll_move PASS \
567 "Swap elements with LINK_LOC_BEFORE: list 0 element 0 head pointer"
568 test ll_move_l0e3b0_0/1_next t_ll_move PASS \
569 "Swap elements with LINK_LOC_BEFORE: list 0 element 1 next pointer"
570 test ll_move_l0e3b0_0/1_prev t_ll_move PASS \
571 "Swap elements with LINK_LOC_BEFORE: list 0 element 1 previous pointer"
572 test ll_move_l0e3b0_0/1_head t_ll_move PASS \
573 "Swap elements with LINK_LOC_BEFORE: list 0 element 1 head pointer"
574 test ll_move_l0e3b0_0/2_next t_ll_move PASS \
575 "Swap elements with LINK_LOC_BEFORE: list 0 element 2 next pointer"
576 test ll_move_l0e3b0_0/2_prev t_ll_move PASS \
577 "Swap elements with LINK_LOC_BEFORE: list 0 element 2 previous pointer"
578 test ll_move_l0e3b0_0/2_head t_ll_move PASS \
579 "Swap elements with LINK_LOC_BEFORE: list 0 element 2 head pointer"
580 test ll_move_l0e3b0_0/3_next t_ll_move PASS \
581 "Swap elements with LINK_LOC_BEFORE: list 0 element 3 next pointer"
582 test ll_move_l0e3b0_0/3_prev t_ll_move PASS \
583 "Swap elements with LINK_LOC_BEFORE: list 0 element 3 previous pointer"
584 test ll_move_l0e3b0_0/3_head t_ll_move PASS \
585 "Swap elements with LINK_LOC_BEFORE: list 0 element 3 head pointer"
586 test ll_move_l0e3b0_0/4_next t_ll_move PASS \
587 "Swap elements with LINK_LOC_BEFORE: list 0 element 4 next pointer"
588 test ll_move_l0e3b0_0/4_prev t_ll_move PASS \
589 "Swap elements with LINK_LOC_BEFORE: list 0 element 4 previous pointer"
590 test ll_move_l0e3b0_0/4_head t_ll_move PASS \
591 "Swap elements with LINK_LOC_BEFORE: list 0 element 4 head pointer"
593 test ll_move_l0e1h t_ll_move PASS \
594 "Test moving head element to head of list"
596 test ll_move_l0e1h_0_count t_ll_move PASS \
597 "Head to head: list 0 element count"
598 test ll_move_l0e1h_0_first t_ll_move PASS \
599 "Head to head: list 0 first element"
600 test ll_move_l0e1h_0_last t_ll_move PASS \
601 "Head to head: list 0 last element"
602 test ll_move_l0e1h_0/0_next t_ll_move PASS \
603 "Head to head: list 0 element 0 next pointer"
604 test ll_move_l0e1h_0/0_prev t_ll_move PASS \
605 "Head to head: list 0 element 0 previous pointer"
606 test ll_move_l0e1h_0/0_head t_ll_move PASS \
607 "Head to head: list 0 element 0 head pointer"
608 test ll_move_l0e1h_0/1_next t_ll_move PASS \
609 "Head to head: list 0 element 1 next pointer"
610 test ll_move_l0e1h_0/1_prev t_ll_move PASS \
611 "Head to head: list 0 element 1 previous pointer"
612 test ll_move_l0e1h_0/1_head t_ll_move PASS \
613 "Head to head: list 0 element 1 head pointer"
614 test ll_move_l0e1h_0/2_next t_ll_move PASS \
615 "Head to head: list 0 element 2 next pointer"
616 test ll_move_l0e1h_0/2_prev t_ll_move PASS \
617 "Head to head: list 0 element 2 previous pointer"
618 test ll_move_l0e1h_0/2_head t_ll_move PASS \
619 "Head to head: list 0 element 2 head pointer"
620 test ll_move_l0e1h_0/3_next t_ll_move PASS \
621 "Head to head: list 0 element 3 next pointer"
622 test ll_move_l0e1h_0/3_prev t_ll_move PASS \
623 "Head to head: list 0 element 3 previous pointer"
624 test ll_move_l0e1h_0/3_head t_ll_move PASS \
625 "Head to head: list 0 element 3 head pointer"
626 test ll_move_l0e1h_0/4_next t_ll_move PASS \
627 "Head to head: list 0 element 4 next pointer"
628 test ll_move_l0e1h_0/4_prev t_ll_move PASS \
629 "Head to head: list 0 element 4 previous pointer"
630 test ll_move_l0e1h_0/4_head t_ll_move PASS \
631 "Head to head: list 0 element 4 head pointer"
633 test ll_move_l0e0t t_ll_move PASS \
634 "Test moving tail element to tail of list"
636 test ll_move_l0e0t_0_count t_ll_move PASS \
637 "Tail to tail: list 0 element count"
638 test ll_move_l0e0t_0_first t_ll_move PASS \
639 "Tail to tail: list 0 first element"
640 test ll_move_l0e0t_0_last t_ll_move PASS \
641 "Tail to tail: list 0 last element"
642 test ll_move_l0e0t_0/0_next t_ll_move PASS \
643 "Tail to tail: list 0 element 0 next pointer"
644 test ll_move_l0e0t_0/0_prev t_ll_move PASS \
645 "Tail to tail: list 0 element 0 previous pointer"
646 test ll_move_l0e0t_0/0_head t_ll_move PASS \
647 "Tail to tail: list 0 element 0 head pointer"
648 test ll_move_l0e0t_0/1_next t_ll_move PASS \
649 "Tail to tail: list 0 element 1 next pointer"
650 test ll_move_l0e0t_0/1_prev t_ll_move PASS \
651 "Tail to tail: list 0 element 1 previous pointer"
652 test ll_move_l0e0t_0/1_head t_ll_move PASS \
653 "Tail to tail: list 0 element 1 head pointer"
654 test ll_move_l0e0t_0/2_next t_ll_move PASS \
655 "Tail to tail: list 0 element 2 next pointer"
656 test ll_move_l0e0t_0/2_prev t_ll_move PASS \
657 "Tail to tail: list 0 element 2 previous pointer"
658 test ll_move_l0e0t_0/2_head t_ll_move PASS \
659 "Tail to tail: list 0 element 2 head pointer"
660 test ll_move_l0e0t_0/3_next t_ll_move PASS \
661 "Tail to tail: list 0 element 3 next pointer"
662 test ll_move_l0e0t_0/3_prev t_ll_move PASS \
663 "Tail to tail: list 0 element 3 previous pointer"
664 test ll_move_l0e0t_0/3_head t_ll_move PASS \
665 "Tail to tail: list 0 element 3 head pointer"
666 test ll_move_l0e0t_0/4_next t_ll_move PASS \
667 "Tail to tail: list 0 element 4 next pointer"
668 test ll_move_l0e0t_0/4_prev t_ll_move PASS \
669 "Tail to tail: list 0 element 4 previous pointer"
670 test ll_move_l0e0t_0/4_head t_ll_move PASS \
671 "Tail to tail: list 0 element 4 head pointer"
673 program t_ll_remove t_ll_remove \
674 "Test linked list element removal"
675 t_ll_remove: t_ll_add
677 test ll_remove_baseline_0_count t_ll_remove PASS \
678 "Baseline list 0 element count"
679 test ll_remove_baseline_0_first t_ll_remove PASS \
680 "Baseline list 0 first element"
681 test ll_remove_baseline_0_last t_ll_remove PASS \
682 "Baseline list 0 last element"
684 test ll_remove_baseline_1_count t_ll_remove PASS \
685 "Baseline list 1 element count"
686 test ll_remove_baseline_1_first t_ll_remove PASS \
687 "Baseline list 1 first element"
688 test ll_remove_baseline_1_last t_ll_remove PASS \
689 "Baseline list 1 last element"
691 test ll_remove_noargs t_ll_remove PASS \
692 "Test ll_remove() with no valid arguments"
693 test ll_remove_badlist t_ll_remove PASS \
694 "Test ll_remove() with bad list"
695 test ll_remove_badelem t_ll_remove PASS \
696 "Test ll_remove() with bad element"
698 test ll_remove_unused t_ll_remove PASS \
699 "Test ll_remove() with unused element"
701 test ll_remove_wronglist t_ll_remove PASS \
702 "Test ll_remove() with wrong list"
704 test ll_remove_l1e8 t_ll_remove PASS \
705 "Test removing an item from one-item list"
706 test ll_remove_l1e8_1_count t_ll_remove PASS \
707 "Test removing an item from one-item list: element count"
708 test ll_remove_l1e8_1_first t_ll_remove PASS \
709 "Test removing an item from one-item list: first element"
710 test ll_remove_l1e8_1_last t_ll_remove PASS \
711 "Test removing an item from one-item list: last element"
713 test ll_remove_l0e0 t_ll_remove PASS \
714 "Test removal of head"
715 test ll_remove_l0e0_0_count t_ll_remove PASS \
716 "Test removal of head: element count"
717 test ll_remove_l0e0_0_first t_ll_remove PASS \
718 "Test removal of head: first element"
719 test ll_remove_l0e0_0_last t_ll_remove PASS \
720 "Test removal of head: last element"
721 test ll_remove_l0e0_0/1_next t_ll_remove PASS \
722 "Test removal of head: upper neighbor next pointer"
723 test ll_remove_l0e0_0/1_prev t_ll_remove PASS \
724 "Test removal of head: upper neighbor prev pointer"
725 test ll_remove_l0e0_0/1_head t_ll_remove PASS \
726 "Test removal of head: upper neighbor head pointer"
728 test ll_remove_l0e7 t_ll_remove PASS \
729 "Test removal of tail"
730 test ll_remove_l0e7_0_count t_ll_remove PASS \
731 "Test removal of tail: element count"
732 test ll_remove_l0e7_0_first t_ll_remove PASS \
733 "Test removal of tail: first element"
734 test ll_remove_l0e7_0_last t_ll_remove PASS \
735 "Test removal of tail: last element"
736 test ll_remove_l0e7_0/6_next t_ll_remove PASS \
737 "Test removal of tail: lower neighbor next pointer"
738 test ll_remove_l0e7_0/6_prev t_ll_remove PASS \
739 "Test removal of tail: lower neighbor prev pointer"
740 test ll_remove_l0e7_0/6_head t_ll_remove PASS \
741 "Test removal of tail: lower neighbor head pointer"
743 test ll_remove_l0e3 t_ll_remove PASS \
744 "Test removal of middle"
745 test ll_remove_l0e3_0_count t_ll_remove PASS \
746 "Test removal of middle: element count"
747 test ll_remove_l0e3_0_first t_ll_remove PASS \
748 "Test removal of middle: first element"
749 test ll_remove_l0e3_0_last t_ll_remove PASS \
750 "Test removal of middle: last element"
751 test ll_remove_l0e3_0/2_next t_ll_remove PASS \
752 "Test removal of middle: lower neighbor next pointer"
753 test ll_remove_l0e3_0/2_prev t_ll_remove PASS \
754 "Test removal of middle: lower neighbor prev pointer"
755 test ll_remove_l0e3_0/2_head t_ll_remove PASS \
756 "Test removal of middle: lower neighbor head pointer"
757 test ll_remove_l0e3_0/4_next t_ll_remove PASS \
758 "Test removal of middle: upper neighbor next pointer"
759 test ll_remove_l0e3_0/4_prev t_ll_remove PASS \
760 "Test removal of middle: upper neighbor prev pointer"
761 test ll_remove_l0e3_0/4_head t_ll_remove PASS \
762 "Test removal of middle: upper neighbor head pointer"
764 program t_ll_find t_ll_find \
765 "Test linked list element lookup"
768 test ll_find_baseline_l0_count t_ll_find PASS \
769 "Baseline list 0 element count"
770 test ll_find_baseline_l0_first t_ll_find PASS \
771 "Baseline list 0 first element"
772 test ll_find_baseline_l0_last t_ll_find PASS \
773 "Baseline list 0 last element"
775 test ll_find_baseline_l1_count t_ll_find PASS \
776 "Baseline list 1 element count"
777 test ll_find_baseline_l1_first t_ll_find PASS \
778 "Baseline list 1 first element"
779 test ll_find_baseline_l1_last t_ll_find PASS \
780 "Baseline list 1 last element"
782 test ll_find_noargs t_ll_find PASS \
783 "Test ll_find() with no valid arguments"
784 test ll_find_badlist t_ll_find PASS \
785 "Test ll_find() with bad list"
786 test ll_find_badresult t_ll_find PASS \
787 "Test ll_find() with bad result"
788 test ll_find_badcompare t_ll_find PASS \
789 "Test ll_find() with bad comparison function"
790 test ll_find_badstart t_ll_find PASS \
791 "Test ll_find() with bad start element"
792 test ll_find_badkey t_ll_find PASS \
793 "Test ll_find() with bad key pointer"
795 test ll_find_wrongtable t_ll_find PASS \
796 "Test ll_find() with start element in wrong table"
798 test ll_find_noentry t_ll_find PASS \
799 "Test ll_find() with non-existent entry"
801 test ll_find_oneentry t_ll_find PASS \
802 "Search for element in one-element list"
803 test ll_find_oneentry_result t_ll_find PASS \
804 "Search for element in one-element list: correct result"
806 test ll_find_head t_ll_find PASS \
807 "Search for head element"
808 test ll_find_head_result t_ll_find PASS \
809 "Search for head element: correct result"
811 test ll_find_tail t_ll_find PASS \
812 "Search for tail element"
813 test ll_find_tail_result t_ll_find PASS \
814 "Search for tail element: correct result"
816 test ll_find_middle t_ll_find PASS \
817 "Search for middle element"
818 test ll_find_middle_result t_ll_find PASS \
819 "Search for middle element: correct result"
821 test ll_find_start t_ll_find PASS \
822 "Search for element given start"
823 test ll_find_start_result t_ll_find PASS \
824 "Search for element given start: correct result"
826 program t_ll_iter t_ll_iter \
827 "Test linked list element iteration"
830 test ll_iter_baseline_count t_ll_iter PASS \
831 "Baseline list element count"
832 test ll_iter_baseline_first t_ll_iter PASS \
833 "Baseline list first element"
834 test ll_iter_baseline_last t_ll_iter PASS \
835 "Baseline list last element"
837 test ll_iter_noargs t_ll_iter PASS \
838 "Test ll_iter() with no valid arguments"
839 test ll_iter_badlist t_ll_iter PASS \
840 "Test ll_iter() with bad list"
841 test ll_iter_badfunc t_ll_iter PASS \
842 "Test ll_iter() with bad iteration function"
844 test ll_iter_funcreturn t_ll_iter PASS \
845 "Test that ll_iter() returns with return value of callback"
847 test ll_iter_funchead_e0 t_ll_iter PASS \
848 "Test that list heads match on element 0"
849 test ll_iter_funcelem_e0 t_ll_iter PASS \
850 "Test that elements match on element 0"
851 test ll_iter_funchead_e1 t_ll_iter PASS \
852 "Test that list heads match on element 1"
853 test ll_iter_funcelem_e1 t_ll_iter PASS \
854 "Test that elements match on element 1"
855 test ll_iter_funchead_e2 t_ll_iter PASS \
856 "Test that list heads match on element 2"
857 test ll_iter_funcelem_e2 t_ll_iter PASS \
858 "Test that elements match on element 2"
859 test ll_iter_funchead_e3 t_ll_iter PASS \
860 "Test that list heads match on element 3"
861 test ll_iter_funcelem_e3 t_ll_iter PASS \
862 "Test that elements match on element 3"
863 test ll_iter_funchead_e4 t_ll_iter PASS \
864 "Test that list heads match on element 4"
865 test ll_iter_funcelem_e4 t_ll_iter PASS \
866 "Test that elements match on element 4"
868 test ll_iter_function t_ll_iter PASS \
869 "Test ll_iter() returns success"
871 test ll_iter_func_count t_ll_iter PASS \
872 "Test ll_iter() covers all elements"
874 program t_ll_flush t_ll_flush \
875 "Test linked list flushing"
876 t_ll_flush: t_ll_add t_ll_remove
878 test ll_flush_baseline_l0_count t_ll_flush PASS \
879 "Baseline list 0 element count"
880 test ll_flush_baseline_l0_first t_ll_flush PASS \
881 "Baseline list 0 first element"
882 test ll_flush_baseline_l0_last t_ll_flush PASS \
883 "Baseline list 0 last element"
885 test ll_flush_baseline_l1_count t_ll_flush PASS \
886 "Baseline list 1 element count"
887 test ll_flush_baseline_l1_first t_ll_flush PASS \
888 "Baseline list 1 first element"
889 test ll_flush_baseline_l1_last t_ll_flush PASS \
890 "Baseline list 1 last element"
892 test ll_flush_noargs t_ll_flush PASS \
893 "Test ll_flush() with no valid arguments"
894 test ll_flush_badlist t_ll_flush PASS \
895 "Test ll_flush() with bad list"
897 test ll_flush_nofunc t_ll_flush PASS \
898 "Test ll_flush() with no flush function"
899 test ll_flush_nofunc_count t_ll_flush PASS \
900 "Test ll_flush() clears list: element count"
901 test ll_flush_nofunc_first t_ll_flush PASS \
902 "Test ll_flush() clears list: first element"
903 test ll_flush_nofunc_last t_ll_flush PASS \
904 "Test ll_flush() clears list: last element"
906 test ll_flush_funcreturn t_ll_flush PASS \
907 "Test ll_flush() returns with flush function return value"
908 test ll_flush_funcreturn_count t_ll_flush PASS \
909 "Test ll_flush() element removal: element count"
910 test ll_flush_funcreturn_first t_ll_flush PASS \
911 "Test ll_flush() element removal: first element"
912 test ll_flush_funcreturn_last t_ll_flush PASS \
913 "Test ll_flush() element removal: last element"
915 test ll_flush_funchead_e0 t_ll_flush PASS \
916 "Test that list heads match on element 0"
917 test ll_flush_funcelem_e0 t_ll_flush PASS \
918 "Test that elements match on element 0"
919 test ll_flush_funchead_e1 t_ll_flush PASS \
920 "Test that list heads match on element 1"
921 test ll_flush_funcelem_e1 t_ll_flush PASS \
922 "Test that elements match on element 1"
923 test ll_flush_funchead_e2 t_ll_flush PASS \
924 "Test that list heads match on element 2"
925 test ll_flush_funcelem_e2 t_ll_flush PASS \
926 "Test that elements match on element 2"
927 test ll_flush_funchead_e3 t_ll_flush PASS \
928 "Test that list heads match on element 3"
929 test ll_flush_funcelem_e3 t_ll_flush PASS \
930 "Test that elements match on element 3"
931 test ll_flush_funchead_e4 t_ll_flush PASS \
932 "Test that list heads match on element 4"
933 test ll_flush_funcelem_e4 t_ll_flush PASS \
934 "Test that elements match on element 4"
936 test ll_flush_function t_ll_flush PASS \
937 "Test ll_flush returns success"
939 test ll_flush_function_count t_ll_flush PASS \
940 "Test ll_flush() element removal: element count"
941 test ll_flush_function_first t_ll_flush PASS \
942 "Test ll_flush() element removal: first element"
943 test ll_flush_function_last t_ll_flush PASS \
944 "Test ll_flush() element removal: last element"
946 test ll_flush_func_count t_ll_flush PASS \
947 "Test ll_flush() covers all elements"
950 program t_ht_init t_ht_init \
951 "Test hash table initialization"
954 test ht_static_magic t_ht_init PASS \
955 "Test static initialization: magic number"
956 test ht_static_flags t_ht_init PASS \
957 "Test static initialization: flags"
958 test ht_static_modulus t_ht_init PASS \
959 "Test static initialization: modulus"
960 test ht_static_count t_ht_init PASS \
961 "Test static initialization: count"
962 test ht_static_rollover t_ht_init PASS \
963 "Test static initialization: rollover"
964 test ht_static_rollunder t_ht_init PASS \
965 "Test static initialization: rollunder"
966 test ht_static_func t_ht_init PASS \
967 "Test static initialization: hash function"
968 test ht_static_comp t_ht_init PASS \
969 "Test static initialization: comparison function"
970 test ht_static_rsize t_ht_init PASS \
971 "Test static initialization: resize callback"
972 test ht_static_extra t_ht_init PASS \
973 "Test static initialization: extra data"
974 test ht_static_table t_ht_init PASS \
975 "Test static initialization: table"
977 test ht_init_noargs t_ht_init PASS \
978 "Test ht_init() with no valid arguments"
979 test ht_init_notable t_ht_init PASS \
980 "Test ht_init() with no table"
981 test ht_init_nofunc t_ht_init PASS \
982 "Test ht_init() with no hash function"
983 test ht_init_nocomp t_ht_init PASS \
984 "Test ht_init() with no comparison function"
986 test ht_dynamic_nomod t_ht_init PASS \
987 "Test dynamic initialization (no modulus)"
988 test ht_dynamic_nomod_magic t_ht_init PASS \
989 "Test dynamic initialization (no modulus): magic number"
990 test ht_dynamic_nomod_flags t_ht_init PASS \
991 "Test dynamic initialization (no modulus): flags"
992 test ht_dynamic_nomod_modulus t_ht_init PASS \
993 "Test dynamic initialization (no modulus): modulus"
994 test ht_dynamic_nomod_count t_ht_init PASS \
995 "Test dynamic initialization (no modulus): count"
996 test ht_dynamic_nomod_rollover t_ht_init PASS \
997 "Test dynamic initialization (no modulus): rollover"
998 test ht_dynamic_nomod_rollunder t_ht_init PASS \
999 "Test dynamic initialization (no modulus): rollunder"
1000 test ht_dynamic_nomod_func t_ht_init PASS \
1001 "Test dynamic initialization (no modulus): hash function"
1002 test ht_dynamic_nomod_comp t_ht_init PASS \
1003 "Test dynamic initialization (no modulus): comparison function"
1004 test ht_dynamic_nomod_rsize t_ht_init PASS \
1005 "Test dynamic initialization (no modulus): resize callback"
1006 test ht_dynamic_nomod_extra t_ht_init PASS \
1007 "Test dynamic initialization (no modulus): extra data"
1008 test ht_dynamic_nomod_table t_ht_init PASS \
1009 "Test dynamic initialization (no modulus): table"
1011 test ht_dynamic_mod6 t_ht_init PASS \
1012 "Test dynamic initialization (modulus 6, round 7)"
1013 test ht_dynamic_mod6_magic t_ht_init PASS \
1014 "Test dynamic initialization (modulus 6, round 7): magic number"
1015 test ht_dynamic_mod6_flags t_ht_init PASS \
1016 "Test dynamic initialization (modulus 6, round 7): flags"
1017 test ht_dynamic_mod6_modulus t_ht_init PASS \
1018 "Test dynamic initialization (modulus 6, round 7): modulus"
1019 test ht_dynamic_mod6_count t_ht_init PASS \
1020 "Test dynamic initialization (modulus 6, round 7): count"
1021 test ht_dynamic_mod6_rollover t_ht_init PASS \
1022 "Test dynamic initialization (modulus 6, round 7): rollover"
1023 test ht_dynamic_mod6_rollunder t_ht_init PASS \
1024 "Test dynamic initialization (modulus 6, round 7): rollunder"
1025 test ht_dynamic_mod6_func t_ht_init PASS \
1026 "Test dynamic initialization (modulus 6, round 7): hash function"
1027 test ht_dynamic_mod6_comp t_ht_init PASS \
1028 "Test dynamic initialization (modulus 6, round 7): comparison function"
1029 test ht_dynamic_mod6_rsize t_ht_init PASS \
1030 "Test dynamic initialization (modulus 6, round 7): resize callback"
1031 test ht_dynamic_mod6_extra t_ht_init PASS \
1032 "Test dynamic initialization (modulus 6, round 7): extra data"
1033 test ht_dynamic_mod6_table t_ht_init PASS \
1034 "Test dynamic initialization (modulus 6, round 7): table"
1035 test ht_dynamic_mod6_bucket0 t_ht_init PASS \
1036 "Test dynamic initialization (modulus 6, round 7): bucket 0"
1037 test ht_dynamic_mod6_bucket1 t_ht_init PASS \
1038 "Test dynamic initialization (modulus 6, round 7): bucket 1"
1039 test ht_dynamic_mod6_bucket2 t_ht_init PASS \
1040 "Test dynamic initialization (modulus 6, round 7): bucket 2"
1041 test ht_dynamic_mod6_bucket3 t_ht_init PASS \
1042 "Test dynamic initialization (modulus 6, round 7): bucket 3"
1043 test ht_dynamic_mod6_bucket4 t_ht_init PASS \
1044 "Test dynamic initialization (modulus 6, round 7): bucket 4"
1045 test ht_dynamic_mod6_bucket5 t_ht_init PASS \
1046 "Test dynamic initialization (modulus 6, round 7): bucket 5"
1047 test ht_dynamic_mod6_bucket6 t_ht_init PASS \
1048 "Test dynamic initialization (modulus 6, round 7): bucket 6"
1050 program t_he_init t_he_init \
1051 "Test hash table entry initialization"
1052 t_he_init: t_le_init
1054 test he_static_magic t_he_init PASS \
1055 "Test static initialization: magic number"
1056 test he_static_elem t_he_init PASS \
1057 "Test static initialization: linked list element"
1058 test he_static_table t_he_init PASS \
1059 "Test static initialization: hash table pointer"
1060 test he_static_hash t_he_init PASS \
1061 "Test static initialization: hash value"
1062 test he_static_key t_he_init PASS \
1063 "Test static initialization: hash key"
1064 test he_static_keylen t_he_init PASS \
1065 "Test static initialization: hash key length"
1066 test he_static_value t_he_init PASS \
1067 "Test static initialization: value"
1069 test he_init_noargs t_he_init PASS \
1070 "Test he_init() with no valid arguments"
1072 test he_dynamic t_he_init PASS \
1073 "Test dynamic initialization"
1074 test he_dynamic_magic t_he_init PASS \
1075 "Test dynamic initialization: magic number"
1076 test he_dynamic_elem t_he_init PASS \
1077 "Test dynamic initialization: linked list element"
1078 test he_dynamic_table t_he_init PASS \
1079 "Test dynamic initialization: hash table pointer"
1080 test he_dynamic_hash t_he_init PASS \
1081 "Test dynamic initialization: hash value"
1082 test he_dynamic_key t_he_init PASS \
1083 "Test dynamic initialization: hash key"
1084 test he_dynamic_keylen t_he_init PASS \
1085 "Test dynamic initialization: hash key length"
1086 test he_dynamic_value t_he_init PASS \
1087 "Test dynamic initialization: value"
1089 # ht_add() and ht_find() are so intricately intertwined that they need
1090 # to be tested simultaneously.
1091 program t_ht_addfind t_ht_addfind \
1092 "Test hash table entry add and find"
1093 t_ht_addfind: t_ht_init t_ll_add
1095 test ht_find_noargs t_ht_addfind PASS \
1096 "Test ht_find() with no valid arguments"
1097 test ht_find_badtable t_ht_addfind PASS \
1098 "Test ht_find() with bad table"
1099 test ht_find_badkey t_ht_addfind PASS \
1100 "Test ht_find() with bad key"
1102 test ht_find_emptytable t_ht_addfind PASS \
1103 "Test ht_find() on an empty table"
1105 test ht_add_noargs t_ht_addfind PASS \
1106 "Test ht_add() with no valid arguments"
1107 test ht_add_badtable t_ht_addfind PASS \
1108 "Test ht_add() with bad table"
1109 test ht_add_badentry t_ht_addfind PASS \
1110 "Test ht_add() with bad entry"
1111 test ht_add_nokey t_ht_addfind PASS \
1112 "Test ht_add() with bad key"
1114 test ht_add_frozen t_ht_addfind PASS \
1115 "Test that ht_add() refuses to add entries to a frozen table"
1117 test ht_add_t1e5 t_ht_addfind PASS \
1118 "Add element 5 to hash table 1"
1120 test ht_add_busy t_ht_addfind PASS \
1121 "Test that ht_add() refuses to add busy entries to a table"
1123 test ht_find_t1e5 t_ht_addfind PASS \
1124 "Test that ht_find() can find an element"
1125 test ht_find_t1e5_entry t_ht_addfind PASS \
1126 "Test that ht_find() found the correct entry"
1127 test ht_find_t1e6 t_ht_addfind PASS \
1128 "Test that ht_find() fails to find non-existent entry"
1130 test ht_add_duplicate t_ht_addfind PASS \
1131 "Test that ht_add() refuses to add duplicate entries to a table"
1133 test ht_add_t0e0 t_ht_addfind PASS \
1134 "Add element 0 to hash table 0"
1135 test ht_add_t0e1 t_ht_addfind PASS \
1136 "Add element 1 to hash table 0"
1137 test ht_add_t0e2 t_ht_addfind PASS \
1138 "Add element 2 to hash table 0"
1139 test ht_add_t0e3 t_ht_addfind PASS \
1140 "Add element 3 to hash table 0"
1141 test ht_add_t0e4 t_ht_addfind PASS \
1142 "Add element 4 to hash table 0"
1144 test ht_find_t0e2 t_ht_addfind PASS \
1145 "Find element 2 in hash table 0"
1147 program t_ht_move t_ht_move \
1148 "Test hash table entry rekey"
1149 t_ht_move: t_ht_init t_ht_addfind t_ll_remove t_ll_add
1151 test ht_move_noargs t_ht_move PASS \
1152 "Test ht_move() with no valid arguments"
1153 test ht_move_badtable t_ht_move PASS \
1154 "Test ht_move() with bad hash table"
1155 test ht_move_badentry t_ht_move PASS \
1156 "Test ht_move() with bad hash entry"
1157 test ht_move_badkey t_ht_move PASS \
1158 "Test ht_move() with bad database key"
1160 test ht_move_unused t_ht_move PASS \
1161 "Test ht_move() excludes unused entries"
1162 test ht_move_wrongtable t_ht_move PASS \
1163 "Test ht_move() excludes entries in the wrong hash table"
1164 test ht_move_frozen t_ht_move PASS \
1165 "Test ht_move() excludes tables that are frozen"
1166 test ht_move_duplicate t_ht_move PASS \
1167 "Test ht_move() excludes duplicate keys"
1169 test ht_move_t0e0k6 t_ht_move PASS \
1170 "Test ht_move() successfully rekeys an entry"
1172 test ht_move_find_t0e0k0 t_ht_move PASS \
1173 "Test that no entry is available under the old key"
1174 test ht_move_find_t0e0k6 t_ht_move PASS \
1175 "Test that entry can be located under the new key"
1176 test ht_move_find_t0e0k6_entry t_ht_move PASS \
1177 "Test that entry under new key is the expected entry"
1179 program t_ht_remove t_ht_remove \
1180 "Test hash table entry removal"
1181 t_ht_remove: t_ht_init t_ht_addfind t_ll_remove
1183 test ht_remove_noargs t_ht_remove PASS \
1184 "Test ht_remove() with no valid arguments"
1185 test ht_remove_badtable t_ht_remove PASS \
1186 "Test ht_remove() with bad hash table"
1187 test ht_remove_badentry t_ht_remove PASS \
1188 "Test ht_remove() with bad hash table entry"
1190 test ht_remove_unused t_ht_remove PASS \
1191 "Test that ht_remove() excludes unused entries"
1192 test ht_remove_wrongtable t_ht_remove PASS \
1193 "Test that ht_remove() excludes entries in the wrong hash table"
1194 test ht_remove_frozen t_ht_remove PASS \
1195 "Test that ht_remove() excludes tables that are frozen"
1197 test ht_remove_t0e0 t_ht_remove PASS \
1198 "Test that ht_remove() removes entry 0 from table 0"
1199 test ht_remove_find_t0e0 t_ht_remove PASS \
1200 "Test that ht_remove() actually did remove the entry from the table"
1201 test ht_remove_t0e0_table t_ht_remove PASS \
1202 "Test that ht_remove() resets the entry's hash table pointer"
1203 test ht_remove_t0e0_count t_ht_remove PASS \
1204 "Test that ht_remove() updates table count"
1206 program t_ht_free t_ht_free \
1207 "Test hash table bucket free"
1208 t_ht_free: t_ht_init t_ht_addfind
1210 test ht_free_noargs t_ht_free PASS \
1211 "Test ht_free() with no valid arguments"
1212 test ht_free_badtable t_ht_free PASS \
1213 "Test ht_free() with bad hash table"
1215 test ht_free_frozen t_ht_free PASS \
1216 "Test that ht_free() excludes hash tables that are frozen"
1217 test ht_free_nonempty t_ht_free PASS \
1218 "Test that ht_free() excludes hash tables that are not empty"
1220 test ht_free_t0 t_ht_free PASS \
1221 "Free an empty table"
1222 test ht_free_t0_table t_ht_free PASS \
1223 "Verify that bucket pointer was cleared"
1225 program t_ht_iter t_ht_iter \
1226 "Test hash table entry iteration"
1227 t_ht_iter: t_ht_init t_ht_addfind
1229 test ht_iter_noargs t_ht_iter PASS \
1230 "Test ht_iter() with no valid arguments"
1231 test ht_iter_badtable t_ht_iter PASS \
1232 "Test ht_iter() with bad hash table"
1233 test ht_iter_baditer t_ht_iter PASS \
1234 "Test ht_iter() with bad iteration function"
1236 test ht_iter_frozen t_ht_iter PASS \
1237 "Test that ht_iter() excludes hash tables that are frozen"
1239 test ht_iter_funcreturn t_ht_iter PASS \
1240 "Test that ht_iter() returns iteration function return value"
1242 test ht_iter_functab_e0 t_ht_iter PASS \
1243 "Test that hash tables match while iterating over entry 0"
1244 test ht_iter_funcent_e0 t_ht_iter PASS \
1245 "Test that hash table entries match while iterating over entry 0"
1246 test ht_iter_functab_e1 t_ht_iter PASS \
1247 "Test that hash tables match while iterating over entry 1"
1248 test ht_iter_funcent_e1 t_ht_iter PASS \
1249 "Test that hash table entries match while iterating over entry 1"
1250 test ht_iter_functab_e2 t_ht_iter PASS \
1251 "Test that hash tables match while iterating over entry 2"
1252 test ht_iter_funcent_e2 t_ht_iter PASS \
1253 "Test that hash table entries match while iterating over entry 2"
1254 test ht_iter_functab_e3 t_ht_iter PASS \
1255 "Test that hash tables match while iterating over entry 3"
1256 test ht_iter_funcent_e3 t_ht_iter PASS \
1257 "Test that hash table entries match while iterating over entry 3"
1258 test ht_iter_functab_e4 t_ht_iter PASS \
1259 "Test that hash tables match while iterating over entry 4"
1260 test ht_iter_funcent_e4 t_ht_iter PASS \
1261 "Test that hash table entries match while iterating over entry 4"
1262 test ht_iter_functab_e5 t_ht_iter PASS \
1263 "Test that hash tables match while iterating over entry 5"
1264 test ht_iter_funcent_e5 t_ht_iter PASS \
1265 "Test that hash table entries match while iterating over entry 5"
1266 test ht_iter_functab_e6 t_ht_iter PASS \
1267 "Test that hash tables match while iterating over entry 6"
1268 test ht_iter_funcent_e6 t_ht_iter PASS \
1269 "Test that hash table entries match while iterating over entry 6"
1270 test ht_iter_functab_e7 t_ht_iter PASS \
1271 "Test that hash tables match while iterating over entry 7"
1272 test ht_iter_funcent_e7 t_ht_iter PASS \
1273 "Test that hash table entries match while iterating over entry 7"
1275 test ht_iter_function t_ht_iter PASS \
1276 "Test that ht_iter() iterates over hash table"
1277 test ht_iter_func_mask t_ht_iter PASS \
1278 "Test that ht_iter() visited all entries in the hash table"
1280 program t_ht_flush t_ht_flush \
1281 "Test hash table entry flush"
1282 t_ht_flush: t_ht_init t_ht_addfind t_ht_remove
1284 test ht_flush_noargs t_ht_flush PASS \
1285 "Test ht_flush() with no valid arguments"
1286 test ht_flush_badtable t_ht_flush PASS \
1287 "Test ht_flush() with bad hash table"
1289 test ht_flush_frozen t_ht_flush PASS \
1290 "Test that ht_flush() excludes hash tables that are frozen"
1292 test ht_flush_nofunc t_ht_flush PASS \
1293 "Test that ht_flush() with no flush function performs correctly"
1294 test ht_flush_nofunc_count t_ht_flush PASS \
1295 "Test that ht_flush() removes all items from the table"
1297 test ht_flush_functab_e0 t_ht_flush PASS \
1298 "Test that hash tables match while flushing entry 0"
1299 test ht_flush_funcent_e0 t_ht_flush PASS \
1300 "Test that hash table entries match while flushing entry 0"
1301 test ht_flush_functab_e1 t_ht_flush PASS \
1302 "Test that hash tables match while flushing entry 1"
1303 test ht_flush_funcent_e1 t_ht_flush PASS \
1304 "Test that hash table entries match while flushing entry 1"
1305 test ht_flush_functab_e2 t_ht_flush PASS \
1306 "Test that hash tables match while flushing entry 2"
1307 test ht_flush_funcent_e2 t_ht_flush PASS \
1308 "Test that hash table entries match while flushing entry 2"
1309 test ht_flush_functab_e3 t_ht_flush PASS \
1310 "Test that hash tables match while flushing entry 3"
1311 test ht_flush_funcent_e3 t_ht_flush PASS \
1312 "Test that hash table entries match while flushing entry 3"
1314 test ht_flush_funcreturn t_ht_flush PASS \
1315 "Test that ht_flush() returns flush function return value"
1316 test ht_flush_funcreturn_count t_ht_flush PASS \
1317 "Test that ht_flush() removed appropriate entry"
1319 test ht_flush_function t_ht_flush PASS \
1320 "Test that ht_flush() flushes tables with a flush function"
1321 test ht_flush_function_count t_ht_flush PASS \
1322 "Test that ht_flush() removes all entries when called with function"
1324 test ht_flush_func_mask t_ht_flush PASS \
1325 "Test that ht_flush() visited all entries in the hash table"
1327 program t_ht_resize t_ht_resize \
1328 "Test hash table resizing"
1329 t_ht_resize: t_ht_init t_ht_addfind t_ht_iter t_ht_remove t_ll_init \
1330 t_ll_remove t_ll_add
1332 test ht_resize_noargs t_ht_resize PASS \
1333 "Test ht_resize() with no valid arguments"
1334 test ht_resize_badtable t_ht_resize PASS \
1335 "Test ht_resize() with bad hash table"
1337 test ht_resize_frozen t_ht_resize PASS \
1338 "Test that ht_resize() excludes hash tables that are frozen"
1340 test ht_resize_current t_ht_resize PASS \
1341 "Test that ht_resize() to current count works"
1342 test ht_resize_current_mod t_ht_resize PASS \
1343 "Test that ht_resize() to current count set proper modulus"
1345 test ht_resize_shrink t_ht_resize PASS \
1346 "Test that ht_resize() to shrink works"
1347 test ht_resize_shrink_mod t_ht_resize PASS \
1348 "Test that ht_resize() to shrink set proper modulus"
1350 test ht_resize_grow t_ht_resize PASS \
1351 "Test that ht_resize() to grow works"
1352 test ht_resize_grow_mod t_ht_resize PASS \
1353 "Test that ht_resize() to grow set proper modulus"
1355 test ht_resize_functab_e0 t_ht_resize PASS \
1356 "Test that entry 0 has the proper hash table pointer"
1357 test ht_resize_funcent_e0 t_ht_resize PASS \
1358 "Test that entry 0 is the correct entry"
1359 test ht_resize_functab_e1 t_ht_resize PASS \
1360 "Test that entry 1 has the proper hash table pointer"
1361 test ht_resize_funcent_e1 t_ht_resize PASS \
1362 "Test that entry 1 is the correct entry"
1363 test ht_resize_functab_e2 t_ht_resize PASS \
1364 "Test that entry 2 has the proper hash table pointer"
1365 test ht_resize_funcent_e2 t_ht_resize PASS \
1366 "Test that entry 2 is the correct entry"
1367 test ht_resize_functab_e3 t_ht_resize PASS \
1368 "Test that entry 3 has the proper hash table pointer"
1369 test ht_resize_funcent_e3 t_ht_resize PASS \
1370 "Test that entry 3 is the correct entry"
1371 test ht_resize_functab_e4 t_ht_resize PASS \
1372 "Test that entry 4 has the proper hash table pointer"
1373 test ht_resize_funcent_e4 t_ht_resize PASS \
1374 "Test that entry 4 is the correct entry"
1375 test ht_resize_functab_e5 t_ht_resize PASS \
1376 "Test that entry 5 has the proper hash table pointer"
1377 test ht_resize_funcent_e5 t_ht_resize PASS \
1378 "Test that entry 5 is the correct entry"
1379 test ht_resize_functab_e6 t_ht_resize PASS \
1380 "Test that entry 6 has the proper hash table pointer"
1381 test ht_resize_funcent_e6 t_ht_resize PASS \
1382 "Test that entry 6 is the correct entry"
1383 test ht_resize_functab_e7 t_ht_resize PASS \
1384 "Test that entry 7 has the proper hash table pointer"
1385 test ht_resize_funcent_e7 t_ht_resize PASS \
1386 "Test that entry 7 is the correct entry"
1387 test ht_resize_elemchk t_ht_resize PASS \
1388 "Check that all entries are in the hash table by iteration"
1389 test ht_resize_funcmask t_ht_resize PASS \
1390 "Verify that all entries were iterated over"
1392 test ht_remove_autoshrink t_ht_resize PASS \
1393 "Test that ht_remove() performs autoshrink properly"
1394 test ht_remove_autoshrink_mod t_ht_resize PASS \
1395 "Test that autoshrink set proper modulus"
1397 test ht_resize_callerr_mod t_ht_resize PASS \
1398 "Test that table has not been resized prior to error callback"
1399 test ht_resize_callerr_newmod t_ht_resize PASS \
1400 "Test that new modulus is correct in error callback"
1401 test ht_resize_callerr t_ht_resize PASS \
1402 "Test that ht_resize() returns resize callback error"
1404 test ht_resize_callback_mod t_ht_resize PASS \
1405 "Test that table has not been resized prior to resize callback"
1406 test ht_resize_callback_newmod t_ht_resize PASS \
1407 "Test that new modulus is correct in error callback"
1409 test ht_resize_prep t_ht_resize PASS \
1410 "Shrink table in preparation for autogrow test"
1411 test ht_resize_prep_mod t_ht_resize PASS \
1412 "Verify that preparation set proper modulus"
1414 test ht_add_autogrow t_ht_resize PASS \
1415 "Test that ht_add() performs autogrow properly"
1416 test ht_add_autogrow_mod t_ht_resize PASS \
1417 "Test that autogrow set proper modulus"
1420 program t_st_init t_st_init \
1421 "Test sparse matrix table initialization"
1422 t_st_init: t_ht_init
1424 test st_static_magic t_st_init PASS \
1425 "Test static initialization: magic number"
1426 test st_static_htinit t_st_init PASS \
1427 "Test static initialization: hash table init"
1428 test st_static_hflags t_st_init PASS \
1429 "Test static initialization: flags"
1430 test st_static_hmodulus t_st_init PASS \
1431 "Test static initialization: modulus"
1432 test st_static_hfunc t_st_init PASS \
1433 "Test static initialization: hash function"
1434 test st_static_hcomp t_st_init PASS \
1435 "Test static initialization: hash comparison function"
1436 test st_static_hrsize t_st_init PASS \
1437 "Test static initialization: hash resize callback"
1438 test st_static_rsize t_st_init PASS \
1439 "Test static initialization: resize callback"
1440 test st_static_hextra t_st_init PASS \
1441 "Test static initialization: extra data"
1443 test st_init_noargs t_st_init PASS \
1444 "Test st_init() with no valid arguments"
1446 test st_dynamic_nomod t_st_init PASS \
1447 "Test dynamic initialization (no modulus)"
1448 test st_dynamic_nomod_magic t_st_init PASS \
1449 "Test dynamic initialization (no modulus): magic number"
1450 test st_dynamic_nomod_htinit t_st_init PASS \
1451 "Test dynamic initialization (no modulus): hash table init"
1452 test st_dynamic_nomod_hflags t_st_init PASS \
1453 "Test dynamic initialization (no modulus): flags"
1454 test st_dynamic_nomod_hmodulus t_st_init PASS \
1455 "Test dynamic initialization (no modulus): modulus"
1456 test st_dynamic_nomod_hfunc t_st_init PASS \
1457 "Test dynamic initialization (no modulus): hash function"
1458 test st_dynamic_nomod_hcomp t_st_init PASS \
1459 "Test dynamic initialization (no modulus): hash comparison function"
1460 test st_dynamic_nomod_hrsize t_st_init PASS \
1461 "Test dynamic initialization (no modulus): hash resize callback"
1462 test st_dynamic_nomod_rsize t_st_init PASS \
1463 "Test dynamic initialization (no modulus): resize callback"
1464 test st_dynamic_nomod_hextra t_st_init PASS \
1465 "Test dynamic initialization (no modulus): extra data"
1467 test st_dynamic_mod6 t_st_init PASS \
1468 "Test dynamic initialization (modulus 6, round 7)"
1469 test st_dynamic_mod6_magic t_st_init PASS \
1470 "Test dynamic initialization (modulus 6, round 7): magic number"
1471 test st_dynamic_mod6_htinit t_st_init PASS \
1472 "Test dynamic initialization (modulus 6, round 7): hash table init"
1473 test st_dynamic_mod6_hflags t_st_init PASS \
1474 "Test dynamic initialization (modulus 6, round 7): flags"
1475 test st_dynamic_mod6_hmodulus t_st_init PASS \
1476 "Test dynamic initialization (modulus 6, round 7): modulus"
1477 test st_dynamic_mod6_hfunc t_st_init PASS \
1478 "Test dynamic initialization (modulus 6, round 7): hash function"
1479 test st_dynamic_mod6_hcomp t_st_init PASS \
1480 "Test dynamic initialization (modulus 6, round 7): hash comparison function"
1481 test st_dynamic_mod6_hrsize t_st_init PASS \
1482 "Test dynamic initialization (modulus 6, round 7): hash resize callback"
1483 test st_dynamic_mod6_rsize t_st_init PASS \
1484 "Test dynamic initialization (modulus 6, round 7): resize callback"
1485 test st_dynamic_mod6_hextra t_st_init PASS \
1486 "Test dynamic initialization (modulus 6, round 7): extra data"