mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 17:17:04 -04:00
bcachefs: add eytzinger0_find_gt self test
Add an eytzinger0_find_gt() self test similar to eytzinger0_find_le(). Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
committed by
Kent Overstreet
parent
d384dada0e
commit
d7cd33f7ef
@@ -825,9 +825,47 @@ static void eytzinger0_find_test_le(u16 *test_array, unsigned nr, u16 search)
|
||||
}
|
||||
}
|
||||
|
||||
static void eytzinger0_find_test_gt(u16 *test_array, unsigned nr, u16 search)
|
||||
{
|
||||
int r, s;
|
||||
bool bad;
|
||||
|
||||
r = eytzinger0_find_gt(test_array, nr,
|
||||
sizeof(test_array[0]),
|
||||
cmp_u16, &search);
|
||||
if (r >= 0) {
|
||||
if (test_array[r] <= search) {
|
||||
bad = true;
|
||||
} else {
|
||||
s = eytzinger0_prev(r, nr);
|
||||
bad = s >= 0 && test_array[s] > search;
|
||||
}
|
||||
} else {
|
||||
s = eytzinger0_first(nr);
|
||||
bad = s >= 0 && test_array[s] > search;
|
||||
}
|
||||
|
||||
if (bad) {
|
||||
s = -1;
|
||||
eytzinger0_for_each(j, nr) {
|
||||
if (test_array[j] > search) {
|
||||
s = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
eytzinger0_for_each(j, nr)
|
||||
pr_info("[%3u] = %12u\n", j, test_array[j]);
|
||||
pr_info("find_gt(%12u) = %3i should be %3i\n",
|
||||
search, r, s);
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
||||
static void eytzinger0_find_test_val(u16 *test_array, unsigned nr, u16 search)
|
||||
{
|
||||
eytzinger0_find_test_le(test_array, nr, search);
|
||||
eytzinger0_find_test_gt(test_array, nr, search);
|
||||
}
|
||||
|
||||
void eytzinger0_find_test(void)
|
||||
|
||||
Reference in New Issue
Block a user