Skip to content

Commit 5836639

Browse files
committed
feat overflow: added selftest testsuite
Signed-off-by: John Sanpe <sanpeqf@gmail.com>
1 parent 6fc6f64 commit 5836639

File tree

4 files changed

+78
-0
lines changed

4 files changed

+78
-0
lines changed

testsuite/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ add_subdirectory(libc)
1515
add_subdirectory(list)
1616
add_subdirectory(memalloc)
1717
add_subdirectory(mpi)
18+
add_subdirectory(overflow)
1819
add_subdirectory(slist)

testsuite/overflow/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# SPDX-License-Identifier: GPL-2.0-or-later
2+
/overflow-selftest

testsuite/overflow/CMakeLists.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# SPDX-License-Identifier: GPL-2.0-or-later
2+
#
3+
# Copyright(c) 2025 John Sanpe <sanpeqf@gmail.com>
4+
#
5+
6+
add_executable(overflow-selftest selftest.c)
7+
target_link_libraries(overflow-selftest bfdev testsuite)
8+
add_test(overflow-selftest overflow-selftest)
9+
10+
if(${CMAKE_PROJECT_NAME} STREQUAL "bfdev")
11+
install(TARGETS
12+
overflow-selftest
13+
DESTINATION
14+
${CMAKE_INSTALL_DOCDIR}/testsuite
15+
)
16+
endif()

testsuite/overflow/selftest.c

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/* SPDX-License-Identifier: GPL-2.0-or-later */
2+
/*
3+
* Copyright(c) 2023 John Sanpe <sanpeqf@gmail.com>
4+
*/
5+
6+
#define MODULE_NAME "overflow-simple"
7+
#define bfdev_log_fmt(fmt) MODULE_NAME ": " fmt
8+
9+
#include <stddef.h>
10+
#include <limits.h>
11+
#include <stdbool.h>
12+
#include <bfdev/log.h>
13+
#include <bfdev/overflow.h>
14+
#include <testsuite.h>
15+
16+
#define TEST(calculate, limit) ({ \
17+
bool cond; \
18+
cond = bfdev_overflow_##calculate((limit), 1) == (limit); \
19+
if (!cond) \
20+
failed = true; \
21+
cond ? "okay" : "failed"; \
22+
})
23+
24+
TESTSUITE(
25+
"overflow:selftest", NULL, NULL,
26+
"overflow selftest"
27+
) {
28+
bool failed;
29+
30+
failed = false;
31+
bfdev_log_info("add char: %s\n", TEST(add, (char)SCHAR_MAX));
32+
bfdev_log_info("add short: %s\n", TEST(add, (short)SHRT_MAX));
33+
bfdev_log_info("add int: %s\n", TEST(add, (int)INT_MAX));
34+
bfdev_log_info("add long: %s\n", TEST(add, (long)LONG_MAX));
35+
bfdev_log_info("add long long: %s\n", TEST(add, (long long)LLONG_MAX));
36+
37+
bfdev_log_info("add unsigned char: %s\n", TEST(add, (unsigned char)UCHAR_MAX));
38+
bfdev_log_info("add unsigned short: %s\n", TEST(add, (unsigned short)USHRT_MAX));
39+
bfdev_log_info("add unsigned int: %s\n", TEST(add, (unsigned int)UINT_MAX));
40+
bfdev_log_info("add unsigned long: %s\n", TEST(add, (unsigned long)ULONG_MAX));
41+
bfdev_log_info("add unsigned long long: %s\n", TEST(add, (unsigned long long)ULLONG_MAX));
42+
43+
bfdev_log_info("sub char: %s\n", TEST(sub, (char)SCHAR_MIN));
44+
bfdev_log_info("sub short: %s\n", TEST(sub, (short)SHRT_MIN));
45+
bfdev_log_info("sub int: %s\n", TEST(sub, (int)INT_MIN));
46+
bfdev_log_info("sub long: %s\n", TEST(sub, (long)LONG_MIN));
47+
bfdev_log_info("sub long long: %s\n", TEST(sub, (long long)LLONG_MIN));
48+
49+
bfdev_log_info("sub unsigned char: %s\n", TEST(sub, (unsigned char)0));
50+
bfdev_log_info("sub unsigned short: %s\n", TEST(sub, (unsigned short)0));
51+
bfdev_log_info("sub unsigned int: %s\n", TEST(sub, (unsigned int)0));
52+
bfdev_log_info("sub unsigned long: %s\n", TEST(sub, (unsigned long)0));
53+
bfdev_log_info("sub unsigned long long: %s\n", TEST(sub, (unsigned long long)0));
54+
55+
if (failed)
56+
return -BFDEV_EFAULT;
57+
58+
return -BFDEV_ENOERR;
59+
}

0 commit comments

Comments
 (0)