forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds test suite for integer based power function which performs integer exponentiation. The test suite is designed to verify that the implementation of int_pow correctly computes the power of a given base raised to a given exponent. The tests check various scenarios and edge cases to ensure the accuracy and reliability of the exponentiation function. Updated commit with test information at commit time: Shuah Khan Signed-off-by: Luis Felipe Hernandez <[email protected]> Reviewed-by: David Gow <[email protected]> Signed-off-by: Shuah Khan <[email protected]>
- Loading branch information
1 parent
e4835f1
commit 7fcc9b5
Showing
4 changed files
with
72 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
|
||
obj-$(CONFIG_INT_POW_TEST) += int_pow_kunit.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
|
||
#include <kunit/test.h> | ||
#include <linux/math.h> | ||
|
||
struct test_case_params { | ||
u64 base; | ||
unsigned int exponent; | ||
u64 expected_result; | ||
const char *name; | ||
}; | ||
|
||
static const struct test_case_params params[] = { | ||
{ 64, 0, 1, "Power of zero" }, | ||
{ 64, 1, 64, "Power of one"}, | ||
{ 0, 5, 0, "Base zero" }, | ||
{ 1, 64, 1, "Base one" }, | ||
{ 2, 2, 4, "Two squared"}, | ||
{ 2, 3, 8, "Two cubed"}, | ||
{ 5, 5, 3125, "Five raised to the fifth power" }, | ||
{ U64_MAX, 1, U64_MAX, "Max base" }, | ||
{ 2, 63, 9223372036854775808ULL, "Large result"}, | ||
}; | ||
|
||
static void get_desc(const struct test_case_params *tc, char *desc) | ||
{ | ||
strscpy(desc, tc->name, KUNIT_PARAM_DESC_SIZE); | ||
} | ||
|
||
KUNIT_ARRAY_PARAM(int_pow, params, get_desc); | ||
|
||
static void int_pow_test(struct kunit *test) | ||
{ | ||
const struct test_case_params *tc = (const struct test_case_params *)test->param_value; | ||
|
||
KUNIT_EXPECT_EQ(test, tc->expected_result, int_pow(tc->base, tc->exponent)); | ||
} | ||
|
||
static struct kunit_case math_int_pow_test_cases[] = { | ||
KUNIT_CASE_PARAM(int_pow_test, int_pow_gen_params), | ||
{} | ||
}; | ||
|
||
static struct kunit_suite int_pow_test_suite = { | ||
.name = "math-int_pow", | ||
.test_cases = math_int_pow_test_cases, | ||
}; | ||
|
||
kunit_test_suites(&int_pow_test_suite); | ||
|
||
MODULE_DESCRIPTION("math.int_pow KUnit test suite"); | ||
MODULE_LICENSE("GPL"); |