162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#include <kunit/test.h> 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/sort.h> 662306a36Sopenharmony_ci#include <linux/slab.h> 762306a36Sopenharmony_ci#include <linux/module.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci/* a simple boot-time regression test */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#define TEST_LEN 1000 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cistatic int cmpint(const void *a, const void *b) 1462306a36Sopenharmony_ci{ 1562306a36Sopenharmony_ci return *(int *)a - *(int *)b; 1662306a36Sopenharmony_ci} 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistatic void test_sort(struct kunit *test) 1962306a36Sopenharmony_ci{ 2062306a36Sopenharmony_ci int *a, i, r = 1; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci a = kunit_kmalloc_array(test, TEST_LEN, sizeof(*a), GFP_KERNEL); 2362306a36Sopenharmony_ci KUNIT_ASSERT_NOT_ERR_OR_NULL(test, a); 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci for (i = 0; i < TEST_LEN; i++) { 2662306a36Sopenharmony_ci r = (r * 725861) % 6599; 2762306a36Sopenharmony_ci a[i] = r; 2862306a36Sopenharmony_ci } 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci sort(a, TEST_LEN, sizeof(*a), cmpint, NULL); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci for (i = 0; i < TEST_LEN-1; i++) 3362306a36Sopenharmony_ci KUNIT_ASSERT_LE(test, a[i], a[i + 1]); 3462306a36Sopenharmony_ci} 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cistatic struct kunit_case sort_test_cases[] = { 3762306a36Sopenharmony_ci KUNIT_CASE(test_sort), 3862306a36Sopenharmony_ci {} 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cistatic struct kunit_suite sort_test_suite = { 4262306a36Sopenharmony_ci .name = "lib_sort", 4362306a36Sopenharmony_ci .test_cases = sort_test_cases, 4462306a36Sopenharmony_ci}; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_cikunit_test_suites(&sort_test_suite); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 49