From b7e7e660269106f0c56061c770704a5e5504a98c Mon Sep 17 00:00:00 2001 From: Dongdong Zhang Date: Mon, 1 Jul 2024 10:30:06 +0800 Subject: [PATCH] lib: tests: add math test suite This patch introduces a new math test suite to the SBI unit tests. The changes include: * Updating lib/sbi/tests/objects.mk to include math_test_suite and sbi_math_test.o. * Adding a new file lib/sbi/tests/sbi_math_test.c which contains tests for log2roundup function using various cases. The addition of this test suite ensures that mathematical functions are verified and work as expected. Signed-off-by: Dongdong Zhang Reviewed-by: Anup Patel --- lib/sbi/tests/objects.mk | 3 +++ lib/sbi/tests/sbi_math_test.c | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 lib/sbi/tests/sbi_math_test.c diff --git a/lib/sbi/tests/objects.mk b/lib/sbi/tests/objects.mk index 369b2829..16608fae 100644 --- a/lib/sbi/tests/objects.mk +++ b/lib/sbi/tests/objects.mk @@ -12,3 +12,6 @@ libsbi-objs-$(CONFIG_SBIUNIT) += tests/riscv_atomic_test.o carray-sbi_unit_tests-$(CONFIG_SBIUNIT) += locks_test_suite libsbi-objs-$(CONFIG_SBIUNIT) += tests/riscv_locks_test.o + +carray-sbi_unit_tests-$(CONFIG_SBIUNIT) += math_test_suite +libsbi-objs-$(CONFIG_SBIUNIT) += tests/sbi_math_test.o \ No newline at end of file diff --git a/lib/sbi/tests/sbi_math_test.c b/lib/sbi/tests/sbi_math_test.c new file mode 100644 index 00000000..81ed8324 --- /dev/null +++ b/lib/sbi/tests/sbi_math_test.c @@ -0,0 +1,46 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright 2024 Beijing ESWIN Computing Technology Co., Ltd. + * + * Author: Dongdong Zhang + */ +#include +#include + +static void log2roundup_test(struct sbiunit_test_case *test) +{ + struct { + unsigned long input; + unsigned long expected; + } cases[] = { + {1, 0}, + {2, 1}, + {3, 2}, + {4, 2}, + {5, 3}, + {8, 3}, + {9, 4}, + {15, 4}, + {16, 4}, + {17, 5}, + {31, 5}, + {32, 5}, + {33, 6}, + {63, 6}, + {64, 6}, + {65, 7}, + }; + + for (int i = 0; i < sizeof(cases)/sizeof(cases[0]); i++) { + unsigned long result = log2roundup(cases[i].input); + SBIUNIT_EXPECT_EQ(test, result, cases[i].expected); + } +} + +static struct sbiunit_test_case math_test_cases[] = { + SBIUNIT_TEST_CASE(log2roundup_test), + SBIUNIT_END_CASE, +}; + +SBIUNIT_TEST_SUITE(math_test_suite, math_test_cases);