mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 18:52:02 +00:00
54ce43da25
The addition of an if statement in lib/sort to handle the final unsorted 2 or 3 elements is not covered by existing test cases, leading to incomplete test coverage. To ensure comprehensive testing and maintain 100% code coverage, add a new testcase for scenarios where the if statement is triggered. Since the if statement is only triggered when the array length is odd and the first element is greater than the second element, a testcase is created using an array length of TEST_LEN - 1 and a suitable random seed to maintain full code coverage. Link: https://lkml.kernel.org/r/20240527203011.1644280-5-visitorckw@gmail.com Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> Cc: Ching-Chun (Jim) Huang <jserv@ccns.ncku.edu.tw> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
61 lines
1.1 KiB
C
61 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
#include <kunit/test.h>
|
|
|
|
#include <linux/sort.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/module.h>
|
|
|
|
/* a simple boot-time regression test */
|
|
|
|
#define TEST_LEN 1000
|
|
|
|
static int cmpint(const void *a, const void *b)
|
|
{
|
|
return *(int *)a - *(int *)b;
|
|
}
|
|
|
|
static void test_sort(struct kunit *test)
|
|
{
|
|
int *a, i, r = 1;
|
|
|
|
a = kunit_kmalloc_array(test, TEST_LEN, sizeof(*a), GFP_KERNEL);
|
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, a);
|
|
|
|
for (i = 0; i < TEST_LEN; i++) {
|
|
r = (r * 725861) % 6599;
|
|
a[i] = r;
|
|
}
|
|
|
|
sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);
|
|
|
|
for (i = 0; i < TEST_LEN - 1; i++)
|
|
KUNIT_ASSERT_LE(test, a[i], a[i + 1]);
|
|
|
|
r = 48;
|
|
|
|
for (i = 0; i < TEST_LEN - 1; i++) {
|
|
r = (r * 725861) % 6599;
|
|
a[i] = r;
|
|
}
|
|
|
|
sort(a, TEST_LEN - 1, sizeof(*a), cmpint, NULL);
|
|
|
|
for (i = 0; i < TEST_LEN - 2; i++)
|
|
KUNIT_ASSERT_LE(test, a[i], a[i + 1]);
|
|
}
|
|
|
|
static struct kunit_case sort_test_cases[] = {
|
|
KUNIT_CASE(test_sort),
|
|
{}
|
|
};
|
|
|
|
static struct kunit_suite sort_test_suite = {
|
|
.name = "lib_sort",
|
|
.test_cases = sort_test_cases,
|
|
};
|
|
|
|
kunit_test_suites(&sort_test_suite);
|
|
|
|
MODULE_LICENSE("GPL");
|