1 /* 2 * Copyright (c) 2026 Faraz Vahedi <kfv@FreeBSD.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7 #ifndef _TEST_SEARCH_H 8 #define _TEST_SEARCH_H 9 10 #include <sys/param.h> 11 12 #include <stddef.h> 13 14 #include <atf-c.h> 15 16 #define SVEC_LEN 1024 17 18 typedef const void *search_int_t(const int *, const int *, size_t, void *); 19 20 static int 21 searchhelp(const void *a, const void *b) 22 { 23 const int *oa = a, *ob = b; 24 25 return ((*oa > *ob) - (*oa < *ob)); 26 } 27 28 /* 29 * Fill v[i] = i, then confirm every element is found and -1 and n are not. 30 */ 31 static void 32 check_sorted_search(search_int_t *search, void *ctx, int *v, size_t n) 33 { 34 size_t i; 35 int key; 36 37 for (i = 0; i < n; i++) 38 v[i] = (int)i; 39 for (i = 0; i < n; i++) { 40 key = v[i]; 41 ATF_CHECK(search(&key, v, n, ctx) == &v[i]); 42 } 43 if (n != 0) { 44 key = -1; 45 ATF_CHECK(search(&key, v, n, ctx) == NULL); 46 key = (int)n; 47 ATF_CHECK(search(&key, v, n, ctx) == NULL); 48 } 49 } 50 51 #endif /* !_TEST_SEARCH_H */ 52