summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/console.h6
-rw-r--r--include/system/string.h17
-rw-r--r--include/test.h47
-rw-r--r--include/test.mk1
4 files changed, 71 insertions, 0 deletions
diff --git a/include/console.h b/include/console.h
index 00982744..036262ef 100644
--- a/include/console.h
+++ b/include/console.h
@@ -92,6 +92,7 @@ struct _EFI_CONSOLE_CONTROL_PROTOCOL {
extern VOID console_fini(VOID);
extern VOID setup_verbosity(VOID);
extern UINT32 verbose;
+#ifndef SHIM_UNIT_TEST
#define dprint_(fmt, ...) ({ \
UINTN __dprint_ret = 0; \
if (verbose) \
@@ -101,6 +102,11 @@ extern UINT32 verbose;
#define dprint(fmt, ...) \
dprint_(L"%a:%d:%a() " fmt, __FILE__, __LINE__ - 1, __func__, \
##__VA_ARGS__)
+#else
+#define dprint_(...)
+#define dprint(fmt, ...)
+#endif
+
extern EFI_STATUS EFIAPI vdprint_(const CHAR16 *fmt, const char *file, int line,
const char *func, va_list args);
#define vdprint(fmt, ...) \
diff --git a/include/system/string.h b/include/system/string.h
index 822e28fa..66e7d93e 100644
--- a/include/system/string.h
+++ b/include/system/string.h
@@ -1,6 +1,23 @@
// SPDX-License-Identifier: BSD-2-Clause-Patent
#ifdef SHIM_UNIT_TEST
#include_next <string.h>
+
+__typeof__(strlen) shim_strlen;
+__typeof__(strcmp) shim_strcmp;
+__typeof__(strncmp) shim_strncmp;
+__typeof__(strncasecmp) shim_strncasecmp;
+__typeof__(strcasecmp) shim_strcasecmp;
+__typeof__(strrchr) shim_strrchr;
+__typeof__(strrchr) shim_strrchr;
+__typeof__(strnlen) shim_strnlen;
+__typeof__(strcpy) shim_strcpy;
+__typeof__(strncpy) shim_strncpy;
+__typeof__(strdup) shim_strdup;
+__typeof__(strndup) shim_strndup;
+__typeof__(stpcpy) shim_stpcpy;
+__typeof__(strchrnul) shim_strchrnul;
+__typeof__(strchr) shim_strchr;
+
#else
#ifndef _STRING_H
#define _STRING_H
diff --git a/include/test.h b/include/test.h
index 8a970fd2..4441f969 100644
--- a/include/test.h
+++ b/include/test.h
@@ -63,6 +63,53 @@ extern int debug;
assert(cond); \
})
+#define assert_true_return(a, status, fmt, ...) \
+ ({ \
+ if (!(a)) { \
+ printf("%s:%d:got %lld, expected nonzero " fmt, \
+ __func__, __LINE__, (long long)(a), \
+ ##__VA_ARGS__); \
+ printf("%s:%d:Assertion `%s' failed.\n", __func__, \
+ __LINE__, __stringify(!(a))); \
+ return status; \
+ } \
+ })
+#define assert_nonzero_return(a, ...) assert_true_return(a, ##__VA_ARGS__)
+
+#define assert_false_return(a, status, fmt, ...) \
+ ({ \
+ if (a) { \
+ printf("%s:%d:got %lld, expected zero " fmt, __func__, \
+ __LINE__, (long long)(a), ##__VA_ARGS__); \
+ printf("%s:%d:Assertion `%s' failed.\n", __func__, \
+ __LINE__, __stringify(a)); \
+ return status; \
+ } \
+ })
+#define assert_zero_return(a, ...) assert_false_return(a, ##__VA_ARGS__)
+
+#define assert_positive_return(a, status, fmt, ...) \
+ ({ \
+ if ((a) <= 0) { \
+ printf("%s:%d:got %lld, expected > 0 " fmt, __func__, \
+ __LINE__, (long long)(a), ##__VA_ARGS__); \
+ printf("%s:%d:Assertion `%s' failed.\n", __func__, \
+ __LINE__, __stringify((a) <= 0)); \
+ return status; \
+ } \
+ })
+
+#define assert_negative_return(a, status, fmt, ...) \
+ ({ \
+ if ((a) >= 0) { \
+ printf("%s:%d:got %lld, expected < 0 " fmt, __func__, \
+ __LINE__, (long long)(a), ##__VA_ARGS__); \
+ printf("%s:%d:Assertion `%s' failed.\n", __func__, \
+ __LINE__, __stringify((a) >= 0)); \
+ return status; \
+ } \
+ })
+
#define assert_equal_return(a, b, status, fmt, ...) \
({ \
if (!((a) == (b))) { \
diff --git a/include/test.mk b/include/test.mk
index 735d0dc5..542be176 100644
--- a/include/test.mk
+++ b/include/test.mk
@@ -35,6 +35,7 @@ test-random.h:
xxd -i random.bin test-random.h
test-sbat_FILES = csv.c
+test-str_FILES = lib/string.c
tests := $(patsubst %.c,%,$(wildcard test-*.c))