On Sat, Apr 6, 2024 at 9:48 AM Kuan-Wei Chiu <visitorckw@xxxxxxxxx> wrote: > > Add test cases for the min_heap_del() to ensure its functionality is > thoroughly tested. > > Signed-off-by: Kuan-Wei Chiu <visitorckw@xxxxxxxxx> Reviewed-by: Ian Rogers <irogers@xxxxxxxxxx> Thanks, Ian > --- > lib/test_min_heap.c | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/lib/test_min_heap.c b/lib/test_min_heap.c > index 67dd4f644f6c..9d4bbb590a49 100644 > --- a/lib/test_min_heap.c > +++ b/lib/test_min_heap.c > @@ -160,6 +160,40 @@ static __init int test_heap_pop_push(bool min_heap) > return err; > } > > +static __init int test_heap_del(bool min_heap) > +{ > + int values[] = { 3, 1, 2, 4, 0x8000000, 0x7FFFFFF, 0, > + -3, -1, -2, -4, 0x8000000, 0x7FFFFFF }; > + struct min_heap_test heap; > + > + min_heap_init(&heap, values, ARRAY_SIZE(values)); > + heap.nr = ARRAY_SIZE(values); > + struct min_heap_callbacks funcs = { > + .less = min_heap ? less_than : greater_than, > + .swp = swap_ints, > + }; > + int i, err; > + > + /* Test with known set of values. */ > + min_heapify_all(&heap, &funcs, NULL); > + for (i = 0; i < ARRAY_SIZE(values) / 2; i++) > + min_heap_del(&heap, get_random_u32() % heap.nr, &funcs, NULL); > + err = pop_verify_heap(min_heap, &heap, &funcs); > + > + > + /* Test with randomly generated values. */ > + heap.nr = ARRAY_SIZE(values); > + for (i = 0; i < heap.nr; i++) > + values[i] = get_random_u32(); > + min_heapify_all(&heap, &funcs, NULL); > + > + for (i = 0; i < ARRAY_SIZE(values) / 2; i++) > + min_heap_del(&heap, get_random_u32() % heap.nr, &funcs, NULL); > + err += pop_verify_heap(min_heap, &heap, &funcs); > + > + return err; > +} > + > static int __init test_min_heap_init(void) > { > int err = 0; > @@ -170,6 +204,8 @@ static int __init test_min_heap_init(void) > err += test_heap_push(false); > err += test_heap_pop_push(true); > err += test_heap_pop_push(false); > + err += test_heap_del(true); > + err += test_heap_del(false); > if (err) { > pr_err("test failed with %d errors\n", err); > return -EINVAL; > -- > 2.34.1 >