summaryrefslogtreecommitdiffstats
path: root/tests/tests.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tests.h')
-rw-r--r--tests/tests.h67
1 files changed, 34 insertions, 33 deletions
diff --git a/tests/tests.h b/tests/tests.h
index 9078938..d395c7c 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -8,66 +8,67 @@
#ifndef BFS_TESTS_H
#define BFS_TESTS_H
-#include "prelude.h"
+#include "bfstd.h"
#include "diag.h"
-/** Unit test function type. */
-typedef bool test_fn(void);
-
/** Memory allocation tests. */
-bool check_alloc(void);
+void check_alloc(void);
/** Standard library wrapper tests. */
-bool check_bfstd(void);
+void check_bfstd(void);
/** Bit manipulation tests. */
-bool check_bit(void);
+void check_bit(void);
/** I/O queue tests. */
-bool check_ioq(void);
+void check_ioq(void);
+
+/** Linked list tests. */
+void check_list(void);
+
+/** Signal hook tests. */
+void check_sighook(void);
/** Trie tests. */
-bool check_trie(void);
+void check_trie(void);
/** Process spawning tests. */
-bool check_xspawn(void);
+void check_xspawn(void);
/** Time tests. */
-bool check_xtime(void);
+void check_xtime(void);
-/** Don't ignore the bfs_check() return value. */
-attr(nodiscard)
-static inline bool bfs_check(bool ret) {
- return ret;
-}
+/** Record a single check and return the result. */
+bool bfs_check_impl(bool result);
/**
* Check a condition, logging a message on failure but continuing.
*/
#define bfs_check(...) \
- bfs_check(bfs_check_(#__VA_ARGS__, __VA_ARGS__, "", ""))
+ bfs_check_(#__VA_ARGS__, __VA_ARGS__, "", )
#define bfs_check_(str, cond, format, ...) \
- ((cond) ? true : (bfs_diag( \
- sizeof(format) > 1 \
- ? "%.0s" format "%s%s" \
- : "Check failed: `%s`%s", \
- str, __VA_ARGS__), false))
+ bfs_check_impl((cond) || (bfs_check__(format, BFS_DIAG_MSG_(format, str), __VA_ARGS__), false))
-/** Get a string description of the last error. */
-const char *bfs_errstr(void);
+#define bfs_check__(format, ...) \
+ bfs_diagf(sizeof(format) > 1 \
+ ? BFS_DIAG_FORMAT_("%s" format "%s") \
+ : BFS_DIAG_FORMAT_("Check failed: `%s`"), \
+ BFS_DIAG_ARGS_(__VA_ARGS__))
/**
* Check a condition, logging the current error string on failure.
*/
-#define bfs_pcheck(...) \
- bfs_pcheck_(#__VA_ARGS__, __VA_ARGS__, "", "")
-
-#define bfs_pcheck_(str, cond, format, ...) \
- ((cond) ? true : (bfs_diag( \
- sizeof(format) > 1 \
- ? "%.0s" format "%s%s: %s" \
- : "Check failed: `%s`%s: %s", \
- str, __VA_ARGS__, bfs_errstr()), false))
+#define bfs_echeck(...) \
+ bfs_echeck_(#__VA_ARGS__, __VA_ARGS__, "", )
+
+#define bfs_echeck_(str, cond, format, ...) \
+ bfs_check_impl((cond) || (bfs_echeck__(format, BFS_DIAG_MSG_(format, str), __VA_ARGS__), false))
+
+#define bfs_echeck__(format, ...) \
+ bfs_diagf(sizeof(format) > 1 \
+ ? BFS_DIAG_FORMAT_("%s" format "%s: %s") \
+ : BFS_DIAG_FORMAT_("Check failed: `%s`: %s"), \
+ BFS_DIAG_ARGS_(__VA_ARGS__ errstr(), ))
#endif // BFS_TESTS_H